在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013
这款功能强大的程序开发工具,在课件内请双击ISO
文件并运行内部的vs_ultimate.exe
安装包,Visual Studio
的安装非常的简单,您只需要按照提示全部选择默认参数即可,根据机器配置不同可能需要等待一段时间;
配置驱动开发环境
在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013
这款功能强大的程序开发工具,在课件内请双击ISO
文件并运行内部的vs_ultimate.exe
安装包,Visual Studio
的安装非常的简单,您只需要按照提示全部选择默认参数即可,根据机器配置不同可能需要等待一段时间;
接着读者还需要继续安装Windows Driver Kit 8.1
工具包,请将该工具包解压缩到桌面,并双击wdksetup.exe
进行安装,过程中只需要一直下一步,并等待WDK工具包安装完成;
WDK就是内核编程开发工具包,某些读者可能听说过DDK或者IFSDDK,最典型的开发工具包莫过于DDK7600
,直到目前此类工具包仍然可以正常使用,但并不推荐。
为了能测试驱动程序运行状态,读者需安装VMWare
虚拟机,双击附件中的VMware-workstation-full-16.2.4-20089737.exe
安装程序一直点击下一步即可,需要注意的是在如下选项中请在增强型键盘驱动程序上打对勾,之后等待安装完毕即可;
接着打开VMware
虚拟机,并在【文件】处选择【新建虚拟机】,单机下一步并选中【稍后安装操作系统】,在操作系统选择页面选择【Win10 x64】版本。
在硬件配置处,读者可根据自己电脑的配置灵活的选择,当自定义配置完成后,则虚拟机模板将被创建。
虚拟机模板创建完成后,读者可根据如下配置选择编辑虚拟机设置,并在磁盘位置处将课件中的cn_windows_10_consumer_editions_version_1903_x64_dvd_8f05241d.iso
挂载到虚拟机上;
点击开启虚拟机,并按照提示将Windows
系统正确的安装,需要注意的是在选择版本时,读者最好使用教育版
与笔者开发环境保持一致,至此只需等待系统安装完毕,根据系统差异安装时间可能有所差别,耐性等待即可;
当一切安装就绪后我们需要在系统中安装VMware Tools
工具,该组件在安装后可让虚拟机具备有拖拽上传文件的功能,且鼠标键盘将可以自由切换,该功能是我们必须要用到的;
安装VMware Tools
工具很容易,只需要点击安装菜单,后会在虚拟机中出现DVD驱动器,此时双击驱动器并按照要求安装即可,安装完成后重启系统,此时则具备了拖拽上传功能;
当这些都做好以后,建议用户关闭虚拟机,并点击【虚拟机】菜单,找到【快照】并拍摄一个快照,快照的作用是当虚拟机系统出现问题后可快速恢复到初始模式,避免重装系统,在后续课程中读者会出现无数次的蓝屏,而虚拟机快照的快速恢复功能则是一个很好的选择;
配置驱动开发模板
1.打开Visual Studio
开发工具,然后选择【文件】菜单新建项目,并在已安装模板中选中【Visual C++】新建空项目,并将项目名称命名为【WinDDK】点击确定。
2.依次选择【解决方案视图-源文件-添加新建项】选项卡,或者直接按下Ctrl + Shift + A
快捷打开菜单,并创建main.c
文件。
3.接着需要修改配置管理器,添加自定义配置管理,选择【生成-配置管理器-新建】选项卡,此处我们命名为WinDDK
即可。
4.修改配置属性中的【常规】属性,点击菜单栏中的调试,选择【WinDDK属性-配置-常规】修改为标黄处所示内容即可。
5.配置可执行文件路径与导入库路径,这里我们选择【配置属性-VC++目录】依次将如下信息填入配置项。
可执行目录
C:\Program Files (x86)\Windows Kits\8.1\bin\x64
C:\Program Files (x86)\Windows Kits\8.1\bin
包含目录
C:\Program Files (x86)\Windows Kits\8.1\Include\km
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\um
C:\Program Files (x86)\Windows Kits\8.1\Include\wdf\kmdf\1.13
C:\Program Files (x86)\Windows Kits\8.1\Include\wdf\umdf\2.0
C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
引用目录
C:\Program Files (x86)\Windows Kits\8.1\Lib\win7\km\x64
库目录
C:\Program Files (x86)\Windows Kits\8.1\Lib\win7\km\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\wdf\kmdf\x64\1.13
C:\Program Files (x86)\Windows Kits\8.1\Lib\wdf\umdf\x64\2.0
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\km\x64
当如上文件配置完成后,最终效果如下图所示;
6.配置C/C++优化选项,在配置属性中找到【C/C++-所有选项】并依次修改下方几个关键位置。
安全检查 禁用安全检查 (/GS-)
将警告视为错误 否 (/WX-)
警告等级 关闭所有警告
启用C++异常 否
调用约定 __fastcall (/Gr)
优化 已禁用 (/Od)
运行库 多线程 (/MT)
预处理器定义 _AMD64_;_DDK_;_WIN32_WINNT=0x0501;WINVER=0x0501;_NDEBUG;DBG=0;%(PreprocessorDefinitions)
当如上文件配置完成后,最终效果如下图所示;
7.配置连接器选项,选择【连接器-所有选项】依次修改下方几个关键位置。
附加选项 /IGNORE:4078 /safeseh:no
附加依赖项 ntoskrnl.lib;ndis.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib
固定基址 此处需要清空
忽略所有默认库 是 (/NODEFAULTLIB)
启用增量链接 否 (/INCREMENTAL:NO)
驱动程序 驱动程序 (/Driver)
入口点 DriverEntry
生成清单 否 (/MANIFEST:NO)
生成调试信息 是 (/DEBUG)
生成映射文件 是 (/MAP)
数据执行保护 是 (/NXCOMPAT)
随机基址 此处需要清空
子系统 本机 (/SUBSYSTEM:NATIVE)
当如上文件配置完