Registrieren eines Ereignisanbieters
Zum Erstellen eines WMI-Ereignisanbieters müssen Sie die _ _ Win32Provider-Instanz registrieren, die Ihren Anbieter darstellt, indem Sie eine Instanz von _ _ EventProviderRegistrationverwenden. Als COM-Objekt muss sich Ihr Anbieter beim Betriebssystem und WMI registrieren. Im folgenden Verfahren wird davon ausgegangen, dass Sie den Registrierungsprozess bereits implementiert haben, wie unter Registrieren eines Anbietersbeschrieben.
Im folgenden Verfahren wird beschrieben, wie Sie einen Ereignisanbieter registrieren.
So registrieren Sie einen Ereignisanbieter
Erstellen Sie eine Instanz der _ _ Win32Provider-Klasse, die den Anbieter beschreibt.
Erstellen Sie eine Instanz der _ _ EventProviderRegistration-Klasse, die den Featuresatz des Anbieters beschreibt.
Die _ _ EventProviderRegistration-Klasse erbt viele Eigenschaften von der übergeordneten _ _ ObjectProviderRegistration-Klasse. Die lokalen Eigenschaften der _ _ EventProviderRegistration-Klasse sind der Objektpfad zum Anbieter und eine Liste von Abfragen, die die vom Anbieter unterstützten Ereignisse beschreiben. Weitere Informationen finden Sie unter Abfragen von WMI.
Laden Sie die Implementierung der _ _ Klassen Win32Provider und _ _ EventProviderRegistration in das WMI-Repository.
WMI verwendet Ihre Klassendefinition, um Ihren Ereignisanbieter zu registrieren und darauf zuzugreifen. Weitere Informationen finden Sie unter Registrieren eines Anbieters.
Im folgenden Codebeispiel wird eine Implementierung einer _ _ Win32Provider-Klasse und einer _ _ EventProviderRegistration-Klasse beschrieben.
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\""};
};
Die erste Abfrage gibt an, dass der Anbieter alle Ereignisbenachrichtigungen für die extrinsische Ereignisklasse FaxEvent generiert. Da der ISA-Operator verwendet wird, impliziert die zweite Abfrage, dass der Anbieter Benachrichtigungen für alle Instanzerstellungsereignisse für die Win32 _ LogicalDisk-Klasse und alle zugehörigen Unterklassen generiert.
Wenn sich ein Anbieter registriert, um ein systeminternes Ereignis bereitzustellen, muss das Ereignis für alle Instanzen einer Klasse gelten. Anders ausgedrückt: Eine Abfrage kann nicht geschrieben werden, um Instanzenerstellungsereignisse nur für einige der Datenträgerlaufwerke bereitzustellen, die zur Win32 _ LogicalDisk-Klasse gehören.