这几天下决心学习一下Windows下的驱动程序开发。
首先找到一本书的电子版,是武安河的《Windows设备驱动程序WDF》。下载了书籍附带的源代码,准备练习运行。书上没有介绍具体的开发环境和运行环境,所以我在Windows 7 64位版上安装了 Windows WDK 7.1(7600)。
运行过程中我使用Windows7 check build x64生成环境。首先实验 CharSample例子。书上没有介绍如何安装驱动,曾经尝试直接使用设备管理器安装,但是提示没有找到驱动。找了多份资料,终于提到需要拷贝开发环境中的WdfCoInstaller{xxxxx}.dll到所生成的驱动程序所在文件夹,并使用devcon命令进行安装。
但是,安装过程仍然失败。历经多次实验之后,终于确定问题在安装的 inf文件上。首先,书上附带的inf文件中是 WdfCoInstaller01007.dll,但是我的开发环境中对应的文件是WdfCoInstaller01009.dll。第二,书上附带的inf文件中的系统架构是NTx86,是32位版本。但是我的运行环境的是 64位版本,需要使用NTAMD64。对inf文件做了两处替换之后,驱动程序终于运行成功了。
另外有些小细节也要注意:Windows7默认情况需要对驱动程序进行签名。正常情况下没有签名的驱动程序是不能安装的。可以在启动时按F8进入启动菜单,选择“高级启动选项”中的“禁用驱动程序签名强制”选项。
一般情况下,可以在禁用强制驱动程序签名后,生成对应架构的驱动程序。然后将WdfCoInstaller{xxxxx}.dll文件拷贝到驱动程序所在文件夹,然后使用devcon命令安装驱动程序。实际上也可以直接利用系统的设备管理器安装驱动。安装成功后,可以在设备管理器中查看到所安装的设备。然后,可以利用对应的应用程序进行测试。
特地记录,供后来学习者参考。