WMI 登録フラグ
ドライバーは、ブロックが静的または動的なインスタンス名を使用するかどうかを示し、ブロックを登録するために WMI に渡す WMIGUIDREGINFO または WMIREGGUID 構造体にフラグを設定して、その他の特性を指定します。
ドライバーは、次のいずれかのフラグを設定することで、ブロックが静的インスタンス名を使用することを示します。
WMIREG_FLAG_INSTANCE_LISTは、ドライバーが静的リスト内のすべてのインスタンス名を提供することを示します。
ドライバーは、 IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を処理して ( WmiSystemControlを呼び出すのではなく) ブロックを登録する場合にのみ、このフラグを設定できます。 ドライバーは、インスタンス名の文字列を InstanceNameList (ブロックの WMIREGGUID 構造体の中) によって示されるバイト オフセットに書き込みます。
WMIREG_FLAG_INSTANCE_BASENAME は、ドライバー定義の基本名文字列から静的インスタンス名を生成するように WMI に指示します。
IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を処理するドライバーは、ブロックの WMIREGGUID 構造体の BaseNameOffset で示されるオフセットにベース名文字列を書き込みます。
A driver that calls WmiSystemControl を呼び出すドライバーは、 InstanceName パラメーター ( DpWmiQueryReginfo ルーチン) に基本名の文字列を指定します。
WMIREG_FLAG_INSTANCE_PDOは、ドライバーの PDO のデバイス インスタンス ID から静的インスタンス名を生成するように WMI に指示します。
IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を処理するドライバーは、ブロックの WMIREGGUID 構造体の Pdo メンバーにある PDO にポインターを書き込みます。 要求が IRP_MN_REGINFO_EXの場合、 ObReferenceObject ルーチンを呼び出すことによって渡される各 PDO の参照数を増やす必要があります。 (システムは後で各 PDO を逆参照します。)
WmiSystemControl を呼び出すドライバーは、 Pdo パラメーター ( DpWmiQueryReginfo ルーチン) に PDO へのポインターを書き込みます。
ブロックが動的インスタンス名を使用することを示すために、ドライバーは、WMIREG_FLAG_INSTANCE_LIST、WMIREG_FLAG_INSTANCE_PDO、または WMIREG_FLAG_INSTANCE_BASENAME のいずれかのフラグを設定することはできません。
ドライバーは、WMIREG_FLAG_EXPENSIVE を設定して収集するのにコストがかかるデータ ブロックがあることを示します。 これにより、WMI クライアントがデータ ブロックを初めて開いたときに IRP_MN_ENABLE_COLLECTION 要求を送信し、最後の WMI クライアントがブロックを閉じたときに IRP_MN_DISABLE_COLLECTION 要求を送信するように WMI に指示します。 ドライバーは、 IRP_MN_ENABLE_COLLECTION 要求を受け取るまで、このようなブロックのデータを収集する必要はありません。
ドライバーは、WMIREG_FLAG_EVENT_ONLY_GUIDを設定してイベント ブロックを示します。 これは、ブロックをイベントとしてのみ有効または無効にすることができ、クエリまたは設定できないことを示します。
ドライバーは、WMIREG_FLAG_REMOVE_GUIDを設定して、以前に登録されたブロックを削除するように WMI に指示します。 このフラグは、登録情報の更新要求 (IRP_MN_REGINFO または IRP_MN_REGINFO_EX を WMIUPDATE で) への応答でのみ有効です。 詳細については、 「WMI登録情報の更新」を参照してください。