Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

リングには0-3のモードがあるが、UNIX、Windowsでも
0:カーネル、3:ユーザの2つのリングしか使用していない。

ユーザモード:リング(3)

ユーザモードは通常のプログラムが動作するリング(モード)。

カーネルモード:リング(0)

カーネルモードはOSやドライバ等のプログラムが動作するリング(モード)。

カーネルモードで動作することが許されているのは、

に限定されている。

また、Windowsカーネルはカーネル・オブジェクトとしてサービスを提供する。

このため、カーネル・オブジェクトを使用してWindowsカーネルの提供するサービスを使用したり、ドライバ経由で処理を行うファイルIOを行う場合は、
ユーザプログラムのプロセスでも、カーネルモードのCPU時間が増加することをタスクマネージャやパフォーマンスカウンタ等から確認出来る。

ntoskrnl.exeを実行するのはSystemプロセス
(Windows 2000ではPID8、XPとServer 2003ではPID 4)
であり、このプロセスはユーザーモードの実行ファイルを動作させていない。

Names of kernel

・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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS