当前位置:网站首页 > Kotlin开发 > 正文

windows驱动开发(Windows驱动开发技术详解)



可以结合使用 Microsoft Visual Studio 2019 与 Windows 驱动程序工具包 (WDK) 版本 2004 来生成 Windows 驱动程序。 可从 Windows 硬件开发人员中心下载工具包和工具。

在许多情况下,只要驱动程序不使用任何用户模式组件,就可以将旧的内核模式驱动程序重新编译为 Windows 驱动程序。 旧的 WDM 和 KMDF 驱动程序应该能够重新编译为定目标到 Windows 10 的 Windows 驱动程序,而无需转换。 虽然这些驱动程序可以编译而不需要任何转换,但这并不意味着驱动程序符合 Windows 驱动程序的所有要求。 有关 Windows 驱动程序要求的详细信息,请参阅 Windows 驱动程序开发入门。

相比之下,现有用户模式驱动程序可能需要修改才能编译为 Windows 驱动程序。 具体来说,驱动程序包在 UWP 之外不能有任何依赖项。 例如,仅部分 Win32 API 属于 UWP。

  1. 在 Visual Studio 2019 中,打开现有的驱动程序项目。
  2. 在“解决方案资源管理器”窗格中,选择并按住(或右键单击)解决方案,然后选择“配置管理器”。 将目标操作系统设置为 Windows 10。
  3. 选择并按住(或右键单击)驱动程序项目,然后选择“属性”。 在“配置属性”->“驱动程序”下,验证“目标平台”是否设置为“Windows 驱动程序”。 要生成只在 Windows 10 桌面版中运行的驱动程序,请选择“桌面”
  4. 生成驱动程序。 你可能会遇到链接器错误。
  5. 浏览错误日志,逐个修复错误。 请参阅文档中的各个参考页面,以寻找可能的替换 API。 如果无法替换,则可能需要重新设计驱动程序。
  1. 使用模板来新建驱动程序(转到“文件”->“新项目”->“新建项目”->“项目类型”->“驱动程序”,然后>选择所需的模板)。
  2. 创建项目后,在“解决方案资源管理器”窗格中,选择并按住(或右键单击)解决方案,然后选择“配置管理器”。 将“活动解决方案配置”设置为所需的目标 Windows 版本,并将“活动解决方案平台”设置为“Win32”或“x64”。 如果 Arm 未列出,请选择 <新建…> 为 Arm 生成。

    如果选择 Windows 10,驱动程序模型将默认为“通用”

    要手动更改驱动程序模型,请选择并按住(或右键单击)驱动程序项目,然后选择“属性”。 在“配置属性”->“驱动程序设置”->“常规”下,找到“目标平台”条目。 选择“Windows 驱动程序”。 Microsoft Visual Studio 使用此设置确定要链接的库。

    注意:无法为低于 Windows 10 版本 1809 的 Windows 版本生成 Windows 驱动程序

  3. 可能需要修改 .inf 文件以指定提供程序,指定为 %ManufacturerName% 令牌,该令牌稍后将在 INF 文件的 Strings 部分中展开。 例如:
     
  4. 现在可以生成解决方案。 Visual Studio 链接所需库并生成 .cat 文件、.inf 文件和驱动程序二进制文件。
  1. 使用模板来新建驱动程序(转到“文件”->“新项目”->“新建项目”->“项目类型”->“驱动程序”,然后>选择所需的模板),并选择“适用于驱动程序的空桌面应用程序(通用)”或“适用于驱动程序的空 Dll (通用)”。
  2. 创建项目后,在“解决方案资源管理器”窗格中,选择并按住(或右键单击)解决方案,然后选择“配置管理器”。 将“活动解决方案配置”设置为所需的目标 Windows 版本,并将“活动解决方案平台”设置为“Win32”或“x64”。 如果 Arm 未列出,请选择 <新建…> 为 Arm 生成。 如果选择 Windows 10,应用程序模型将默认为“通用”。 要手动更改目标平台,请选择并按住(或右键单击)驱动程序项目,然后选择“属性”。 在“配置属性”->“驱动程序设置”->“常规”下,找到“目标平台”条目。
  3. 生成解决方案。

有关生成驱动程序时可以在在 Visual Studio 中使用的配置设置的信息,请参阅使用 WDK 生成驱动程序。

到此这篇windows驱动开发(Windows驱动开发技术详解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 测试驱动开发(测试驱动开发的关键过程)2025-10-11 15:54:08
  • 测试驱动开发的含义(测试驱动开发的含义是?)2025-10-11 15:54:08
  • Baas接口标准(二)——对象类型定义规则之用法、定义规则、字段参数的用法之标量类型、枚举类型、列表和非空、输入类型 & 服务端开发-resolver函数参数用法之parent参数、context参数2025-10-11 15:54:08
  • 网络爬虫开发(四)-爬虫基础——环境准备、定义options接口、抽取公共部分代码、定义抽象方法、实现TeacherPhotos类、实现NewsList类及总结2025-10-11 15:54:08
  • 27个适合上班摸鱼的网页游戏平台,游戏党必备2025-10-11 15:54:08
  • 鸿蒙编程入门教程 菜鸟教程(鸿蒙编程开发教程)2025-10-11 15:54:08
  • 苹果开发者账号每年需要续费吗?(苹果开发者账号每年需要续费吗安全吗)2025-10-11 15:54:08
  • 日志管理功能(日志管理功能开发要多久)2025-10-11 15:54:08
  • windows驱动开发技术详解 豆瓣(windows驱动开发陈志远)2025-10-11 15:54:08
  • 测试驱动开发除了让开发者更清晰的理解问题(测试驱动开发除了让开发者更清晰的理解问题还有什么)2025-10-11 15:54:08
  • 全屏图片