我正在编写一个使用WinUsb.dll与Usb设备通信的应用程序。这是一个用户模式库,允许通过在内核中作为驱动程序安装的winusb.sys与设备通信。
我正在用Visual Studio2008用C++编写这个应用程序。
头文件WinUsb.h位于Windows DDK中,因此我添加了包含路径"D:\WinDDK\7100.0.0\inc\ddk“。然后我得到一个错误,Usb.h无法找到WinUsb.h包含的内容,Usb.h也在ddk中但在不同的目录中,所以我添加了"D:\WinDDK\7100.0.0\inc\api“作为包含目录。
一旦我添加了这个路径,所有的东西都被放到了马桶里,我开始在stdio.h和其他一些奇怪的地方得到编译错误。
我真的不想为了简单地使用这个动态链接库而使用DDK编译系统和编译器,这是我使用WinUsb而不是编写合适的驱动程序的主要原因之一。
有人使用WinUsb.dll和Visual Studio构建过应用程序吗?
发布于 2009-10-03 18:41:02
我正在编写一个跨平台的USB库,使用DDK构建环境将使我的构建过程变得更加复杂。
对于将WinUsb.sys作为驱动程序加载的设备,客户端应用程序应使用WinUsb。但是,似乎还没有打包用于用户模式程序(不包括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报头包。
发布于 2009-09-29 17:14:21
从历史上看,DDK和SDK并不能很好地配合使用,但这个问题在Vista发布之前就已经解决了。但是,您可能会将一个SDK的部分与另一个SDK的部分混合在一起,这是不好的。我要么使用DDK构建环境,要么至少查看一下DDK环境设置的INCLUDE路径,并在VS项目设置中准确地复制它。
请注意,您可以使用DDK构建环境,并通过创建一个'makefile项目‘仍然使用VS IDE,或者您可以使用OSR或Hollistech的DDKBUILD工具:
我没有使用过它们,所以我不确定它们的工作效果如何,但请注意,尽管它们的名称和用途相似,但它们是不同的工具。
https://stackoverflow.com/questions/1492982
复制相似问题