アクティビティ識別子の使用
フレームワーク バージョン 1.11 以降では、UMDF ドライバーはアクティビティ識別子 (ID) を設定および取得できます。 アクティビティ ID を使用すると、複数の I/O 要求を関連付けることができるため、Windows イベント トレーシング (ETW) トレースを使用して追跡できます。 このトピックでは、ドライバーがアクティビティ ID を使用する可能性のあるいくつかのシナリオについて説明します。
新しい要求と既存の要求の関連付け
ドライバーの I/O ディスパッチ コールバック関数では、受信要求の結果として複数のフレームワーク I/O 要求を作成できます。 ドライバーは、元の要求からアクティビティ ID を取得し、WdfRequestRetrieveActivityId と WdfRequestSetActivityId を呼び出すことによって、新しい要求で設定します。
コード例は WdfObjectAddCustomTypeをご参照ください。
新しい要求と既存の要求の関連付け
ドライバーは、I/O ディスパッチ スレッド以外のスレッドまたは作業項目に新しい I/O 要求を作成する場合があります。 対応する要求から、または I/O ディスパッチ スレッドに関連付けられているアクティビティ ID を使用して、このような要求のアクティビティ ID を設定できます。 ドライバーは、EventActivityIdControl を呼び出し、WdfRequestSetActivityId を呼び出して新しい I/O 要求ごとに識別子を設定することで、現在のスレッドに関連付けられているアクティビティ ID を取得できます。
ドライバーが Win32 API を呼び出して I/O 要求を送信する場合、元の要求からアクティビティ ID を取得し、スレッドに伝達できます。 その後、I/O マネージャーは、スレッドに関連付けられているアクティビティ ID を、要求に応答して生成するすべての I/O 要求パケット (IRP) に適用します。