11th
October
2007
在MFC应用程序中使用SetupDixxxx函数头文件的处理
posted in NT Kernel Study |SetupDixxxx是windows提供的一套非常实用的应用层硬件信息查询API。为了更好地和界面融合起来,MFC的程序经常需要调用这些函数。但是包含这些函数的setupapi.h以及其他的一些guid的头文件需要包含一些基础的windows定义。
最容易想到的就是包含DDK的定义文件,因为这些函数出现在了DDK的文档中(当然也在MSDN中)。所以一上来就include了<ntddk.h>,这样就导致了很多redefinition的问题(和winnt.h冲突)。
其实这些函数在 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\ 下也有一套,所以不用包含DDK那些头文件了。只要包含下面几个就可以了:
#include <windows.h>
#include <initguid.h> // Guid definition
#include <devguid.h>
#include <setupapi.h>
这里winnt.h还是不能替代windows.h,否则会出现CONST没定义等问题。
同时还要在Project setting中关掉 precompiled headers (stdafx.h)