就像在主题中一样,我想知道如何为特定的 Windows 驱动程序“打开”ETW 或 WPP。让我们以 vdrvroot.sys 为例。当我们反汇编这个驱动程序时,我们在 DriverEntry 几个函数调用的开头看到:
McGenEventRegister();
WppLoadTracingSupport()
WppInitKm()
这会打开跟踪功能。对于 McGenEventRegister 中的 ETW,我看到以下提供程序注册:
result = EtwRegister(
&VDRVROOT_PROVIDER_ID,
McGenControlCallbackV2,
&VDRVROOT_PROVIDER_ID_Context,
&Microsoft_Windows_VDRVROOTHandle);
其中 VDRVROOT_PROVIDER_ID 等于 900448e4-b685-dd11-ad8b-0800200c9a66。我试图记录最终的日志:
tracelog.exe -start MyTrace -guid #900448e4-b685-dd11-ad8b-0800200c9a66
(...) //some actions here
tracelog.exe -start MyTrace
并通过 TraceView 查看日志文件。除了在这个驱动程序中没有捕获任何东西之外,EtwWrite 只在一个地方被调用,我可能没有用我的动作触发。问题是我是否可以在不反转驱动程序的情况下打开上述跟踪机制;)?