使用活动标识符

在框架版本 1.11 及更高版本中,UMDF 驱动程序可以设置和检索) (ID 的活动标识符。 活动 ID 允许关联多个 I/O 请求,以便可以使用 Windows 事件跟踪 (ETW) 跟踪来跟踪它们。 本主题介绍驱动程序可能使用活动 ID 的一些可能方案。

将新请求与现有请求关联

在驱动程序的 I/O 调度回调函数中,可以创建多个框架 I/O 请求作为传入请求的结果。 驱动程序从原始请求获取活动 ID,并通过调用 WdfRequestRetrieveActivityIdWdfRequestSetActivityId 在新请求中设置该 ID

有关代码示例,请参阅 WdfRequestRetrieveActivityId

将新请求与现有线程关联

驱动程序可能会在非 I/O 调度线程的线程或工作项中创建新的 I/O 请求。 可以从任何相应的请求或使用与 I/O 调度线程关联的活动 ID 来设置此类请求的活动 ID。 驱动程序可以通过调用 EventActivityIdControl ,然后调用 WdfRequestSetActivityId 来为每个新的 I/O 请求设置标识符来检索与当前线程关联的活动 ID。

如果驱动程序调用 Win32 API 来发送 I/O 请求,它可以从原始请求中检索活动 ID 并将其传播到线程。 然后,I/O 管理器会将与线程关联的活动 ID 应用于任何 I/O 请求数据包 (I/O 请求数据包,) 它为响应请求而生成的 I/O 请求数据包。