3

Windows API は、OS カーネルに期待できる以上の機能を備えていることを理解しています。私の質問は、Windows API とカーネルの間の接続は何ですか? Windows API には、すべてのカーネル関数がサブセットとして含まれていますか?

4

2 に答える 2

4

接続がありません。winapi は、ネイティブ オペレーティング システム上のレイヤーです。これは、Windows バージョン 3 の API に似せて設計されており、プログラムの移植を容易にすることを目的としています。これは、OS/2 と Posix の 3 つの API レイヤーのうちの 1 つで、他の 2 つはありませんでした。しかし、誰もそれらを使用しなかったために削除され、winapi は地滑りによって勝ちました。元の名前は「win32」で 16 ビット版と区別されていましたが、64 ビット版の Windows が登場すると混乱を招き、現在では「winapi」と呼ばれています。

ネイティブ オペレーティング システムは非常に異なっており、VMS によく似ています。これは偶然ではなく、同じデザイナーでした。デビッド・カトラー、彼は DEC が内破する前に DEC で働いていました。DEC が不平を言ったとき、Money の所有者が変わりました。

ネイティブ API は文書化されていません。古いプログラムの実行を許可しながら、Microsoft が OS を革新できるように意図的に。それ以外の点では、十分に守られた秘密ではなく、かなりのリバース エンジニアリングが行われています。また、名前が「Nt」や「Rtl」で始まる関数など、一部は文書化されています。NtCreateFile や RtlFillMemory と同様です。Rtl 関数は、winapi をネイティブ API に結び付ける接着剤の一部です。また、デバイス ドライバーを作成するときに、ネイティブ API をより多く利用できるようになります。

于 2013-07-30T17:03:45.800 に答える
4

Windows API (別名 "Win32") には、カーネル アクセスを含む多くの機能が含まれています。

http://technet.microsoft.com/en-us/library/cc768129.aspx

Windows NT アーキテクチャ

Win32 の下のレイヤーは、「ntdll.dll」によって仲介される「ネイティブ API」です。

Win32 関数が実際にカーネルを呼び出すときは、「トラップ」を使用します。Intel x86 PC) では、割り込み 0x2e を使用します。これがどのように機能するかについてのいくつかの良いリンクがあります:

于 2013-07-30T16:21:36.220 に答える