イベント プロバイダーの登録
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 のすべてのイベント通知を生成することを示します。 2 番目のクエリは ISA 演算子を使用しているため、プロバイダーが Win32_LogicalDisk クラスとそのすべてのサブクラスのあらゆるインスタンス作成イベントに関する通知を生成することを意味します。
組み込みイベントを提供するためにプロバイダーを登録する場合、イベントはクラスのすべてのインスタンスに適用される必要があります。 つまり、Win32_LogicalDisk クラスに属するディスク ドライブの一部に対してのみインスタンス作成イベントを提供するクエリを記述することはできません。