マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

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

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

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

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

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

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

  • OSのカーネルモジュール(ntoskrnl.exe、bootvid.dll、hal.dll、kdcom.dll)
  • 各ベンダーが作成しているデバイスドライバ(*.sys)

に限定されている。

Kernel Objects

また、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要求を待つ。

WDM

分類

WDMドライバは以下のように分類される。

  • ★ ファンクションドライバ(デバイスドライバ)
  • バスドライバ(BiOS、コントローラのI/O部など)
  • フィルタドライバ(デバイス動作の修正や、ウィルスチェッカ)

開発

  • ドライバ(*.sys)は、デバイスを直接操作せず、HAL関数経由で操作する。
  • デバイスは基本的にはC言語で記述されており(一部はC++)、HAL関数経由で操作すれば、
    x86ベースのコンピュータでバイナリ互換、ソース互換、また、従来互換を実現する。

利用

ドライバ(*.sys)は、通常、ベンダのリリースする
デバイス付属のSDK(ユーザモード、DLL)経由で使用する。
※ DLLから、システムサービス、IOマネージャ経由で.sys(ドライバ)とIRP通信をする。


Tags: :Windows, :障害対応, :デバッグ


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-07 (金) 12:52:21 (102d)