找回密码
 立即注册

编写 Hello World Windows 驱动程序 (KMDF)

2024-11-21 15:03| 发布者: admin| 查看: 180| 评论: 0|来自: 微软

摘要: 本文内容创建和生成驱动程序编写第一个驱动程序代码生成驱动程序部署驱动程序显示另外 3 个本文介绍如何使用 Kernel-Mode Driver Framework (KMDF) 编写小型通用 Windows驱动程序,然后在单独的计算机上部署和安装驱 ...
继续下一页

  • 部署驱动程序

    通常,在测试和调试驱动程序时,调试程序和驱动程序会在不同的计算机上运行。 运行调试程序的计算机称为“主计算机”,运行驱动程序的计算机称为“目标计算机”。 目标计算机也称为“测试计算机” 。

    到目前为止,你已在主计算机上使用 Visual Studio 生成了驱动程序。 现在,需要配置目标计算机。

    1. 按照预配计算机以便进行驱动程序部署和测试 (WDK 10) 中的说明进行操作。

       提示

      按照步骤使用网络电缆自动预配目标计算机时,请记下端口和密钥。 以后,你将在调试步骤中使用它们。 在此示例中,我们将使用 50000 作为端口,使用 1.2.3.4 作为密钥。

      在实际的驱动程序调试方案中,我们建议使用 KDNET 生成的密钥。 有关如何使用 KDNET 生成一个随机密钥的详细信息,请参阅调试驱动程序 - 分步实验室(Sysvad 内核模式)主题。

    2. 在主计算机上,在 Visual Studio 中打开你的解决方案。 可以在 KmdfHelloWorld 文件夹中双击解决方案文件 KmdfHelloWorld.sln。

    3. 在“解决方案资源管理器”窗口中,选择并按住(或右键单击)KmdfHelloWorld 项目,然后选择“属性” 。

    4. 在“KmdfHelloWorld 属性页”窗口中,转到“配置属性”>“驱动程序安装”>“部署”,如下所示。

    5. 选中“部署前删除以前的驱动程序版本” 。

    6. 对于“目标设备名称” ,请选择配置用于测试和调试的计算机名。 在本练习中,我们使用名为 MyTestComputer 的计算机。

    7. 选择“硬件 ID 驱动程序更新” ,然后输入驱动程序的硬件 ID。 在本练习中,硬件 ID 为 Root\KmdfHelloWorld。 选择“确定”。

      kmdfhelloworld 属性页窗口的屏幕截图,其中选择了部署驱动程序安装选项。

       备注

      在本练习中,硬件 ID 不标识真实的硬件。 它标识了虚构设备,该设备位于设备树中,作为根节点的子节点。 对于真实的硬件,不要选择“硬件 ID 驱动程序更新” ,而要选择“安装并验证” 。 你将在驱动程序的信息 (INF) 文件中看到硬件 ID。 在“解决方案资源管理器”窗口中,转到“KmdfHelloWorld”>“驱动程序文件”,然后双击 KmdfHelloWorld.inf。 硬件 ID 位于 [Standard.NT$ARCH$] 下。

      C++
      [Standard.NT$ARCH$]
      %KmdfHelloWorld.DeviceDesc%=KmdfHelloWorld_Device, Root\KmdfHelloWorld
      
    8. 在“生成”菜单上,选择“部署解决方案”。 Visual Studio 会自动将安装和运行驱动程序所需的文件复制到目标计算机。 部署可能需要一两分钟。

      部署驱动程序时,驱动程序文件将复制到测试计算机上的 %Systemdrive%\drivertest\drivers 文件夹。 如果部署期间发生错误,可以查看这些文件是否已复制到测试计算机。 请确认 .inf、.cat、测试证书和 .sys 文件以及其他任何必要的文件均位于 %systemdrive%\drivertest\drivers 文件夹中。

      有关部署驱动程序的详细信息,请参阅将驱动程序部署到测试计算机

    安装驱动程序

    将 Hello World 驱动程序部署到目标计算机后,即可安装该驱动程序。 如果你之前使用“自动”选项通过 Visual Studio 预配了目标计算机,则在预配过程中,Visual Studio 会将目标计算机设置为运行测试签名驱动程序。 现在,你只需使用 DevCon 工具安装驱动程序即可。

    1. 在主计算机上,导航到 WDK 安装中的“Tools”文件夹,然后找到 DevCon 工具。 例如,在以下文件夹中查看:

      C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe

      将 DevCon 工具复制到远程计算机。

    2. 在目标计算机上,导航到包含驱动程序文件的文件夹,然后运行 DevCon 工具,以安装驱动程序。

      1. 下面是用于安装驱动程序的 devcon 工具的常规语法:

        devcon install <INF file><hardware ID>

        安装此驱动程序所需的 INF 文件是 KmdfHelloWorld.inf。 INF 文件包含用于安装驱动程序二进制文件 KmdfHelloWorld.sys 的硬件 ID。 回想一下,位于 INF 文件中的硬件 ID 为 Root\KmdfHelloWorld。

      2. 以管理员身份打开命令提示符窗口。 导航到内置驱动程序 .sys 文件所在的文件夹,然后输入以下命令:

        devcon install kmdfhelloworld.inf root\kmdfhelloworld

        如果你收到一条关于 devcon 未被识别的错误消息,请尝试添加 devcon 工具的路径。 例如,如果已将其复制到目标计算机上名为 C:\Tools 的文件夹,则请尝试使用以下命令:

        c:\tools\devcon install kmdfhelloworld.inf root\kmdfhelloworld

        此时将显示一个对话框,指示测试驱动程序是未签名驱动程序。 选择“仍然安装此驱动程序”以继续。

        驱动程序安装过程中显示的安全警告的屏幕截图。

    调试驱动程序

    在目标计算机上安装 KmdfHelloWorld 驱动程序后,请从主计算机远程附加调试器。

    1. 在主计算机上,以管理员身份打开命令提示符窗口。 转到 WinDbg.exe 目录。 我们将使用作为 Windows 工具包安装一部分安装的 Windows 驱动程序工具包 (WDK) 的 x64 版本 WinDbg.exe。 下面是 WinDbg.exe 的默认路径:

      C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

    2. 使用以下命令启动 WinDbg 以连接到目标计算机上的内核调试会话。 端口和密钥的值应该与你预配目标计算机所使用的值相同。 我们将使用 50000 作为端口,使用 1.2.3.4 作为密钥。我们在部署步骤中使用过这些值。 K 标志指示这是内核调试会话。

      WinDbg -k net:port=50000,key=1.2.3.4

    3. 在“调试”菜单上,选择“中断”。 主计算机上的调试程序将中断目标计算机。 在“调试程序命令”窗口中,你可以看到内核调试命令提示符:kd> 。

    4. 此时,可以试验调试程序,方法是在 kd> 提示符处输入命令。 例如,可以尝试使用以下命令:

    5. 若要让目标计算机再次运行,请从“调试”菜单中选择“执行”,或者按“g”,然后按“Enter”。

    6. 若要停止调试会话,请从“调试”菜单中选择“分离调试器”。

       重要

      请确保在退出调试程序之前使用“执行”命令让目标计算机再次运行,否则目标计算机将仍然对你的鼠标和键盘输入无响应,因为它仍在与调试程序通话。


  • 123

    路过

    雷人

    握手

    鲜花

    鸡蛋

    相关分类

    QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

    GMT+8, 2024-12-4 01:50 , Processed in 0.058991 second(s), 16 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    返回顶部