[英]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.