共用方式為


使用 WmiFireEvent 傳送事件

驅動程式可以呼叫 WmiFireEvent 來傳送不使用動態實例名稱的事件,以及以單一基底名稱字串或 PDO 裝置實例識別碼為基礎的靜態實例名稱。

事件必須是區塊的單一實例,也就是驅動程式無法呼叫 WmiFireEvent 來傳送包含單一專案或多個實例的事件。 若要傳送這類事件,驅動程式必須呼叫 IoWMIWriteEvent,如使用 IoWMIWriteEvent傳送事件中所述。

驅動程式不應該在 WMI 啟用事件之前傳送事件。 啟用事件之後,當事件的觸發條件發生時,驅動程式:

  1. 從非分頁集區配置緩衝區,並將事件資料寫入緩衝區。 如果事件沒有資料,驅動程式可以略過此步驟。

  2. 使用下列參數呼叫 WmiFireEvent

    • 驅動程式裝置物件的指標

    • 表示事件區塊之 GUID 的指標

    • 如果事件區塊有多個實例,則實例的索引

    • 如果要使用 事件傳送資料、資料位元組數目,如果沒有,則為 0

    • 如果要使用 事件傳送資料,則為包含資料的驅動程式配置緩衝區指標,如果沒有,則為Null

    驅動程式必須配置從非分頁集區傳遞至 WmiFireEvent的所有參數,包括事件資料緩衝區。 WMI 會釋放驅動程式配置的記憶體,而不需要驅動程式進一步介入。

WmiFireEvent傳回之後,驅動程式會繼續監視事件的觸發條件,並在每次觸發條件發生時傳送事件,直到 WMI 停用該事件為止。