決定要接收的事件種類

註冊以接收事件之前,您必須決定要接收的事件種類:內建外嵌。 如需如何接收事件的詳細資訊,請參閱 接收 WMI 事件。 如需提供事件的詳細資訊,請參閱 開發 WMI 提供者撰寫事件提供者。 如需接收和提供事件之安全性考慮的詳細資訊,請參閱 保護 WMI 事件。

內建事件

內部事件是回應標準 WMI 資料模型中變更時所發生的事件。 每個內建事件類別都表示特定的變更類型,並且會在 WMI 或提供者建立、刪除或修改命名空間、類別或類別執行個體時發生。 例如,建立 Win32_LogicalDisk 實例會導致 __InstanceCreationEvent 實例。

WMI 會為儲存在 WMI 存放庫中的物件建立內部事件。 提供者會產生動態類別的內部事件,但如果沒有提供者可用,WMI 可以建立動態類別的實例。 WMI 會使用輪詢來偵測變更。 下表列出 WMI 用來報告內建事件的系統類別。

系統類別 描述
__ClassCreationEvent 建立類別時通知取用者。
__ClassDeletionEvent 刪除類別時通知取用者。
__ClassModificationEvent 修改類別時通知取用者。
__InstanceCreationEvent 建立類別實例時通知取用者。
__InstanceOperationEvent 當發生任何實例事件時通知取用者,例如建立、刪除或修改實例。 您可以在查詢中使用這個類別,以取得與 實例相關聯的所有類型事件。
__InstanceDeletionEvent 刪除實例時通知取用者。
__InstanceModificationEvent 修改實例時通知取用者。
__NamespaceCreationEvent 建立命名空間時通知取用者。
__NamespaceDeletionEvent 刪除命名空間時通知取用者。
__NamespaceModificationEvent 修改命名空間時通知取用者。
__ConsumerFailureEvent 因事件取用者部分失敗而卸載其他事件時通知取用者。
__EventDroppedEvent 卸載其他事件時通知取用者,而不是傳遞至要求的事件取用者。
__EventQueueOverflowEvent 當因傳遞佇列溢位而卸載事件時,通知取用者。
__MethodInvocationEvent 發生方法呼叫事件時通知取用者。

 

Extrinsic 事件

外來事件是預先定義的出現專案,無法直接連結到 WMI 資料模型中的變更。 因此,WMI 可讓事件提供者定義描述事件的事件類別。 例如,描述電腦切換到獨立模式的事件是一個外來事件。 提供者會從 __ExtrinsicEvent 系統類別衍生一個 extrinsic 事件,這是 __Event 系統類別的子類別。 系統登錄SNMP提供者會定義 extrinsic 事件類別,例如RegistryKeyChangeEvent,這會在登錄機碼變更時通知取用者。 如需詳細資訊,請參閱 註冊系統登錄事件撰寫事件提供者

在下列範例中,事件提供者會將安全性違規報告給一或多個建築物。 可能會針對代表安全性違規的 extrinsic 事件定義下列類別。

class SecurityViolationEvent : __ExtrinsicEvent
{
   string Building;           // building where violation occurred
   sint32 EntranceNumber;     // entrance where violation occurred
   datetime TimeOfDetection;  // date and time of violation
}

若要接收安全性違規通知,取用者會註冊 SecurityViolationEvent 事件種類。 除非另有指定,否則取用者會在所有時段和所有建築物中收到所有安全性違規的通知。 事件類別也包含取用者可用來要求更多特定事件的資訊。

在下列範例中,查詢只會在建築物 24 中註冊取用者是否有安全性違規事件。

SELECT * FROM SecurityViolationEvent WHERE Building = 24;