驅動程式可以呼叫 WmiFireEvent 來傳送不使用動態實例名稱的事件,以及在單一基底名稱字串或 PDO 的裝置實例識別碼上建立靜態實例名稱。
事件必須是區塊的單一實例,也就是說,驅動程式無法呼叫 WmiFireEvent 來傳送由單一專案或多個實例所組成的事件。 若要傳送這類事件,驅動程式必須呼叫 IoWMIWriteEvent,如 使用IoWMIWriteEvent傳送事件中所述。
在 WMI 啟用事件之前,驅動程式不應該傳送事件。 啟用事件之後,當事件的觸發條件發生時,驅動程式:
從非分頁集區配置緩衝區,並將事件數據寫入緩衝區。 如果事件沒有數據,驅動程式可以略過此步驟。
使用下列參數呼叫 WmiFireEvent :
驅動程式裝置物件的指標
代表事件區塊的 GUID 指標
如果事件區塊有多個實例,則需要取得實例的索引值
如果有數據要和事件一起傳送,數據的位元組數為多少;如果沒有,則為0。
如果要附加數據至事件,則提供包含數據的驅動程式分配緩衝區指標,如果沒有數據,則為 NULL
驅動程式必須配置從非分頁集區傳遞至 WmiFireEvent 的所有參數,包括事件數據緩衝區。 WMI 會釋放驅動程式配置的記憶體,而不需要驅動程式進一步介入。
在 WmiFireEvent 傳回之後,驅動程式會繼續監視事件的觸發條件,並在每次觸發條件發生時傳送事件,直到 WMI 停用該事件為止。