次の方法で共有


フィルターの定義

プロバイダーは、セッションがイベント データに基づいてイベントをフィルター処理するために使用するフィルターを定義できます。 レベルとキーワードを使用して、ETW はイベントがログに書き込まれるかどうかを判断します。 ただし、フィルターを使用すると、プロバイダーは、制御セッションが渡すフィルター データ条件 ( EnableCallback 関数を参照) を使用して、イベントをそのセッションに書き込むかどうかを判断します。 フィルターは、ETW トレース セッションでプロバイダーが有効になっている場合にのみ適用されます。

通常、プロバイダーはイベントを書き込むだけで、セッションはレベルとキーワードを使用して必要なイベントの種類を識別します。 プロバイダーがイベントの種類のデータ フィルターを定義した場合、セッションはそれを使用して、イベント データに基づいてそのイベントの種類のイベントを除外できます (フィルターのセマンティクスはプロバイダーによって定義されます)。 たとえば、プロバイダーがプロセス イベントを生成する場合、プロセス識別子に基づいてプロセス イベントをフィルター処理するデータ フィルターを定義できます。 その後、セッションはプロセス識別子をフィルター データとしてプロバイダーに渡し、そのプロセス識別子のプロセス イベントのみを受信できます。

次の例は、filter 要素を使用して フィルター を定義する方法を示しています。 フィルターの 名前 の属性を指定する必要があります。その他の属性は省略可能です。 フィルターでセッションがフィルター データを渡す必要がある場合は、 tid 属性が必要です。

<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events" 
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >

    <instrumentation>
        <events>
            <provider name="Microsoft-Windows-SampleProvider"
                guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}"
                symbol="PROVIDER_GUID"
                resourceFileName="<path to the exe or dll that contains the metadata resources>"
                messageFileName="<path to the exe or dll that contains the string resources>"
                message="$(string.Provider.Name)">

                . . .

                <filters>
                    <filter name="Pid"
                            value="1"
                            tid="t1"
                            symbol="FILTER_PID"/>
                </filters>

                <templates>
                    <template tid="t1">
                        <data name="Pid" inType="win:UInt32"/>
                    </template>
                </templates>

                . . .

            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources culture="en-US">
            <stringTable>
                <string id="Provider.Name" value="Sample Provider"/>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>