Open棟梁Project - マイクロソフト系技術情報 Wiki
リングには0-3のモードがあるが、UNIX、Windowsでも
0:カーネル、3:ユーザの2つのリングしか使用していない。
ユーザモードは通常のプログラムが動作するリング(モード)。
カーネルモードはOSやドライバ等のプログラムが動作するリング(モード)。
カーネルモードで動作することが許されているのは、
に限定されている。
また、Windowsカーネルはカーネル・オブジェクトとしてサービスを提供する。
このため、カーネル・オブジェクトを使用してWindowsカーネルの提供するサービスを使用したり、ドライバ経由で処理を行うファイルIOを行う場合は、
ユーザプログラムのプロセスでも、カーネルモードのCPU時間が増加することをタスクマネージャやパフォーマンスカウンタ等から確認出来る。
ntoskrnl.exeを実行するのはSystemプロセス
(Windows 2000ではPID8、XPとServer 2003ではPID 4)
であり、このプロセスはユーザーモードの実行ファイルを動作させていない。
・ntoskrnl.exe ・ntkrnlmp.exe ・ntkrnlpa.exe ・ntkrpamp.exe
・.sys(ドライバ) .sys(ドライバ)は C:\WINDOWS\system32\drivers に存在し、Systemプロセスから呼び出される。
.sys(ドライバ)のエントリポイントはDriverEntry?になる。
.sys(ドライバ)ではDDKで公開されている PsCreateSystemThread?関数(カーネルモードでのみ呼び出し可能) でシステムスレッドを作成して、各種のI/O要求を待つ。
Windows ハードウェア デベロッパー センター (WHDC) http://msdn.microsoft.com/ja-jp/windows/hardware/gg236587 ・カーネルモードAPI ・ネイティブAPI(仕様が公開されていない)
Windows Driver Model(WDM) http://msdn.microsoft.com/en-us/library/windows/hardware/gg463453.aspx Microsoft Windows 98 と Windows 2000 で導入されたデバイスドライバのフレームワーク
WDMドライバは以下のように分類される。 ●ファンクションドライバ(デバイス) ・バスドライバ(BiOS、コントローラのI/O部など) ・フィルタドライバ(デバイス動作の修正や、ウィルスチェッカ)
技術レポート「Windows XP用デバイスドライバの開発について」 http://www.softech.co.jp/mm_100407_pc.htm
.sys(ドライバ)は、通常、ベンダのリリースする デバイス付属のSDK(ユーザモード、DLL)経由で使用する。 ※ DLLから、システムサービス、IOマネージャ経由で.sys(ドライバ)とIRP通信をする。
ドライバは、デバイスを直接操作せず、HAL関数経由で操作する。 デバイスは基本的にはC言語で記述されており(一部はC++)、 HAL関数経由で操作すれば、x86ベースのコンピュータで バイナリ互換、ソース互換、また、従来互換を実現する。
日本語技術資料のダウンロード(IA-32 アーキテクチャー) http://www.intel.com/jp/download/index.htm#ia32
Windows Device Driver Programming Part 1、2 http://ruffnex.oc.to/kenji/windriver/ http://ruffnex.oc.to/kenji/windriver/driver2.html