鼠标,键盘和其他HID设备的唯一标识符
Unique Identifier for Mouse,Keyboard and other HID devices
我有一个MFC应用程序,用于在窗口中查找设备的详细信息。USB 存储设备的 PnPID 在每个系统中都是唯一的。但在鼠标键盘的情况下,同一设备的每台计算机上的 PnPID 是不同的。有没有办法使用 C++ 查找鼠标、键盘和 HID 的唯一标识符。如果有人知道 HID 设备或鼠标和键盘的唯一标识符,请分享。这是我的代码。
while(SetupDiEnumDeviceInfo(hDevInfo,lCount++,&DevInfoData))
{
///////////////////////////////////////
DWORD dwDataTypeHardwareid;
LPTSTR pszBufferHardwareid = NULL;
LPTSTR pszBufferPnPid = NULL;
DWORD dwBuffSizeHardwareid = 0;
int iRetValHardwareid = 1;
///////////////////////////////////////
iRetValHardwareid = SetupDiGetDeviceRegistryProperty(hDevInfo, &DevInfoData, SPDRP_HARDWAREID, &dwDataTypeHardwareid, (PBYTE)pszBufferHardwareid, dwBuffSizeHardwareid, &dwBuffSizeHardwareid);
DWORD dwErr = GetLastError();
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
if (pszBufferHardwareid)
LocalFree(pszBufferHardwareid);
//// / //
pszBufferHardwareid = (char *)LocalAlloc(LPTR,dwBuffSizeHardwareid * 2);
iRetValHardwareid=SetupDiGetDeviceRegistryProperty(hDevInfo, &DevInfoData, SPDRP_HARDWAREID, &dwDataTypeHardwareid, (PBYTE)pszBufferHardwareid, dwBuffSizeHardwareid, &dwBuffSizeHardwareid);
}
if(StrStrI(pszBufferHardwareid,"HID\"))
{
if(StrStrI(pszBufferClass,"Mouse"))
{
CM_Get_Device_ID(DevInfoData.DevInst, pszBufferPnPid, MAX_PATH, 0); //**Not unique in different machines**
CString strDevid = (CString)pszBufferPnPid;
strDevid.Trim();
strDevid.MakeUpper();
SaveDeviceDetails(strDevid); //Method to save device details to DB
}
}
}
由于OP澄清了他正在寻找HID设备的唯一标识符,我建议尝试使用设备序列号,尽管不能保证它是唯一的。
在 Win32 上,可以使用 HidD_GetSerialNumberString 函数检索 HID 设备的序列号。
相关文章:
- 如何在C++中为增加但记住删除先前对象的对象分配唯一标识符
- 按唯一标识符描述数字列表
- 获取窗口监视器的唯一标识符
- 鼠标,键盘和其他HID设备的唯一标识符
- 从 Android 上的 c++ 获取唯一的设备标识符
- 没有成员作为唯一标识符的两个类实例的比较
- 在Windows中获得C 中的唯一硬件标识符
- 如何构造本地唯一标识符名称
- 在编译时生成唯一的类型标识符
- 如何将目录路径转换为唯一的数字标识符 (Linux/C++)
- 获取系统的唯一标识符(而不是MAC地址)
- 生成可以区分 ID(Foo::a()) 和 ID(Foo::b()) 的唯一标识符
- 为iOS设备创建唯一标识符
- 如何获取计算机的唯一标识符
- CRTP和唯一的持久标识符
- 如何以跨平台的方式获得(几乎)唯一的系统标识符
- 为类型分配唯一的整型标识符,编译时
- protocolbuffers-c++唯一的持久类标识符
- 缩短唯一标识符
- 通过类型标识符表示类的数字唯一标识符