IRP_MN_DISABLE_EVENTS

任何註冊一或多個事件區塊的 WMI 驅動程式都必須處理此 IRP。 驅動程式可以藉由呼叫 WmiSystemControl 或處理 IRP 本身來處理 WMI IRP,如 處理 WMI 要求中所述。

如果驅動程式呼叫 WmiSystemControl 來處理 IRP_MN_DISABLE_EVENTS 要求,WMI 接著會呼叫該驅動程式的 DpWmiFunctionControl 常式。

主要程式碼

IRP_MJ_SYSTEM_CONTROL

傳送時

WMI 會傳送此 IRP 通知驅動程式,指出資料取用者未進一步通知事件。

WMI 會在 IRQL = PASSIVE_LEVEL任意執行緒內容中傳送此 IRP。

輸入參數

Parameters.WMI.ProviderId 指向應回應要求的驅動程式裝置物件。 此指標位於 IRP 的驅動程式 I/O 堆疊位置。

Parameters.WMI.DataPath 指向可識別要停用之事件區塊的 GUID。

輸出參數

無。

I/O 狀態欄塊

如果驅動程式藉由呼叫 WmiSystemControl來處理 IRP,WMI 會在 I/O 狀態欄塊中設定 Irp-IoStatus.Status >Irp-IoStatus.Information >

否則,驅動程式會將 Irp-IoStatus.Status > 設定為STATUS_SUCCESS或適當的錯誤狀態,如下所示:

STATUS_WMI_GUID_NOT_FOUND

STATUS_INVALID_DEVICE_REQUEST

成功時,驅動程式會將 Irp-IoStatus.Information > 設定為零。

作業

驅動程式可以藉由呼叫 WmiSystemControl 或處理 IRP 本身來處理 WMI IRP,如 處理 WMI 要求中所述。

如果驅動程式藉由呼叫 WmiSystemControl 來處理 WMI IRP,該常式會呼叫驅動程式的 DpWmiFunctionControl 常式,或如果驅動程式未定義常式,則會傳回STATUS_SUCCESS。

如果驅動程式處理 IRP_MN_DISABLE_EVENTS 要求本身,只有當 Parameters.WMI.ProviderId 指向與驅動程式傳遞給 IoWMIRegistrationControl的指標相同的裝置物件時,才應該這麼做。 否則,驅動程式必須將要求轉送至下一個較低的驅動程式。

在處理要求之前,驅動程式必須判斷 Parameters.WMI.DataPath 是否指向驅動程式支援的 GUID。 如果沒有,驅動程式必須失敗 IRP 並傳回STATUS_WMI_GUID_NOT_FOUND。

如果驅動程式支援事件區塊,它會停用該區塊的所有實例的事件。

驅動程式不需要檢查事件區塊的事件是否已停用,因為 WMI 會在最後一個資料取用者停用事件時,傳送該事件區塊的單一停用要求。 WMI 不會在沒有啟用的交錯要求的情況下傳送另一個停用要求。

如需定義事件區塊的詳細資訊,請參閱 設計 WMI 資料和事件區塊

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_ENABLE_EVENTS

WMILIB_CONTEXT

WmiSystemControl