c - WDK驱动程序加载问题(该服务无法启动,或者因为它被禁用)

标签 c driver loading wdk kmdf

我使用 Windows 8.1 编写了许多驱动程序,在加载这些驱动程序时没有出现任何问题。当我尝试加载我在 Visual Studio 中构建的新的基本 KMDF 驱动程序时,似乎出现了某种问题。我能够编辑源代码并编译在以前版本的 Windows 上构建的驱动程序项目的新版本,并且我认为 WDK 才是真正的罪魁祸首。即使我编辑源代码并重新编译,我也能够加载在 Windows 8.1 中生成的原始项目的驱动程序,但具体来说,如果我尝试通过 Visual Studio 创建一个新的驱动程序项目,即内核模式驱动程序的示例库,它会失败加载错误:

“服务无法启动,因为它已被禁用或没有与其关联的已启用设备”

几点: 驱动程序每次都无法加载,并出现相同的错误,我有自己的来自 digicert 的认证可信证书,并且我尝试禁用驱动程序签名强制执行,但都出现相同的错误。因此可以肯定地说证书不是问题。

我能区分的新旧 WDK 源之间的唯一主要区别是旧版本专门有可供构建的 Windows 版本,但新版本具有“通用”功能,尽管通过设置看起来它只会为 Windows 10 构建.

我没有犯任何愚蠢的错误,这意味着我正在编译 x64 等...

我开始认为 WDK KMDF 基本模板可能存在某种问题。

我宁愿不必破坏旧项目(驱动程序)来成功加载"new"驱动程序。

最佳答案

您能否指定它是旧版驱动程序还是 pnp 驱动程序。

我遇到了类似的问题,但我犯的错误是编译 pnp 驱动程序并尝试将其作为旧驱动程序加载。

为了完成目的而指定差异,pnp 将是一个带有 AddDevice 例程的驱动程序。此类驱动程序的启动类型预计为 0,并在启动时加载。需要在添加设备例程中将驱动程序附加到特定设备对象。

旧版驱动程序没有 AddDevice 例程,我们从 DriverEntry 本身调用 IoCreateDevice。

关于c - WDK驱动程序加载问题(该服务无法启动,或者因为它被禁用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35907436/

相关文章:

c++ - Assimp Faces 都有索引 (0,1,2)

c++ - 无法理解代码/函数调用

c - socket编程中AF_INET和PF_INET有什么区别?

android - android "nexus 7"2013 的哪个版本的 adb 接口(interface)

mysql - 未找到 Jdbc 驱动程序

ios - 在 App Delegate 中启动时显示加载屏幕

c - 逻辑帮助 : Calculating primes of a range of numbers with multiple threads

c - 指向函数指针的指针是否可以转换为 void 指针,反之亦然?

loading - 配置单元在分区表中的加载