21,600
社区成员
发帖
与我相关
我的任务
分享
for (DWORD i = 0; SetupDiEnumDeviceInfo ( m_hDevInfo, (ULONG)i, &m_DeviceInfoData ); i++ )
{
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
while ( !SetupDiGetDeviceRegistryProperty
(
m_hDevInfo,
&m_DeviceInfoData,
SPDRP_HARDWAREID,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize
) )
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
if (buffer)
{
LocalFree(buffer);
}
buffer = (LPTSTR)LocalAlloc(LPTR,buffersize);
}
else
{
break;
}
}
CString str(buffer);
if(str.Find("HF32A09") != -1)
{
代码到这,能找到设备,但是当系统有两个这样的设备的时候,没有办法区分。我看了一下设备范例ID是不一样的。我可以在注册表中读取设备范例ID中标识设备的数据串,但是这里需要获取当前设备的设备范例ID,然后我比较是不是我要找的设备。做过的朋友指教一下吧!
}
}
for (DWORD i = 0; SetupDiEnumDeviceInfo ( m_hDevInfo, (ULONG)i, &m_DeviceInfoData ); i++ )
{
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 0;
while ( !SetupDiGetDeviceRegistryProperty
(
m_hDevInfo,
&m_DeviceInfoData,
SPDRP_HARDWAREID,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize
) )
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
if (buffer)
{
LocalFree(buffer);
}
buffer = (LPTSTR)LocalAlloc(LPTR,buffersize);
}
else
{
break;
}
}
CString str(buffer);
if(str.Find("HF32A09") != -1)
{
代码到这,能找到设备,但是当系统有两个这样的设备的时候,没有办法区分。我看了一下设备范例ID是不一样的。我可以在注册表中读取设备范例ID中标识设备的数据串,但是这里需要获取当前设备的设备范例ID,然后我比较是不是我要找的设备。做过的朋友指教一下吧!
}
}