註冊事件提供者
若要建立 WMI事件提供者,您必須使用__EventProviderRegistration實例來註冊代表提供者的__Win32Provider實例。 身為 COM 物件,您的提供者必須向作業系統和 WMI 註冊。 下列程式假設您已經實作註冊程式,如 註冊提供者中所述。
下列程式描述如何註冊事件提供者。
註冊事件提供者
建立描述提供者 之__Win32Provider 類別的實例。
建立描述提供者功能集 之__EventProviderRegistration 類別的實例。
__EventProviderRegistration類別會繼承__ObjectProviderRegistration父類別的許多屬性。 __EventProviderRegistration類別的本機屬性是提供者的物件路徑,以及描述提供者所支援事件的查詢清單。 如需詳細資訊,請參閱 查詢 WMI。
將 __Win32Provider 和 __EventProviderRegistration 類別的實作載入 WMI 存放庫。
WMI 會使用您的類別定義來註冊和存取事件提供者。 如需詳細資訊,請參閱 註冊提供者。
下列程式碼範例描述 __Win32Provider 類別和 __EventProviderRegistration 類別的實作。
instance of __Win32Provider as $P
{
ClientLoadableCLSID = NULL;
CLSID = "{AA7828C5-95F9-11d2-BB0D-00C042424242}";
DefaultMachineName = NULL;
ImpersonationLevel = 0;
InitializationReentrancy = 0;
InitializeAsAdminFirst = FALSE;
Name = "FaxEventProvider";
PerLocaleInitialization = FALSE;
PerUserInitialization = FALSE;
Pure = TRUE;
UnloadTimeout = NULL;
};
instance of __EventProviderRegistration
{
Provider = $P;
EventQueryList = {
"SELECT * FROM FaxEvent",
"SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA \"Win32_LogicalDisk\""};
};
第一個查詢表示提供者會產生 extrinsic 事件類別 FaxEvent 的所有事件通知。 因為它會使用 ISA 運算子,所以第二個查詢表示提供者會針對 Win32_LogicalDisk 類別及其所有子類別的所有實例建立事件產生通知。
當提供者註冊以提供內建事件時,事件必須套用至類別的所有實例。 換句話說,查詢無法寫入,只提供屬於 Win32_LogicalDisk 類別之部分磁片磁碟機的實例建立事件。