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 會從下列清單中傳回狀態代碼:
傳回碼 | 描述 |
---|---|
|
表示 WMI 已完成要求且沒有錯誤的動作。 |
|
表示在 Action中指定的動作無效。 |
|
表示要求因為 NTSTATUS 值所指定的原因而失敗。 如需實際狀態傳回碼的詳細資訊,請參閱 Ntstatus.h。 |
言論
在驅動程式呼叫 IoWMIRegistrationControl之後,WMI 會將 IRP_MN_REGINFO 或 IRP_MN_REGINFO_EX 要求傳送給驅動程式,讓驅動程式可以提供 WMI 的資訊。 如需詳細資訊,請參閱 註冊為 WMI 資料提供者。
如果呼叫端指定 Action的WMIREG_ACTION_DEREGISTER,IoWMIRegistrationControl 會導致呼叫線程封鎖,直到先前傳送至指定裝置物件的所有 IRP_MJ_SYSTEM_CONTROL 要求都已完成為止。 在這種情況下,如果驅動程式在發送例程內呼叫 IoWMIRegistrationControlIRP_MJ_SYSTEM_CONTROL 要求,則呼叫線程將會死結。
如果裝置突然移除(例如,在意外移除中),導致 PnP 管理員傳送 IRP_MN_SURPRISE_REMOVAL IRP,驅動程式必須呼叫 IoWMIRegistrationControl,並在通話 Action 中指定WMIREG_ACTION_DEREGISTER。 請注意,如果驅動程式呼叫 IoWMIRegistrationControl,且 Action 設定為 WMIREG_ACTION_DEREGISTER 以回應 IRP_MN_SURPRISE_REMOVAL IRP,則驅動程式不得對 IoWMIRegistrationControl 進行相同的呼叫,以回應 IRP_MN_REMOVE_DEVICE IRP。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 2000 開始提供。 |
目標平臺 | 普遍 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDIS(storport)、IrqlIoPassive5(wdm)、LowerDriverReturn(wdm)、PowerIrpDDis(wdm) |