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

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

在Windows DDK中可以找到 header WinUsb.h,因此我添加了包含路径“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

将这些文件包含在专用目录中并与DDK中的winusb.lib链接后,便可以在Visual Studio中编译并运行我的项目。

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

10-01 19:31