在框架版本 1.11 及更高版本中,UMDF 驱动程序可以设置和检索活动标识符(ID)。 活动 ID 允许你关联多个 I/O 请求,以便可以使用 Windows 事件跟踪(ETW)跟踪来跟踪这些请求。 本主题介绍驱动程序可能使用活动 ID 的一些可能方案。
将新请求与现有请求相关联
在驱动程序的 I/O 调度回调函数中,您可能会因为传入的请求而创建多个架构 I/O 请求。 驱动程序从原始请求中获取活动 ID,并通过调用 WdfRequestRetrieveActivityId 并在 WdfRequestSetActivityId来设置新请求中。
有关代码示例,请参阅 WdfRequestRetrieveActivityId。
将新请求与现有线程相关联
驱动程序可能会在非 I/O 调度线程或工作项的线程中创建新的 I/O 请求。 可以通过任何相应请求,或是使用与 I/O 调度线程关联的活动 ID,为此类请求设置活动 ID。 驱动程序可以通过调用 EventActivityIdControl,然后调用 WdfRequestSetActivityId 来设置每个新 I/O 请求的标识符,从而检索与当前线程关联的活动 ID。
如果驱动程序调用 Win32 API 发送 I/O 请求,它可以从原始请求中检索活动 ID 并将其传播到线程。 然后,I/O 管理器将与线程关联的活动 ID 应用到它为响应请求而生成的任何 I/O 请求数据包(IRP)。