ドライバーは、ブロックが静的または動的なインスタンス名を使用するかどうかを示し、 WMIGUIDREGINFO または WMIREGGUID 構造体にフラグを設定して、ブロックを登録するために WMI に渡すその他の特性を指定します。
ドライバーは、次のいずれかのフラグを設定することで、ブロックが静的インスタンス名を使用することを示します。
WMIREG_FLAG_INSTANCE_LISTは、ドライバーが静的リスト内のすべてのインスタンス名を提供することを示します。
ドライバーは、WmiSystemControl を呼び出すことによってではなく、IRP_MN_REGINFOまたはIRP_MN_REGINFO_EX要求を処理してブロックを登録する場合にのみ、このフラグを設定できます。 ドライバーは、インスタンス名の文字列をブロックの WMIREGGUID 構造体の InstanceNameList によって示されるバイト オフセットに書き込みます。
WMIREG_FLAG_INSTANCE_BASENAMEは、ドライバー定義の基本名文字列から静的インスタンス名を生成するように WMI に指示します。
IRP_MN_REGINFOまたはIRP_MN_REGINFO_EX要求を処理するドライバーは、ブロックの WMIREGGUID 構造体の BaseNameOffset で示されるオフセットにベース名文字列を書き込みます。
WmiSystemControl を呼び出すドライバーは、DpWmiQueryReginfo ルーチンの InstanceName パラメーターに基本名の文字列を指定します。
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 を呼び出すドライバーは、その DpWmiQueryReginfo ルーチンの Pdo パラメーターで 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 に指示します。 このフラグは、登録情報を更新する要求 (WMIUPDATE でIRP_MN_REGINFO または IRP_MN_REGINFO_EX ) への応答でのみ有効です。 詳細については、「 WMI 登録情報の更新」を参照してください。