DOS API

DOS APIは86-DOSで開発されたAPIMS-DOS / PC DOSをはじめとするDOS互換オペレーティングシステムで使用されています。DOS APIの呼び出しは、ほとんどの場合、ソフトウェア割り込み21h(INT 21h)を用いて行われます。AHプロセッサレジスタにサブファンクション番号を、その他のレジスタにパラメータを指定してINT 21hを呼び出すことで、様々なDOSサービスを呼び出すことができます。これらのサービスには、キーボード入力、ビデオ出力、ディスクファイルへのアクセス、プログラム実行、メモリ割り当てなど、様々なアクティビティの処理が含まれます。1980年代後半には、DOSエクステンダDOSプロテクトモードインタフェース(DPMI)の登場により、プログラムを16ビットまたは32ビットのプロテクトモードで実行しながら、DOS APIにアクセスできるようになりました。

DOS APIの歴史

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では、INT 25h/26h関数が拡張され、32MBを超えるハードディスクをサポートしました。MS-DOS 5では、上位メモリブロック(UMB)の使用がサポートされました。MS-DOS 5の後、DOS APIはDOSの連続スタンドアロンリリースで変更されていません。

DOS APIとWindows

Windows 9xでは、DOS がプロテクト モード システムとグラフィカル シェルをロードしました。DOS は通常、仮想 DOS マシン(VDM) からアクセスされましたが、Windows をロードせずにリアル モードのMS-DOS 7.0を直接ブートすることもできました。DOS API は拡張され、国際化サポートと長いファイル名のサポートが強化されましたが、長いファイル名のサポートは VDM でのみ利用可能でした。Windows 95 OSR2 では、DOS が 7.1 に更新されてFAT32 のサポートが追加され、これをサポートするための関数が DOS API に追加されました。Windows 98Windows Meも MS-DOS 7.1 API を実装していますが、Windows Me は自身を MS-DOS 8.0 として報告します。

Windows NTとそのベースのシステム(Windows XPWindows Vistaなど)はMS-DOSをベースにしていませんが、仮想マシンであるNTVDMを使用してDOS APIを処理します。NTVDMは、DOSプログラムを仮想8086モード( 80386以降のプロセッサで利用可能な保護モード内でのリアルモードのエミュレーション)で実行することで動作します。NTVDMはDOS 5.0 APIをサポートしています。LinuxDOSEMUも同様のアプローチを採用しています。

DOSで使用される割り込みベクター

以下は、プログラムが 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で最大2GBのパーティションをサポートするように拡張されました。
26h絶対ディスク書き込み1.0以上DOSカーネルに実装され、DOS 3.31で最大2GBのパーティションをサポートするように拡張されました。
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 21時間サービス

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

AH説明バージョン
00hプログラム終了1.0以上
01h文字入力1.0以上
02h文字出力1.0以上
03h補助入力1.0以上
04h補助出力1.0以上
05hプリンター出力1.0以上
06h直接コンソールI/O1.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ファイルを開く1.0以上
10hファイルを閉じる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以上
1Ahディスク転送アドレスを設定する1.0以上
1Bhデフォルトドライブの割り当て情報を取得する1.0以上
1Ch指定されたドライブの割り当て情報を取得する1.0以上
1Dh予約済み1.0以上
1Eh予約済み1.0以上
1Fhデフォルトドライブのディスクパラメータブロックを取得する1.0以上
20h予約済み1.0以上
21hランダム読み取り1.0以上
22hランダム書き込み1.0以上
23hレコード単位でファイルサイズを取得する1.0以上
24hランダムなレコード番号を設定する1.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以上
2Fhディスク転送アドレスを取得する2.0以上
30hDOSバージョンを入手2.0以上
31h終了して居住を続ける2.0以上
32h指定されたドライブのディスクパラメータブロックを取得します。2.0以上
33hCtrl-Break を取得または設定する2.0以上
34hInDOSフラグポインタを取得する2.0以上
35h割り込みベクトルを取得する2.0以上
36h空きディスク容量を取得する2.0以上
37hスイッチ文字を取得または設定する2.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以上
52hDOS 内部ポインタ (SYSVARS) を取得する2.0以上
53hディスクパラメータブロックを作成する2.0以上
54h検証フラグを取得2.0以上
55hPSPプログラムを作成する2.0以上
56hファイル名を変更する2.0以上
57hファイルの日付と時刻を取得または設定する2.0以上
58h割り当て戦略を取得または設定する2.11以降
59h拡張エラー情報を取得する3.0以上
5Ah固有のファイルを作成する3.0以上
5Bh新しいファイルを作成3.0以上
5Chファイルをロックまたはロック解除する3.0以上
5Dhファイル共有機能3.0以上
5Ehネットワーク機能3.0以上
5Fhネットワークリダイレクト機能3.0以上
60hファイル名を修飾する3.0以上
61h予約済み3.0以上
62h現在のPSPを入手する3.0以上
63hDBCSリードバイトテーブルポインタを取得する3.0以上
64h外部イベントフラグの待機を設定する3.2以上
65h拡張国情報を取得する3.3以上
66hコードページを取得または設定する3.3以上
67hハンドル数を設定する3.3以上
68hコミットファイル3.3以上
69hメディアIDを取得または設定する4.0以上
6Ahコミットファイル4.0以上
6Bh予約済み4.0以上
6Ch拡張ファイルオープン/作成4.0以上

ネイティブサポートを備えたオペレーティングシステム

DOSエミュレーション層を備えたオペレーティングシステム

その他のエミュレータ

参照

参考文献

  1. ^ Ray Duncan (1988). 『MS-DOSプログラミング入門:アセンブリ言語とC言語プログラマのためのMicrosoftガイド』 Microsoft Press. ISBN 0914845772

さらに読む

  • ポール・アレンビル・ゲイツ、エイドリアン・キング、クリス・ラーソン、ゴードン・レットウィンボブ・オレアティム・パターソン、クリス・ピーターズ、ブルース・フィリップス、アーロン・レイノルズ、ベティ・スティルメーカー、マーク・ズビコウスキー(1986)。「テクニカルアドバイザー」。MS -DOS (バージョン 1.0-3.2) テクニカルリファレンス百科事典。ハワード・ボーンスタイン、ローレンス・ブレデホフト、レイ・ダンカン、キャロル・モリス、デビッド・ローズ、ジョン・ソーチャ、ジム・トムリン、キャスリーン・ヴィアン、ヴァン・ウォルバートン、ジム・ベリー、バリー・プレッパーナウ、パム・ビーソン、アンドレア・ルイス、デビッド・リグミール (編)。Microsoft リファレンスライブラリ 第 1 巻 (初版は撤回)。米国ワシントンレドモンド:マイクロソフトプレス。ISBN 0-914845-69-1LCCN  86-8640. OCLC 635600205  .(xvii+1053ページ; 29cm) (注: この初版にはシステムの内部動作のフローチャートが含まれています。1986年に大量配布される前にマイクロソフトによって撤回されました。これは、多くの事実誤認と、公表されるべきではない機密情報が含まれていたためです。印刷されたコピーはほとんど残っていません。1988年に完全に改訂された版に置き換えられました。[1])
  • Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben ; Borman, Rob ; Butler, John ; Carroll, Chuck ; Chamberlain, Mark ; Chell, David ; Colee, Mike ; Courtney, Mike ; Dryfoos, Mike ; Duncan, Rachel ; Eckhardt, Kurt ; Evans, Eric ; Farmer, Rick ; Gates, Bill ; Geary, Michael ; Griffin, Bob ; Hogarth, Doug ; Johnson, James W. ; Kermaani, Kaamel ; King, Adrian ; Koch, Reed ; Landowski, James ; Larson, Chris ; Lennon, Thomas ; Lipkie, Dan ; McDonald, Marc ; McKinney, Bruce ; Martin, Pascal ; Mathers, Estelle ; Matthews, Bob ; Melin, David ; Mergentime, Charles ; Nevin, Randy ; Newell, Dan ; Newell, Tani ; Norris, David ; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). 「技術アドバイザー」. MS-DOS 百科事典: バージョン 1.0 から 3.2 . 著者: Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom;カイル, ジム;レトウィン, ゴードン;ペッツォルト, チャールズ; ラビノウィッツ, チップ; トムリン, ジム; ウィルトン, リチャード; ウォルバートン, ヴァン; ウォン, ウィリアム; ウッドコック, ジョアン(完全改訂版). ワシントン州レドモンド, 米国:マイクロソフト・プレス. ISBN 1-55615-049-0LCCN  87-21452. OCLC 16581341  .(xix+1570ページ; 26cm) (注: この版は、撤回された1986年の初版を別の著者チームによって大幅に改訂した後、1988年に出版されました。[2])
  • ノートン、ピーター、ウィルトン、リチャード (1987). 『新ピーター・ノートン・プログラマーズ・ガイド IBM PC & PS/2』 . マイクロソフト・プレス. ISBN 1-55615-131-4
  • レイ・ダンカン(1988年)『MS-DOSプログラミング上級編:アセンブリ言語およびC言語プログラマのためのMicrosoftガイド』 Microsoft Press. ISBN 0914845772
  • ホーガン、トム(1991年)『プログラマーズPCソースブック』マイクロソフトプレス、ISBN 155615321X
  • 『MS-DOSプログラマーズ・リファレンス - MS-DOS公式テクニカル・リファレンス』。Microsoft Press、1993年。ISBN 1556155468
  • IBM PC DOS 7 テクニカルアップデート
  • OpenDOS開発者リファレンスシリーズ - OpenDOSプログラマーズガイド - システムおよびプログラマーズガイド。Caldera , Inc. 1997年8月。Caldera部品番号:200-DOPG-003。2017年10月7日時点のオリジナルよりアーカイブ。 2012年6月28日閲覧(英国で印刷されました。)
Retrieved from "https://en.wikipedia.org/w/index.php?title=DOS_API&oldid=1320546092"