注册事件提供程序

要创建 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 类的部分磁盘驱动器提供实例创建事件。