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

标签 c++ winusb wdf

我正在编写一个使用 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/

相关文章:

c - 在设备固件中支持 WinUSB

c# - 将 Windows XP-8 下的音频设备访问限制为特定应用程序/用户

c++ - 从 IRQL=DISPATCH_LEVEL (KbFilter/KMDF) 发送 IOCTL

c++ - 关于如何将旧式嵌入式应用程序限制为实时应用程序的建议

windows - 我可以将 WinUSB 与内置 HID 驱动程序一起使用吗?

google-chrome - Windows 10 WebUSB 打印问题与 Zebra LP2844 DOMException : Access denied

Windows 示例驱动程序可以正确构建,但无法安装,

c++ - 如何将 MySQL 与 codeblocks IDE 集成

c++ - nullptr 是如何定义的?

c++ - 删除指向不同指针类型的复制指针会导致内存泄漏吗?