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

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

标题winusb.h在Windows DDK中找到,因此我添加了“ d: winddk 7100.0.0 inc inc ddk”。然后,我遇到一个错误,即找不到usb.h winusb.h包含的usb.h也在DDK中,但在另一个目录中,因此我添加了“ d: winddk 7100.0.0.0.0 inc api” as as as as as as包括dir。

一旦我添加了这条路,一切都会在厕所里进行,我开始在stdio.h和其他许多怪异的地方遇到编译错误。

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

是否有人使用winusb.dll和Visual Studio构建了一个应用程序?

有帮助吗?

解决方案

我正在努力编写跨平台USB库,并使用DDK构建环境会使我的构建过程变得更加复杂。

Winusb的目的是由客户端应用程序使用,用于加载Winusb.sys作为驱动程序的设备。但是,似乎没有包装用于用户模式程序的Winusb标头的版本(不包括UMDF驱动程序)。

我最终要做的是复制少数支持winusb.h从DDK出发并进入私人目录的标题,然后我将该目录作为构建过程中的目录将目录引用为“包含目录”。

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

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

一旦我将这些包含在一个私人目录中并与DDK中的winusb.lib链接,我就可以在Visual Studio中编译和运行我的项目。

我不知道我是否会推荐这种方法,因为当标题在DDK版本之间更改时可能会很糟糕,但是我会打开一个连接错误,看看我是否可以让MS创建一个winusb标题包,以便在客户端中使用用户模式应用程序。

其他提示

从历史上看,DDK和SDK的表现不佳,但是在Vista发布之前的某个时候解决了这个问题。但是,似乎您可能正在将一个SDK的一部分与另一个SDK的一部分混合在一起,这不好。我要么使用DDK构建环境,要么至少查看DDK环境设置并复制的包含路径 确切地 在VS项目设置中。

请注意,您可以使用DDK构建环境,并且仍然可以通过创建“ MakeFile项目”来使用VS IDE,或者您可以使用OSR或Hollistech的DDKBuild工具之类的东西:

我还没有使用过这些,因此我不确定它们的工作方式,但请注意,尽管它们具有相似的名称和使用,但它们是不同的工具。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top