之前一直用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