vs2012+win8内核编译环境

来源:互联网 发布:base64解码软件 编辑:程序博客网 时间:2024/06/05 04:42

好,旧社会的苦故事已经剧终了。现在开始讲翻身得解放的故事。新时代忽然就来了,VS2012给了我们新生活(此处当响起为英雄而欢呼般的掌声)!VS2012是Win8发布后出来的,有很多针对Win8的特性,但也能在Win7/Vista系统上运行。请您先下载安装VS2012软件,再安装Win8的WDK,WDK的编译环境会自动集成到VS2012中去。当您再次打开VS2012的时候,在新项目向导里面,就能够找到内核驱动项目了。

您会忍不住立刻新建一个WDF驱动项目,打开它,发现竟然有几百行自动生成的代码已经微笑着列队欢迎您了,是不是很开心?玩味个不停后,猛然按下F7,靠!竟然开始编译了,并且还能够编译成功,生成了一个.sys文件!而且不单生成一个.sys文件,并且把一个完整的驱动安装包都给您准备妥当了呢(包含签过名的.sys/.cat/.inf文件)。爽吧!

总有一天,新进的程序员见此会觉得天经地义,理所当然的事情。而此刻,我们这些个老家伙们,却已在幸福中垂泪不止了。可怜见地,后来的人们啊,请爱惜来之不易的好生活吧。

得了,我们细细地来看一下VS2012的驱动工程吧。下图是新建VS2012工程的时候模板选择界面。这里可以看到Windows Driver目录树下面目前提供的几个模板组别。我们现在只把注意力集中在WDF这个组别上面。点击WDF后,它里面包含三个模板项,分别是有自动生成代码的KMDF和没有自动代码的KMDF,以及UMDF。选择第一个模板后,填写项目名称后点击确认。没有其它的设置需要完成了,直接产生项目文件,并跳入到生成的项目界面中。假设您填写的项目名称也是MyKMDF1。

vs2012-WDFvs2012-WDF1

解决方案包括两个项目工程,一个是驱动项目,另一个是驱动安装包项目。前者包含实际的驱动代码,生成驱动文件。后者为驱动文件打包,它根据.inf文件生成.cat文件,并用指定的数字证书对驱动文件进行签名。

现在请移动尊手指,在键盘上敲击F7键,启动编译过程,观察能否成功生成MyKMDF1.sys文件及相应的驱动包?这是一个重要的里程碑,请勿掉队,如果你在这里不幸碰到了错误,需想办法解决之。

1>—— 已启动生成: 项目: MyKMDF1, 配置: Vista Debug Win32 ——
1> Stamping VistaDebug\MyKMDF1.inf [Version] section with DriverVer=05/14/2013,17.17.5.125
1> Device.c
1> Driver.c
1> Queue.c
1> 正在生成代码…
1> MyKMDF1.vcxproj -> C:\Users\mozhang\Documents\Visual Studio 2012\Projects\MyKMDF1\VistaDebug\MyKMDF1.sys
1> Done Adding Additional Store
1> Successfully signed: C:\Users\mozhang\Documents\Visual Studio 2012\Projects\MyKMDF1\VistaDebug\MyKMDF1.sys
1>
2>—— 已启动生成: 项目: MyKMDF1 Package, 配置: Vista Debug Win32 ——
2> ………………….
2> Signability test complete.
2>
2> Errors:
2> None
2>
2> Warnings:
2> None
2>
2> Catalog generation complete.
2> C:\Users\mozhang\Documents\Visual Studio 2012\Projects\MyKMDF1\VistaDebug\MyKMDF1 Package\mykmdf1.cat
2> Done Adding Additional Store
2> Successfully signed: C:\Users\mozhang\Documents\Visual Studio 2012\Projects\MyKMDF1\VistaDebug\MyKMDF1 Package\mykmdf1.cat
2>
========== 生成: 成功 2 个,失败 0 个,最新 0 个,跳过 0 个 ==========

驱动包项目

我们来学习一下这个总是自动生成的驱动包项目,它能为我们做些什么?我们通过观察,总结它做了四件事情:

  1. 为.sys文件进行数字签名
  2. 根据.inf文件生成.cat文件
  3. 给签名文件打时间戳
  4. 生成驱动包

注1:WDK安装目录不能含有空格和中文字符,如安装在c:\documents and users目录下即错,或安装在c:\我的驱动目录下亦错。错误并非发生在安装过程中,而是发生在使用WDK编译的时候。

注2:内核编译器编译的DLL文件不符合向后兼容特性

注3:Win8以后的系统不再支持IA64平台,所以Win8也只支持三种硬件平台。

原创粉丝点击