web虎所用2个64位驱动:到底在build时要生成几个版本?
更准确的问法是:
是否需要根据wdk+目标os不同,根据组合生成不同的多组驱动:
1.wdk10:生成windows10和windows2016+的驱动
2. wdk8和wdk8.1:生成windows8和windows8.1,window2012的驱动?
3. wdk7:生成win7/vista和win2008驱动?
分析:
wdk10版本驱动看来不可或缺,因为多个用户反映windows10不可用,而根据过往经验也确实需要重新build(windows xp/2003可用的-对应wdk6,不能用于windows7/2008-对应wdk7)
wdk8和wdk8.1版本驱动,同上。
wdk7版本驱动,也需要,因为需要更稳定。
背景:
1. 2010版驱动不可在win10、2012上运行,win7上不稳定
2. 新build的,binary compatibility待明确
目前结论:
看到wiki和 osr上都说,wdk1709版 可以支持到从win7sp1/2008R2开始的驱动开发,大喜:不用为每个wdk去build1个driver了,直接用该版wdk+指定target OS+target Platform就可一次build、到处运行(win7sp1以上);事实证明自己一厢情愿了:支持多个targetOS开发,并不意味着可build1个driver、在多个OS上跑。。当然因为咱们用到了wdm,所以每个驱动build时候,需要改动linker option:override the linker $(KernelBufferOverflowLib) ,这里详述:Building Drivers for Different Versions of Windows | Microsoft Docs。。
另外看到一篇文字,介绍怎样做才能让一个驱动同时可以跑在win7,8,8.1上(Building one driver for Win7, Win8, Win8.1 - MCCI Blog),但还没看到怎样能跑到win7开始的所有os上。。以后有空再研究
特别需要小心:文档上显示支持的driver版本少了2个win10的小build版本:1507和1511。。。这点挺奇怪的,待测试。

最终结果:
1.用wdk10对应toolset build出的虚拟盘driver,在win2012上可跑、win7上提示出错:cannot find ntoskrnl.exe keinitializeSpinLock;而该toolset build出的文件过滤驱动在win2012和win7上都可跑。
2.用wdk8.1对应toolset build出的虚拟盘driver,win7上可跑,但需要安装有vs2013的sdk,否则提示 cl.exe错误(msb6006) cl.exe exit with code 5...trk0005错误。。
步骤:
1. 卸载不用的sql之类(先腾空,随便一个升级就几个G), 这些不知道是否有用,但为保险只能先卸载了;保险起见,看了下win10系统还原点,有这些卸掉的
2. 搬走程序目录下vs12,vs11这些不用的 到U盘(后来需要vs2013 sdk,又搬回来了vs12。。)

相关信息:
0.参考链接:Windows Driver Kit - Wikipedia,WDK 1709 (aka 16299 aka RS3) Released! – OSR,What's new in the Windows ADK and ADK tools | Microsoft Docs,What's new in driver development | Microsoft Docs
1.能直接inplace更新sdk和wdk吗? 网上简单找了下:inplace upgrade wdk,无果。
2.sdk更新还要不?看来可能需要,wiki说的: A complete toolset for driver development also need the following: a compiler Visual Studio, Windows SDK, and Windows Hardware Certification Kit.
3.原来wdk的版本号跟windows版本号一致呢,另外还幻想windows更新会包括对应wdk更新、转念一想不对,这不一回事啊,所以还要自己单独下载wdk更新


4.要为wdk和sdk下载点个赞:飞快就把几个G文件下载下来了。。另外安装也没有所担心的额那么大,应该是覆盖了旧版的sdk和wdk。
web虎所用2个64位驱动:到底在build时要生成几个版本?的更多相关文章
- Visual Studio 2013 新增web项目IIS Express的64位版 转载来源http://www.cnblogs.com/jianyus/p/3524335.html
使用Visual Studio 2012开发SharePoint的应该都遇到过下面的错误“SharePoint 在32位进程中不受支持”,而怎么修改目标平台都不好使,因为VS 2012所配备的IIS ...
- Visual Studio 2013 新增web项目IIS Express的64位版
使用Visual Studio 2012开发SharePoint的应该都遇到过下面的错误“SharePoint 在32位进程中不受支持”,而怎么修改目标平台都不好使,因为VS 2012所配备的IIS ...
- Win64 驱动内核编程-24.64位驱动里内嵌汇编
64位驱动里内嵌汇编 讲道理64位驱动是不能直接内链汇编的,遇到这种问题,可以考虑直接把机器码拷贝到内存里,然后直接执行. 获得机器码的方式,可以写好代码之后,直接通过vs看反汇编,然后根据地址在看内 ...
- Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法
Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 1. 卸载IE9( 装了Win7 64位后,默认 ...
- windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras
转自:windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras 1.本来电脑安装的是anaconda3 5.3.1,但安装的python版本 ...
- 一个伟大的发现,装X一下。笔记本win7系统64位机器执行unity 时,屏幕模糊解决的方法
笔者笔记本win7系统64位机器执行unity 时.往往切换时unity界面屏幕模糊,后来发现此时须要下载DirectXRuntimes201006x64,安装就可以.
- 南天PR2、PR2E驱动下载,xp,win7,win8,win8.1,win10 32位64位驱动下载安装教程
家里开淘宝店,有个针式打印机驱动.电脑各种换系统,为了装这个驱动可是废了不小的劲.不敢独享,所以现在把各种驱动以及安装教程分享出来. 注意: 打印机在开机状态下,电脑在开机状态下,不要插拔连接线!!! ...
- Squid代理服务器(一)——大家所用的游戏代理软件到底为何物?
一.代理服务器应用场景分析 想当年大学时候宿舍控制网速,苦了我们这帮魔兽党,一到晚上工会活动我们就得和全校上万名学生抢网速,作为坦克的我总是因为网速问题导致团灭,咱也是有自尊的人,一怒之下花300元办 ...
- DDK编写64位驱动时加入x64汇编的方法
上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...
随机推荐
- awk 统计文件中按照某列统计某列的和(sum)
把第一列相同的名称的第二列加起来: [root@localhost cc]# cat 1.txtaaa 10 bbb 20aaa 30ccc 40ccc 20ccc 40 [root@localhos ...
- *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<WKWebViewConfiguration 0x1701bcd20> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the k
问题描述: ionic项目,windows下正常,打包android可正常运行: 因为需要打包到iPhone (ios 11.0.1)上测试,将代码拿到Mac OS环境下(重新npm install. ...
- C# 小软件部分(一)
自己在空闲时分整合.编写了一款小软件程序,命名为魔法兔子,希望大家可以提出意见和指导,此篇文章主要为软件的部分截图和介绍. 软件详情: 1.首先是登录,注册界面. 可以注册自己的账号,后台是腾讯云服务 ...
- $("input[name=name]").val(); 无法获取值问题
<input type="text" class="text" name="name" placeholder= 例如:上海" ...
- [android] 手机卫士接收打电话广播显示号码归属地
使用广播接收者接收打电话的意图,显示号码归属地 新建一个类OutCallReceiver继承系统的BroadcastReceiver 重写onReceive()方法 调用getResultData() ...
- Fork/Join
Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过Fork和Join这两个单词来理解下 ...
- C# 运算符 ++在前与++在后实例分析。
首先记住计算技巧“++在前先+1,++在后后+1”. static void Main(string[] args) { int i = 10; Console.WriteLine(i);//此时i的 ...
- Java8简明学习之Lambda表达式
函数式接口 就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,函数式接口可以被隐式转换为lambda表达式. 之前已有的函数式接口: java.lang.Runnable java.uti ...
- jquery3.0移除了.load()方法
参考链接:新版jquery去掉load事件了吗? 今天也遇到了这个问题,查了一下文档,确实从3.0开始移除了load.unload.error事件方法.不过依然可以用on方法绑定这些事件. Break ...
- 关于HSTS的总结
访问http网站,和服务器交互的步骤浏览器向服务器发起一次HTTP请求服务器返回一个重定向地址浏览器在发送一次HTTPS请求,得到最终内容 上面浏览器发送http请求后容易被拦截,使用HSTS后可以避 ...