Quire

DOS API

From Quire, the open reference··1 min read

DOS APIは86-DOSを起源とするAPIで、MS-DOS/PC DOSや他のDOS互換のオペレーティングシステムで使われている。DOS APIのほとんどの呼び出しは、INT 21hを使用して呼び出される。AH プロセッサレジスタのサブファンクション番号と他のレジスタの他のパラメータを指定してINT 21hを呼び出すことによって、さまざまなDOSサービスを呼び出せる。これには、キーボード入力、ビデオ出力、ディスクファイルアクセス、プログラム実行、メモリ割り当て、その他さまざまなアクティビティの処理が含まれる。1980年代後半には、DOSエクステンダとDPMIを併用することで、プログラムを16ビットまたは32ビットの保護モードで実行してもDOS APIにアクセスできるようになった。

DOS APIの歴史#edit

86-DOSおよびMS-DOS 1.0の元のDOS APIは、CP/Mと機能的に互換性があるように設計されている。ファイルアクセスにはファイルコントロールブロック (FCB)が利用された。DOS APIは、ファイルハンドルを使用したファイルアクセス、階層ディレクトリ、およびデバイスのI/O制御など、いくつかのUNIXの概念によってMS-DOS 2.0で大幅に拡張された[1]。DOS 3.1では、ネットワークリダイレクタのサポートが追加された。MS-DOS 3.31では、32 MBを超えるハードディスクをサポートするようにINT 25h/26h機能が強化された。MS-DOS 5は、上位メモリブロック(UMB)を使用するためのサポートを追加した。MS-DOS 5以降は、DOSの連続したスタンドアロンリリースのDOS APIは変更されていない。

DOS APIとWindows#edit

Windows 9xでは、プロテクトモードのシステムとGUIシェルをロードするブートローダとしてDOSが使用されていた。DOSは通常VDMからアクセスされていたが、WindowsをロードせずにリアルモードMS-DOS 7.0としてブートすることも可能であった。ロングファイルネーム(LFN)はVDMでのみ利用可能であったが、DOS APIは拡張国際化サポートとLFNサポートで拡張された。Windows 95 OSR2では、DOSは7.1に更新されてFAT32サポートが追加され、DOS APIに機能追加された。Windows 98およびWindows MEもMS-DOS 7.1 APIを実装しているが、Windows MEはMS-DOS 8.0として報告する。

Windows XPやWindows VistaなどのWindows NT系のシステムはMS-DOSを利用していない。そのため、NTVDMを利用してDOS APIを処理している。NTVDMは、仮想8086モードでDOSプログラムを実行する。NTVDMはDOS 5.0 APIをサポートする。Linux用のDOSEMUも同様の方法を利用している。

DOSで使用される割込みベクタ#edit

以下は、DOS API関数を呼び出すための割り込みベクタのリストである。

割り込みベクタ説明バージョン備考
20hプログラムを終了1.0+DOSカーネルに実装
21hメインDOS API1.0+DOSカーネルに実装
22hプログラム終了アドレス1.0+呼び出し元プログラムの戻りアドレス
23hControl-Cハンドラアドレス1.0+デフォルトのハンドラはコマンドシェル(通常はCOMMAND.COM)にある
24h重大なエラーハンドラアドレス1.0+デフォルトのハンドラはコマンドシェル(通常はCOMMAND.COM)にある
25h絶対ディスク読み取り1.0+DOSカーネルで実装され、DOS 3.31で拡張され、最大2 GBのパーティションをサポート
26h絶対ディスク書き込み1.0+DOSカーネルで実装され、DOS 3.31で拡張され、最大2 GBのパーティションをサポート
27h終了して常駐する1.0+DOS 1.0ではCOMMAND.COM、DOS 2.0+ではDOSカーネルで実装されている
28hアイドルコールアウト2.0以上入力待ちのときにDOSカーネルによって呼び出される
29h高速コンソール出力2.0以上組み込みのコンソールデバイスドライバまたはANSI.SYSのような代替ドライバによって実装される
2Ahネットワーキングと重要なセクション3.0以上ネットワークソフトウェアとインターフェイスするためにDOSカーネルによって呼び出される
2Bh未使用
2Ch未使用
2Dh未使用
2Eh一時的なリロード2.0以上COMMAND.COMで実装されている
2Fh多重化3.0以上サブファンクション番号に応じて、DOSカーネルおよびさまざまなプログラム(PRINT、MSCDEX、DOSKEY、APPENDなど)で実装されている

DOS INT 21hサービス#edit

以下は、DOS APIのプライマリソフトウェア割り込みベクタを介して提供される機能のリストである。

AH説明バージョン
00hプログラム終了1.0+
01h文字入力1.0+
02h文字出力1.0+
03h補助入力1.0+
04h補助出力1.0+
05hプリンタ出力1.0+
06h直接コンソール入出力1.0+
07hエコーなし直接コンソール入力1.0+
08hエコー付きコンソール入力1.0+
09h文字列表示1.0+
0Ahバッファドキーボード入力1.0+
0Bh入力状態取得1.0+
0Ch入力と入力バッファの破棄1.0+
0Dhディスクリセット1.0+
0Ehデフォルトドライブ設定1.0+
0Fhファイルオープン(FCB)1.0+
10hファイルクローズ(FCB)1.0+
11h一番目のファイル検索1.0+
12h次のファイル検索1.0+
13hファイル削除1.0+
14hシーケンシャル読み込み1.0+
15hシーケンシャル書き込み1.0+
16hファイル作成/上書き1.0+
17hファイル名変更1.0+
18h予約済み1.0+
19hデフォルトドライブ取得1.0+
1AhSet disk transfer address1.0+
1BhGet allocation info for default drive1.0+
1ChGet allocation info for specified drive1.0+
1Dh予約済み1.0+
1Eh予約済み1.0+
1FhGet disk parameter block for default drive1.0+
20h予約済み1.0+
21hランダム読み込み1.0+
22hランダム書き込み1.0+
23hレコード中のファイル長取得1.0+
24hSet random record number1.0+
25h割り込みベクタ設定1.0+
26hPSP作成1.0+
27hランダムブロック読み込み1.0+
28hランダムブロック書き込み1.0+
29hファイル名解析1.0+
2Ah日付取得1.0+
2Bh日付設定1.0+
2Ch時刻取得1.0+
2Dh時刻設定1.0+
2Ehベリファイフラグ設定1.0+
2FhGet disk transfer address2.0+
30hDOSバージョン取得2.0+
31h常駐して終了2.0+
32hGet disk parameter block for specified drive2.0+
33hCtrl+Break取得/設定2.0+
34hGet InDOS flag pointer2.0+
35h割り込みベクタ取得2.0+
36hディスク空き容量取得2.0+
37hGet or set switch character2.0+
38h国情報取得/設定2.0+
39hサブディレクトリ作成2.0+
3Ahサブディレクトリ削除2.0+
3Bhカレントディレクトリ変更2.0+
3Chファイル作成/上書き2.0+
3Dhファイルオープン2.0+
3Ehファイルクローズ2.0+
3Fhデバイス/ファイル読み込み2.0+
40hデバイス/ファイル書き込み2.0+
41hファイル削除2.0+
42hファイルポインタ移動2.0+
43hファイル属性取得/設定2.0+
44hデバイス向けI/Oコントロール2.0+
45hハンドル複写2.0+
46hハンドルをリダイレクト2.0+
47hカレントディレクトリ取得2.0+
48hメモリ確保2.0+
49hメモリ解放2.0+
4Ahメモリ再確保2.0+
4Bhプログラム実行2.0+
4Ch戻り値を返して終了2.0+
4Dh戻り値取得2.0+
4Eh一番目のファイル検索2.0+
4Fh次のファイル検索2.0+
50h現在のPSP設定2.0+
51h現在のPSP取得2.0+
52hGet DOS internal pointers (SYSVARS)2.0+
53hディスクパラメータブロック作成2.0+
54hベリファイフラグ取得2.0+
55hCreate program PSP2.0+
56hファイル名変更2.0+
57hファイル時刻取得/設定2.0+
58hGet or set allocation strategy2.11+
59h拡張エラー情報取得3.0+
5Ahユニークファイル作成3.0+
5Bh新規ファイル作成3.0+
5Chファイルロック/アンロック3.0+
5Dhファイル共有機能3.0+
5Ehネットワーク機能3.0+
5Fhネットワークリダイレクト機能3.0+
60hQualify filename3.0+
61h予約済み3.0+
62h現在のPSP取得3.0+
63hGet DBCS lead byte table pointer3.0+
64hSet wait for external event flag3.2+
65h拡張国情報取得3.3+
66hコードページ設定/取得3.3+
67hSet handle count3.3+
68hCommit file3.3+
69hメディアID取得/設定4.0+
6AhCommit file4.0+
6Bh予約済み4.0+
6Ch拡張 ファイルオープン/作成4.0+

ネイティブサポートのあるオペレーティングシステム#edit

その他のエミュレータ#edit

脚注#edit

  1. ^ Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772

関連項目#edit

出典#edit

  • Bornstein, Howard; Bredehoeft, Lawrence; Duncan, Ray; Morris, Carol; Rose, David; Socha, John; Tomlin, Jim; Vian, Kathleen et al. (1986). “Technical advisors”. In Beley. MS-DOS (Versions 1.0-3.2) Technical Reference Encyclopedia. Microsoft Reference Library. 1 (Original withdrawn ed.). Redmond, Washington, USA: Microsoft Press. ISBN 0-914845-69-1. LCCN 86-8640. OCLC 635600205 (xvii + 1053ページ; 29   cm)(NB。このオリジナル版には、システムの内部動作のフローチャートが含まれている。しかし、1986年に大量配布される前にマイクロソフトによって撤回された。なぜなら、公表されるべきではない機密情報だけでなく、多くの事実上の誤りが含まれていたためである。生き残った印刷物はほとんどなかった。それはその後に、1988年に完全に作り直された版に置き換えられた。[1] )
  • Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon; Petzold, Charles et al. (1988). “Technical advisors”. The MS-DOS Encyclopedia: versions 1.0 through 3.2 (Completely reworked ed.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87-21452. OCLC 16581341 (xix + 1570ページ; 26   cm)(NB。この版は、1986年に撤回された1986年の初版を別の作家のチームによって大幅に改良した後に1988年に出版された。[2] )
  • ピーターノートンとリチャードウィルトン著IBM PC&PS/2の新しいピーターノートンプログラマーズガイド、マイクロソフトプレス、1987年ISBN 1-55615-131-4 。
  • Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772
  • 1991年マイクロソフトプレス、Thom Hogan 著「Programmer's PC Sourcebook」 ISBN 155615321X
  • Microsoft MS-DOSプログラマーズリファレンス - MS-DOSの公式テクニカルリファレンス、Microsoft Press、1993 ISBN 1556155468
  • IBM PC DOS 7テクニカルアップデート
  • OpenDOS Developer's Reference Series — OpenDOS Programmer's Guide — System and Programmer's Guide. Caldera, Inc.. (August 1997). Caldera Part No. 200-DOPG-003. オリジナルの2017-10-07時点におけるアーカイブ。 2012年6月28日閲覧。 (イギリスで印刷された。)

外部リンク#edit

This article is mirrored from “DOS API” on 日本語 Wikipedia, revision 109619128, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.

Synced with Wikipedia revision 109619128 · just now