Verwenden von Aktivitätsbezeichnern
In Frameworkversionen 1.11 und höher können UMDF-Treiber Aktivitätsbezeichner (IDs) festlegen und abrufen. Mit Aktivitäts-IDs können Sie mehrere E/A-Anforderungen zuordnen, sodass Sie sie mithilfe der Ablaufverfolgung für Windows (Event Tracing for Windows, ETW) nachverfolgen können. In diesem Thema werden einige mögliche Szenarien beschrieben, in denen der Treiber Aktivitäts-IDs verwenden kann.
Zuordnen neuer Anforderungen zu einer vorhandenen Anforderung
In der E/A-Dispatch-Rückruffunktion Ihres Treibers können Sie als Ergebnis einer eingehenden Anforderung mehrere Framework-E/A-Anforderungen erstellen. Der Treiber ruft die Aktivitäts-ID aus der ursprünglichen Anforderung ab und legt sie in den neuen Anforderungen fest, indem er WdfRequestRetrieveActivityId und WdfRequestSetActivityId aufruft.
Ein Codebeispiel finden Sie unter WdfRequestRetrieveActivityId.
Zuordnen neuer Anforderungen zu einem vorhandenen Thread
Ein Treiber erstellt möglicherweise eine neue E/A-Anforderung in einem anderen Thread als dem E/A-Dispatchthread oder in einem Arbeitselement. Sie können die Aktivitäts-ID für eine solche Anforderung aus jeder entsprechenden Anforderung oder mithilfe der Aktivitäts-ID festlegen, die dem E/A-Dispatchthread zugeordnet ist. Der Treiber kann die dem aktuellen Thread zugeordnete Aktivitäts-ID abrufen, indem er EventActivityIdControl aufruft und dann WdfRequestSetActivityId aufruft , um den Bezeichner für jede neue E/A-Anforderung festzulegen.
Wenn der Treiber die Win32-API aufruft, um eine E/A-Anforderung zu senden, kann er die Aktivitäts-ID aus der ursprünglichen Anforderung abrufen und an den Thread weitergeben. Der E/A-Manager wendet dann die Aktivitäts-ID an, die dem Thread zugeordnet ist, auf alle E/A-Anforderungspakete (IRPs), die er als Antwort auf die Anforderung generiert.