イベント プロバイダーの登録

WMI イベント プロバイダー を作成するには、 __EventProviderRegistrationのインスタンス を使用して、プロバイダーを表す __Win32Provider インスタンスを登録する必要があります。 COM オブジェクトとして、プロバイダーはオペレーティング システムと WMI に登録する必要があります。 次の手順では、「プロバイダーの登録」の説明に従って登録プロセス 既に実装されていることを前提としています。

次の手順では、イベント プロバイダーを登録する方法について説明します。

イベント プロバイダーを登録するには

  1. プロバイダーを記述する __Win32Provider クラスのインスタンスを作成します。

  2. プロバイダーの機能セットを記述する __EventProviderRegistration クラスのインスタンスを作成します。

    __EventProviderRegistration クラスは、__ObjectProviderRegistrationの親クラスから多くのプロパティを継承します。 __EventProviderRegistration クラスにローカルなプロパティは、プロバイダーへのオブジェクト パスと、プロバイダーがサポートするイベントを記述するクエリの一覧です。 詳細については、「 WMI のクエリ」を参照してください。

  3. __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 クラスに属する一部のディスク ドライブに対してのみインスタンス作成イベントを提供するクエリを記述することはできません。