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