註冊事件提供者

若要建立 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\""};
};

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

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