IoWMIRegistrationControl 関数 (wdm.h)
IoWMIRegistrationControl ルーチンは、指定したデバイス オブジェクトの WMI データ プロバイダーとして呼び出し元を登録または登録解除します。
NTSTATUS IoWMIRegistrationControl(
[in] PDEVICE_OBJECT DeviceObject,
[in] ULONG Action
);
[in] DeviceObject
デバイス オブジェクトへのポインター。 このオブジェクトは、DEVICE_OBJECT システム構造です。
[in] Action
WMI が実行する必要があるアクション。 要求されたアクションは、次のいずれかの値で示されます。
アクション値 | 意味 |
---|---|
WMIREG_ACTION_REGISTER | DeviceObjectの WMI プロバイダーとして WMI が呼び出し元を登録する必要があることを指定します。 これにより、WMI は IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求をドライバーに送信します。 |
WMIREG_ACTION_DEREGISTER | DeviceObjectの WMI プロバイダーの一覧から WMI が呼び出し元を削除することを指定します。 |
WMIREG_ACTION_REREGISTER | WMI でドライバーの登録を解除し、ドライバーを登録 (再登録) する必要があることを指定します。 ドライバーを再登録すると、WMI によってドライバーに IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求が送信されます。 |
WMIREG_ACTION_UPDATE_GUIDS | WMI がデータを提供する GUID 識別子の新しい一覧をドライバーに再クエリする必要があることを指定します。 これにより、WMI は IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求をドライバーに送信します。 |
IoWMIRegistrationControl は、次の一覧から状態コードを返します。
リターン コード | 形容 |
---|---|
|
WMI がエラーなしで要求されたアクションを完了したことを示します。 |
|
Actionで指定されたアクションが無効であることを示します。 |
|
NTSTATUS 値で指定された理由で要求が失敗したことを示します。 実際の状態リターン コードの詳細については、Ntstatus.h を参照してください。 |
ドライバーが IoWMIRegistrationControl 呼び出した後、WMI はドライバーに IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を送信して、ドライバーが WMI に情報を提供できるようにします。 詳細については、「WMI データ プロバイダーとしての登録」を参照してください。
呼び出し元が アクションのWMIREG_ACTION_DEREGISTERを指定した場合、IoWMIRegistrationControl 、指定されたデバイス オブジェクトに以前に送信されたすべての IRP_MJ_SYSTEM_CONTROL 要求が完了するまで、呼び出し元のスレッドがブロックされます。 このような場合、ドライバーが IRP_MJ_SYSTEM_CONTROL 要求のディスパッチ ルーチン内 IoWMIRegistrationControl を呼び出すと、呼び出し元のスレッドがデッドロックします。
デバイスが突然削除された場合 (突然の削除など)、PnP マネージャーが IRP_MN_SURPRISE_REMOVAL IRP を送信する原因となった場合、ドライバーは IoWMIRegistrationControl 呼び出しを呼び出し、呼び出しの アクション でWMIREG_ACTION_DEREGISTERを指定する必要があります。 IRP_MN_SURPRISE_REMOVAL IRP に応答して Action がWMIREG_ACTION_DEREGISTERに設定された IoWMIRegistrationControl をドライバーが呼び出す場合、ドライバーは、IRP_MN_REMOVE_DEVICE IRP に応答して IoWMIRegistrationControl を する同じ呼び出しを行う必要があることに注意してください。
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 以降で使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm) |