注册事件提供程序
要创建 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\""};
};
第一个查询表示提供程序为外部事件类 FaxEvent 生成所有事件通知。 由于第二个查询使用 ISA 运算符,因此它表示提供程序为 Win32_LogicalDisk 类及其所有子类的所有实例创建事件生成通知。
当提供程序注册为提供内在事件 时,该事件必须应用于类的所有实例。 换句话说,查询不能编写为只为属于 Win32_LogicalDisk 类的部分磁盘驱动器提供实例创建事件。