【发布时间】:2019-11-24 08:16:11
【问题描述】:
我尝试开发用于过滤特定数据包的 NDIS lwf 驱动程序。
我在windows 10中开发的驱动程序成功运行,是调试的测试模式。
我将窗口测试模式更改为正常模式,然后在非测试模式的窗口中运行驱动程序。但驱动没有加载。
为了检查驱动程序,我在 cmd.exe 中运行脚本(exe)“sc query ndis driver”。脚本(exe)返回退出代码 577。
驱动程序是通过测试签名构建的。我安装了驱动程序以在窗口驱动程序示例中的 bindview 示例中使用 netcfg API。
bindview 示例使用 SetupCopyOEMInf 函数和 netcfg Install 函数来安装网络驱动程序。我尝试使用 SetupCopyOEMInf 将我的 NDIS lwf 驱动程序(测试标志)文件复制到系统驱动程序(INF)文件夹。但是 SetupCopyOEMInf 返回 FALSE,GetLastError 返回 0xe0000277。
我检查了 c:/window/INF 目录中的 setupapi 开发日志。日志文件详细错误描述“驱动程序未签名数字签名”。
于是我强行复制了c:/window/INF目录下的驱动inf和cat文件。然后我通过调用 netcfg Install 函数安装了驱动程序。使用上述方式安装的驱动程序在windows 10中正常工作,即测试模式和内核调试。但驱动程序无法在非测试模式(正常模式)的 Windows 10 中工作。
我有几个问题。
是否只有签署了数字签名的 NDIS lwf(协议)驱动程序才能在非测试模式的 Windows 10 中工作?
有没有办法在非测试模式的 Windows 10 中运行测试签名驱动程序?
有没有办法免费为 NDIS lwf(protocol) 驱动程序签名数字签名?
【问题讨论】:
标签: c windows driver device-driver ndis