[英]How to debug a Windows kernel driver properly?
我正在尝试设置Windows VM的环境以调试内核驱动程序。
我在Visual Studio 2017中创建了一个内核驱动程序示例。 文件 - >新建项目 - >内核模式驱动程序 ( 基本项目 ;仅用于测试 - 自动生成的跟踪宏,所需的过程等),并希望在目标计算机上对其进行测试。
有我的步骤( 目标机器 ):
使用params运行tracelog (GUID由模板生成;没有通过Tools-> Create GUID ) - 成功 :
tracelog -start TestKernelDriver2 -guid #0f4fbb98-1569-495b-88d1-f654b1e2d68e -f C:\\DriverTest\\TestKernelDriver2\\traces\\trace.etl -flag 2 -level 0xFFFF
检查C:\\ DriverTest \\ TestKernelDriver2 \\ traces \\ trace.etl; (存在 - 64KB大小)
停止tracelog - 成功 :
tracelog -stop TestKernelDriver2
打开事件查看器 。 Windows日志 - >系统 。 最后一个错误:
The TestKernelDriver2 service failed to start due to the following error: The specified procedure could not be found.
Details: EventData param1 TestKernelDriver2 param2 %%127 54006500730074004B00650072006E0065006C0044007200690076006500720032000000
我怎样才能知道错过了什么程序?
我试图通过Dependency Walker进行调查,并发现错过了一些.sys文件( WppRecorder.sys , WdfLdr.sys , msrpc.sys , EXT-MS- WIN- ### .DLL )。 这些字段位于C:\\ Windows \\ System32 \\ drivers。 我将文件复制到C:\\ Windows \\ System32和Dependency Walker平静下来。 那么EXT-MS-WIN - * .DLL - 我在这个主题中读到这些文件可能会被遗漏。
感谢@ magicandre1981。 我通过PnPUtil安装了我的驱动程序。 但现在,我在pnputil / enum-drivers命令列表中看到它。
但是当我在WinDbg中运行以下命令时,我在列表中看不到我的驱动程序:
!load wdfkd.dll
!wdfkd.wdfldr
我正在尝试从这个Microsoft ttutoriall中创建会话1的步骤。
我通过tracefmt生成器和TraceView应用程序找到了解决方案。
步骤0 :通过命令生成tmf文件:
tracefmt С:\TestDriver\TestKernelDriver2\TestKernelDriver2.etl -i С:\TestDriver\TestKernelDriver2\TestKernelDriver2.sys -r С:\TestDriver\TestKernelDriver2\TestKernelDriver2 -p С:\TestDriver\TestKernelDriver2\tmfs -o С:\TestDriver\TestKernelDriver2\TestKernelDriver2.txt -v
步骤1 :在TraceView中创建会话: 文件 - > 创建新会话 。 填写手动输入的控件GUID 。 ( 0f4fbb98-1569-495b-88d1-f654b1e2d68e )
步骤2 : 选择WPP格式信息源 ( 设置TMF搜索路径选项)并填充路径: C:\\ DriverTest \\ TestKernelDriver2 \\ tmfs
步骤3 : 接下来 ,选中填充日志会话名称和实时显示 。 完成 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.