Registrace zprostředkovatele událostí
Chcete-li vytvořit poskytovatele událostí rozhraní WMI, musíte zaregistrovat instanci __Win32Provider, která představuje vašeho poskytovatele, pomocí instance __EventProviderRegistration. Jako objekt COM se musí váš poskytovatel zaregistrovat u operačního systému a rozhraní WMI. Následující postup předpokládá, že jste již implementovali proces registrace, jak je popsáno v Registrace poskytovatele.
Následující postup popisuje, jak zaregistrovat zprostředkovatele událostí.
Registrace poskytovatele událostí
Vytvořte instanci třídy __Win32Provider, která popisuje zprostředkovatele.
Vytvořte instanci třídy __EventProviderRegistration, která popisuje sadu funkcí zprostředkovatele.
Třída __EventProviderRegistration dědí mnoho vlastností z nadřazené třídy __ObjectProviderRegistration. Vlastnosti místní pro třídu __EventProviderRegistration jsou cesta objektu ke zprostředkovateli a seznam dotazů popisujících události, které zprostředkovatel podporuje. Další informace najdete v tématu Dotazování rozhraní WMI.
Načtěte implementaci tříd __Win32Provider a __EventProviderRegistration do úložiště rozhraní WMI.
Služba WMI používá vaši definici třídy k registraci a přístupu k poskytovateli událostí. Další informace naleznete v tématu registrace poskytovatele.
Následující příklad kódu popisuje implementaci __Win32Provider třídy a třídy __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\""};
};
První dotaz označuje, že poskytovatel generuje všechna oznámení o událostech třídy extrinsic event FaxEvent. Vzhledem k tomu, že používá operátor ISA, druhý dotaz znamená, že poskytovatel generuje oznámení pro všechny události vytváření instancí pro třídu Win32_LogicalDisk a všechny jeho podtřídy.
Když se poskytovatel zaregistruje k poskytnutí vlastní události, musí se tato událost použít pro všechny instance třídy. Jinými slovy, dotaz nelze zapsat tak, aby poskytoval události vytváření instancí pouze pro některé diskové jednotky, které patří do třídy Win32_LogicalDisk.