【发布时间】:2015-12-27 19:10:18
【问题描述】:
我在启动内核模式驱动程序时遇到了一个恼人的错误。目前我正在使用服务来“按需”启动驱动程序。驱动程序已加载但立即失败并出现蓝屏。
驱动的代码很简单:
#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 社区。p>
为了能够在我的本地机器上为测试场景运行驱动程序,我禁用了驱动程序签名强制执行数十次。也许这是一些相关信息。
提前致谢:)
【问题讨论】:
-
你得到了哪个 STOP 代码? msdn.microsoft.com/en-us/library/hh994433%28v=vs.85%29.aspx
-
停止码是 0x7E,意思是“SYSTEM_THREAD_EXCEPTION_NOT_HANDLED”。异常代码为 0xFFFFFFFF80000003,似乎与 msdn 文档中的代码 0x80000003 相关,描述为“STATUS_BREAKPOINT”。
-
检查 DbgPrint 文档:msdn.microsoft.com/en-us/library/windows/hardware/…。你也编译过win7的驱动吗?我的最后一个驱动程序是 NT4,所以我不知道任何更新的东西。等待有更多知识的人
-
非常感谢,你拯救了我的一天 :) 我尝试了很多东西来解决这个问题,我还设置了一个全新的驱动程序项目。但是,我忘了重置目标操作系统版本到正确的值,在我的例子中是 Windows 7。解决方案:项目 -> 属性 -> 驱动程序设置 -> 常规 -> 目标操作系统版本“Windows
” -
好的,将您的重定向步骤发布为答案并将其标记为答案
标签: c windows-7 visual-studio-2015 driver wdk