基于模板编写通用 Windows 驱动程序 (KMDF)

本主题介绍了如何使用内核模式驱动程序框架 (KMDF) 编写通用 Windows 驱动程序。首先使用 Microsoft Visual Studio 模板,然后在单独的计算机上部署和安装你的驱动程序。

若要开始操作,请确保你已安装 Visual Studio 2015 和 Windows 驱动程序工具包 (WDK) 10。可从 Windows 硬件开发人员中心下载它们。

当安装 WDK 时,需要包含 Windows 调试工具

创建和构建驱动程序包

  1. 打开 Microsoft Visual Studio。 在“文件”菜单上,选择“新建 > 项目”。这将打开“新建项目”对话框,如下所示。
  2. 在“新建项目”对话框中,选择“WDF”
  3. 在中间窗格中,选择“内核模式驱动程序(KMDF)”
  4. 在“名称”字段中,输入“KmdfDriver”作为项目名称。

    注意  *在创建新的 KMDF 或 UMDF 驱动程序时,必须选择一个长度不超过 32 个字符的驱动程序名称。此长度限制在 wdfglobals.h 中定义。
     
  5. 在“位置”字段中,输入要在其中创建新项目的目录。
  6. 选中“创建解决方案的目录”。单击“确定”

    “新建项目”对话框的屏幕截图,显示选中的 WDF 和内核模式驱动程序

    Visual Studio 创建了一个项目和一个解决方案。你可以在“解决方案资源管理器”窗口中看到它们,如下所示。(如果“解决方案资源管理器”窗口不可见,则从“视图”菜单中选择“解决方案资源管理器”。)该解决方案包含名为 KmdfDriver 的驱动程序项目。若要查看驱动程序源代码,则打开“源文件”下的任何文件。Driver.c 和 Device.c 是不错的开始位置。

    解决方案资源管理器的屏幕截图,显示驱动程序项目和包项目中的文件
  7. 在“解决方案资源管理器”窗口中,右键单击“解决方案‘KmdfSmall’(1 个项目)”,然后选择“配置管理器”。为驱动程序项目和程序包项目选择配置和平台。在本练习中,我们选择调试和 x64。

  8. 若要生成驱动程序并创建驱动程序包,请从“生成”菜单中选择“生成解决方案”。Visual Studio 在“输出”窗口中显示构建进度。(如果“输出”窗口不可见,则从“视图”菜单中选择“输出”。)

    当你已验证解决方案成功生成后,可以关闭 Visual Studio。

  9. 若要查看生成的驱动程序,则在“文件资源管理器”中,依次转到你的“KmdfDriver”文件夹和“x64\Debug\KmdfDriver”。该文件夹包括:

    • KmdfDriver.sys -- 内核模式驱动程序文件
    • KmdfDriver.inf -- 在安装驱动程序时 Windows 使用的信息文件

部署和安装驱动程序

通常,当你测试和调试驱动程序时,调试器和驱动程序会在不同的计算机上运行。运行调试器的计算机称为“主计算机”,运行驱动程序的计算机称为“目标计算机”。目标计算机也称为测试计算机。有关调试驱动程序的详细信息,请参阅 Windows 调试工具

到目前为止,你已在主计算机上使用 Visual Studio 构建了驱动程序。现在,你需要配置目标计算机。按照预配计算机以便进行驱动程序部署和测试 (WDK 10) 中的说明进行操作。然后,你可以部署、安装、加载和调试驱动程序:

  1. 在主机上,打开 Visual Studio 中的解决方案。你可以在 KmdfDriver 文件夹中双击解决方案文件 KmdfDriver.sln。
  2. 在“解决方案资源管理器”窗口中,右键单击“KmdfDriver”项目,然后选择“属性”
  3. 在“KmdfDriver Package 属性页”窗口的左侧窗格中,转到“配置属性”>“驱动程序安装”>“部署”
  4. 选中“部署前删除以前的驱动程序版本”
  5. 对于“远程计算机名”,请选择配置用于测试和调试的计算机名。在本练习中,我们使用名为 MyTestComputer 的计算机。
  6. 选择“硬件 ID 驱动程序更新”,然后输入驱动程序的硬件 ID。在本练习中,硬件 ID 为 Root\KmdfDriver。单击“确定”

    “KmdfDriver Package 属性页”窗口的屏幕截图,显示选择的“部署驱动程序安装”
    注意  在本练习中,硬件 ID 未标识硬件的真实部分。它标识了虚构设备,该设备位于设备树中,作为根节点的子节点。对于真实的硬件,不选择“硬件 ID 驱动程序更新”,选择“安装和验证”

    你将在驱动程序的信息 (INF) 文件中看到硬件 ID。在“解决方案资源管理器”窗口中,转到“KmdfDriver”>“驱动程序文件”,然后双击“KmdfDriver.inf”。硬件 ID 位于 [Standard.NT$ARCH$] 之下。

    
    [Standard.NT$ARCH$]
    %KmdfDriver.DeviceDesc%=KmdfDriver_Device, Root\KmdfDriver
    
    
     
  7. 在“调试”菜单上,选择“启动调试”或按键盘上的 F5。
  8. Visual Studio 首先在“输出”窗口中显示进度。然后,它将打开“调试器即时窗口”并继续显示进度。

    等待直至已在目标计算机上部署、安装以及加载驱动程序。此操作可能会花费一两分钟的时间。

  9. 在“调试”菜单上,选择“全部中断”。主计算机上的调试器将中断目标计算机。在“调试器即时窗口”中,你将看到内核调试命令提示符:kd>

    调试器即时窗口中命令提示符的屏幕截图
  10. 此时,可以试验调试器,方法是在 kd> 提示符处输入命令。例如,可以尝试使用以下命令:

  11. 若要让目标计算机再次运行,请从“调试”菜单中选择“继续”。
  12. 若要停止调试会话,请从“调试”菜单中选择“停止调试”

相关主题

开发、测试以及部署驱动程序
Windows 调试工具
编写第一个驱动程序

 

 

显示: