註冊事件提供者

若要建立 WMI 事件提供者,您必須使用 _ _ EventProviderRegistration的實例,註冊代表提供者的 _ _ Win32Provider實例。 如果您是 COM 物件,則您的提供者必須向作業系統和 WMI 註冊。 下列程式假設您已依照 註冊提供者中所述的方式來執行註冊程式。

下列程式說明如何註冊事件提供者。

註冊事件提供者

  1. 建立描述提供者之 _ _ Win32Provider類別的實例。

  2. 建立 _ _ EventProviderRegistration類別的實例,以描述提供者的功能集。

    _ _ EventProviderRegistration類別會繼承 _ _ ObjectProviderRegistration父類別的許多屬性。 _ _ EventProviderRegistration 類別的本機屬性是提供者的物件路徑,以及描述提供者支援之事件的查詢清單。 如需詳細資訊,請參閱 查詢 WMI

  3. _ _ 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\""};
};

第一個查詢表示提供者會為外來事件類別 FaxEvent 產生所有事件通知。 因為它使用 ISA 運算子,第二個查詢表示提供者會針對 Win32 _ LogicalDisk 類別及其所有子類別的所有實例建立事件產生通知。

當提供者註冊以提供內建事件時,事件必須套用至類別的所有實例。 換句話說,您無法寫入查詢,只針對屬於 Win32 _ LogicalDisk 類別的部分磁片磁碟機提供實例建立事件。