次の方法で共有


IoWMIRegistrationControl 関数 (wdm.h)

IoWMIRegistrationControl ルーチンは、指定されたデバイス オブジェクトの WMI データ プロバイダーとして呼び出し元を登録または登録解除します。

構文

NTSTATUS IoWMIRegistrationControl(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] ULONG          Action
);

パラメーター

[in] DeviceObject

デバイス オブジェクトへのポインター。 このオブジェクトは 、DEVICE_OBJECT システム構造です。

[in] Action

WMI が実行する必要があるアクション。 要求されたアクションは、次のいずれかの値で示されます。

アクション値 意味
WMIREG_ACTION_REGISTER WMI が DeviceObject の WMI プロバイダーとして呼び出し元を登録する必要があることを指定します。 これにより、WMI は ドライバーにIRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を送信します。
WMIREG_ACTION_DEREGISTER WMI が DeviceObject の 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 は 、次の一覧から状態コードを返します。

リターン コード 説明
STATUS_SUCCESS
WMI がエラーなしで要求されたアクションを完了したことを示します。
STATUS_INVALID_PARAMETER
[アクション] で指定されたアクションが無効であることを示します。
STATUS_XXX
NTSTATUS 値で指定された理由で要求が失敗したことを示します。 実際の状態のリターン コードの詳細については、Ntstatus.h を参照してください。

注釈

ドライバーが IoWMIRegistrationControl を呼び出した後、WMI はドライバーに IRP_MN_REGINFO または IRP_MN_REGINFO_EX 要求を送信して、ドライバーが WMI に情報を提供できるようにします。 詳細については、「 WMI データ プロバイダーとしての登録」を参照してください。

呼び出し元が Action のWMIREG_ACTION_DEREGISTERを指定した場合、 IoWMIRegistrationControl は、指定されたデバイス オブジェクトに以前に送信されたすべての IRP_MJ_SYSTEM_CONTROL 要求が完了するまで、呼び出し元のスレッドをブロックします。 このような場合、ドライバーがIRP_MJ_SYSTEM_CONTROL要求のディスパッチ ルーチン内で IoWMIRegistrationControl を呼び出すと、呼び出し元のスレッドはデッドロックします。

デバイスが突然削除された場合 (突然の削除など)、PnP マネージャーが IRP_MN_SURPRISE_REMOVAL IRP を送信する原因となった場合、ドライバーは IoWMIRegistrationControl を呼び出し、呼び出しで アクション でWMIREG_ACTION_DEREGISTERを指定する必要があります。 ドライバーが IoWMIRegistrationControl を呼び出し、 アクション が IRP_MN_SURPRISE_REMOVAL IRP に応答してWMIREG_ACTION_DEREGISTERに設定されている場合、ドライバーは、 IRP_MN_REMOVE_DEVICE IRP に応答して IoWMIRegistrationControl に対して同じ呼び出 しを行 う必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlIoPassive5(wdm), LowerDriverReturn(wdm), PowerIrpDDis(wdm)

こちらもご覧ください

IRP_MN_REGINFO

IRP_MN_REGINFO_EX

IRP_MN_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL