利用SetupDiGetClassDevs和SetupDiGetDeviceRegistryPropertyA获取显示卡驱动信息。
#include "stdafx.h"
#include <setupapi.h>
#pragma comment(lib,"setupapi.lib")
GUID pGUID= { 0x4D36E968 , 0xE325 , 0x11CE , 0xBF , 0xC1 , 0x08 , 0x00 , 0x2B , 0xE1 , 0x03 , 0x18};
int _tmain(int argc, _TCHAR* argv[])
{
HDEVINFO hDevInfo = 0;
SP_DEVINFO_DATA spDevinofData = {0};
char szClass[128]={0};
char szBuf[128] ={0};
DWORD dwData=0,i=1;
BOOL bRtn=FALSE;
//get the specified class
//这是就通过guid找到了类的信息。
hDevInfo = SetupDiGetClassDevs(&pGUID,0,NULL,DIGCF_PRESENT);
//这个时候我们可以同下面的函数来获得类的描述。比如guid为vga的时候dwdata返回值为显示适配器
SetupDiGetClassDescriptionA(&pGUID,szClass,128,&dwData);
printf("%d/n",dwData);
//枚举设备信息
spDevinofData.cbSize = sizeof(SP_DEVINFO_DATA);
for(i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&spDevinofData);i++)
{
//通过设备类,以及枚举出的设备信息数据获的具体的名称。
bRtn = SetupDiGetDeviceRegistryPropertyA(hDevInfo,&spDevinofData,SPDRP_DEVICEDESC,0L,(PBYTE)szBuf,128,0);
printf("%s/n",szBuf);
}
return 0;
}