2012-07-16 154 views
-1

我们正在开发一个DLL,它从WinDDK中调用通用的WinUsb函数。该DLL需要在Windows的32位和64位版本中工作,包括xp,vista,win7和win8。为几个Windows版本(xp,win7,vista)开发驱动程序

我的问题是,我们如何通过定位所有这些平台来管理Visual Studio 2010解决方案? WINDDK库是为每个操作系统不同,所以如果我引用库从代码:

#### #pragma comment (lib , "C:\\WinDDK\\7600.16385.1\\lib\\wlh\\i386\\winmm.lib") 

,或者从project options->includes section引用库,这个项目才成为正确的特定目标架构。 (在这个例子中,Vista 32位,因为我包括'wlh')。

我们是否应该为每个不同的操作系统目标创建不同的项目?

+0

你正在冒很大的麻烦,你不用ddk创建DLL,你不使用VS.用Walter Oney的一本书教育自己。 – 2012-07-16 09:06:36

+0

@Hans:也许我的问题是误导。我正在使用VS创建一个调用泛型WinUsb函数的DLL。为了调用WinUsb函数,我从DDK引用适当的winusb.lib函数。 – SomethingBetter 2012-07-16 09:38:33

+0

@SomethingBetter:汉斯是对的。您正在尝试调用用于驱动程序的函数,并且您正尝试使用不适用于驱动程序的开发平台来执行此操作。你可能会也可能不会逃避这一点,但这两种方式都会遇到很多麻烦。 – 2012-07-18 14:36:42

回答

0

WDK/DDK版本不限制您为其构建的操作系统版本。您可以将目标OS作为构建环境/编译参数传递。

0

我想你应该通过DDK构建DLL,并在你的VS项目中使用它。

你可以为你的VS项目编写预生成事件来运行一个批处理文件,该文件将构建DLL并将其放置在项目的一些众所周知的地方。另外,您可能需要为每个要为其构建的平台创建不同的项目配置(对于32位和64位至少不同),并运行适当的DLL生成命令。