gpt4 book ai didi

c++ - 编译使用 WinUsb 的应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:27 27 4
gpt4 key购买 nike

我正在编写一个使用 WinUsb.dll 与 USB 设备通信的应用程序。这是一个用户模式库,允许通过在内核中作为其驱动程序安装的 winusb.sys 与设备进行通信。

我正在使用 C++ 和 Visual Studio 2008 编写此应用程序。

header WinUsb.h 位于 Windows DDK 中,因此我添加了包含路径“D:\WinDDK\7100.0.0\inc\ddk”。然后我得到一个错误,找不到 WinUsb.h 包含的 Usb.h,Usb.h 也在 ddk 中,但在不同的目录中,所以我添加“D:\WinDDK\7100.0.0\inc\api”作为一个包含目录。

一旦我添加了这条路径,所有东西都进了厕所,我开始在 stdio.h 和其他一些奇怪的地方出现编译错误。

我真的不想使用 DDK 构建系统和编译器来简单地使用这个 DLL,这是我使用 WinUsb 而不是编写适当的驱动程序的主要原因之一。

有没有人使用 WinUsb.dll 和 Visual Studio 构建过应用程序?

最佳答案

我正在编写一个跨平台的 USB 库,使用 DDK 构建环境会使我的构建过程更加复杂。

WinUsb 旨在供客户端应用程序用于加载 WinUsb.sys 作为其驱动程序的设备。但是,似乎没有打包用于用户模式程序(不包括 UMDF 驱动程序)的 WinUsb header 版本。

我最终做的是将几个支持 winusb.h 的头文件从 DDK 复制到一个私有(private)目录中,然后我在构建期间将该目录作为包含目录引用。

这些是我需要复制的标题:

POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h

一旦我将这些包含在私有(private)目录中并与 DDK 中的 winusb.lib 链接,我就能够在 Visual Studio 中编译和运行我的项目。

我不知道我是否会推荐这种方法,因为当 DDK 版本之间的 header 发生变化时它可能会很糟糕,但我会打开一个 CONNECT 错误,看看我是否可以让 MS 为创建一个 WinUsb header 包在客户端用户模式应用程序中使用。

关于c++ - 编译使用 WinUsb 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1492982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com