|
|
枚举系统中已经安装的所有硬件设备 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
实现的主要部分代码:
#include <setupapi.h> #include <devguid.h> #include <regstr.h> #pragma comment(lib,"Setupapi.lib")
CListBox m_strList;
........
枚举所有硬件设备的主要实现代码:
m_strList.ResetContent();
HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; DWORD i;
// Create a HDEVINFO with all present devices. hDevInfo = SetupDiGetClassDevs(NULL, 0, // Enumerator 0, DIGCF_PRESENT | DIGCF_ALLCLASSES ); if (hDevInfo == INVALID_HANDLE_VALUE) { // Insert error handling here. return ; } // Enumerate through all devices in Set. DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i, &DeviceInfoData);i++) { DWORD DataT; LPTSTR buffer = NULL; DWORD buffersize = 0; // // Call function with null to begin with, // then use the returned buffer size // to Alloc the buffer. Keep calling until // success or an unknown failure. // while (!SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC, &DataT, (PBYTE)buffer, buffersize, &buffersize)) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) { // Change the buffer size. if (buffer) LocalFree(buffer); buffer = (char*)LocalAlloc(LPTR,buffersize); } else { // Insert error handling here. break; } }
m_strList.AddString(buffer); if (buffer) LocalFree(buffer); } if ( GetLastError()!=NO_ERROR && GetLastError()!=ERROR_NO_MORE_ITEMS ) { // Insert error handling here. return ; } // Cleanup SetupDiDestroyDeviceInfoList(hDevInfo);

|
|
相关文章:相关软件: |
|