KMDF ドライバー用の WMI の概要
[KMDF のみに適用]
カーネル モード ドライバー フレームワークは、Windows Management Instrumentation (WMI) に情報を提供するドライバーをサポートしています。 このようなドライバーはWMI clients (WMI から情報を受信するために登録されているアプリケーション) にデータを提供するため、 WMI data providersと呼ばれます。
WMI データ プロバイダーは、次の 1 つ以上を表すことができるWMI データ ブロックをサポートします。
ドライバーが WMI クライアントとの間で送受信するデバイス固有のデータを含むデータ項目。
WMI クライアントの代わりにドライバーが実行するメソッド (関数)。
ドライバーがデバイス固有のイベントの通知を受信するために登録されている WMI クライアントに送信するイベント。
WMI データ ブロックは、WMI classes in .mof ファイルとして指定されます。 各 WMI データ ブロックは GUID によって識別されます。
すべてのドライバーは、WMI がデバイス クラス用に定義する標準的な WMI データ ブロックをサポートする必要があります。 これらの WMI データ ブロックは Wmicore.mofで定義されています。
ドライバーは、.mof ファイルで定義した WMI データ ブロックをサポートすることもできます。 カスタマイズされた WMI データ ブロックを定義して発行する方法については、次のセクションを参照してください:
フレームワーク WMI オブジェクトとコールバック関数
フレームワークは、ドライバーが WMI データ プロバイダーを実装するために使用できる 2 つのオブジェクトを定義します。 WMI プロバイダー オブジェクトは、ドライバーが提供する WMI データ ブロックのスキーマを表します。 WMI インスタンス オブジェクトは、特定のプロバイダーに関連付けられたデータ ブロックのインスタンスを表します。 ドライバーは、これら 2 つのオブジェクトが定義する次のイベント コールバック関数を実装することによって WMI クライアントと通信します:
EvtWmiProviderFunctionControl
WMI データの収集と WMI イベントの送信に対するドライバーのサポートを有効または無効にします。
EvtWmiInstanceQueryInstance
WMI プロバイダーのインスタンス データを WMI クライアントに配信します。
EvtWmiInstanceSetInstance および EvtWmiInstanceSetItem
ドライバーのデータ ブロック内の情報をクライアントが指定した値に設定します。
EvtWmiInstanceExecuteMethod
クライアントのリクエストに応じて、ドライバー指定のメソッドを実行します。
WMI を実装するサンプル ドライバー
FIREFLY、PCIDRV、およびToaster サンプル ドライバー は、WMI データ プロバイダーです。