我在啓動kernelmode驅動程序時遇到了一個煩人的錯誤。目前我正在使用服務來「按需」啓動驅動程序。驅動程序被加載但立即失敗並顯示藍屏。wdk 8.1 kmdf驅動程序藍屏
驅動程序的代碼非常簡單:
#include <ntddk.h>
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
UNREFERENCED_PARAMETER(DriverObject);
UNREFERENCED_PARAMETER(RegistryPath);
DbgPrint("DriverEntry\n");
return STATUS_SUCCESS;
}
我是相當新的驅動程序/內核的研究與開發,因此我只是試圖做的非常小的步驟。不過,我不確定哪些信息是相關的,以便讓某人給我正確的提示。
另外我不知道如何解釋藍屏的數據。我可以在某些轉儲文件中找到顯示的地址,這會導致我發現錯誤的來源?
是否有一個通用的「清單」,以避免在驅動程序開發過程中可能發生的最明顯的錯誤?因爲我覺得這個bug不在驅動程序的代碼中。
我目前在MS Windows 7 SP1(64位)上使用WDK 8.1和MS Visual Studio 2015社區。
爲了能夠在我的本地機器上運行測試場景的驅動程序,我禁用了驅動程序簽名強制執行了十幾次。也許這是一些相關的信息。
在此先感謝:)
你會得到哪些STOP代碼? http://msdn.microsoft.com/en-us/library/hh994433%28v=vs.85%29.aspx – magicandre1981
停止代碼是0x7E,這意味着「SYSTEM_THREAD_EXCEPTION_NOT_HANDLED」。異常代碼是0xFFFFFFFF80000003,它似乎與msdn文檔中的代碼0x80000003相關,並被描述爲「STATUS_BREAKPOINT」。 – user3272529
檢查DbgPrint文檔:https://msdn.microsoft.com/en-us/library/windows/hardware/ff543632(v=vs.85).aspx。還有你編譯Win7的驅動程序?我的最後一個驅動程序是NT4,所以我不知道任何新的東西。等待有更多知識的人 – magicandre1981