Windows Driver升级到VS2015+Win10 WDK后build的Driver在Win7无法加载

升级到VS2015和Win10 WDK后,编译的Driver由于依赖Win10特有的Device Guard功能,导致在Win7系统上出现“Driver Corrupted or missing”错误。问题在于VS2015链接的Win10 WDK库中memcmp函数,Win7的NtOSKrnl.exe未导出此函数。解决方法是调整链接顺序,先链接libcntpr.lib中的memcmp。
摘要由CSDN通过智能技术生成

    之前一直用VS2013 + Win8.1 WDK,选择target OS Version为 Win7,build的Driver可以正常运行。

    Win10 TH2发布后,有一项WHQL测试为

DF - HyperVisor Code Integrity Readiness Test

这项测试要求Driver支持Device Guard功能,具体可以参考:

https://technet.microsoft.com/en-us/library/dn986865(v=vs.85).aspx
http://blogs.msdn.com/b/windows_hardware_certification/archive/2015/05/22/driver-compatibility-with-device-guard-in-windows-10.aspx

按我的理解,简单讲就是将Driver中的代码段和数据段区分开,数据段严格设置为不可执行。避免被病毒攻击利用。

Device Guard的完美支持需要VS2015,需要将之前的VS2013升级到VS2015,升级后发现,同样的设定build后无法在Win7系统上加载,提升“Driver Corrupted or missing",很明显应该是compiler换成VS2015导致无法加载,通过Dependency Walker发现某些API找不到,具体为:

NtOSKrnl.exe中没有memcmp

这让我很惊讶,因为VS2013是OK的,看起来应该是VS2015 link的Win10 WDK中的lib有问题,通过VS build log的输出,发现link iointex.lib中的memcmp,正是这个lib会动态lin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值