通过注册表获取U盘的VID PID
USB存储类设备插入当前系统时,会在Windows注册表如下目录中进行登记:KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR\Enum,在其Count项中记录当前插入设备的个数。
代码如下:
BOOL getVidPid(GetUSBInfoP GetUSBInfo)
{
char lpRegPath[512] = { 0 };
char lpRegValue[256] = { 0 };
sprintf(lpRegPath, "SYSTEM\\CurrentControlSet\\services\\USBSTOR\\Enum");
sprintf(lpRegValue, "Count");
//
DWORD dwDataSize(0);
DWORD dwRegType1(REG_DWORD);
DWORD dwRegType2(REG_SZ);
LPBYTE lpRegDwordData(NULL);
LPBYTE lpRegSzData(NULL);
// 查询注册表中映射驱动器的设备信息
HKEY hKey;
long lRet = 0;
try
{
lRet = ::RegOpenKeyExA(
HKEY_LOCAL_MACHINE, // root key
lpRegPath, // 要访问的键的位置
0, //
KEY_READ, // 以查询的方式访问注册表
&hKey); // hKEY保存此函数所打开的键的句柄
}
catch(...)
{
return false;
}
if(lRet != ERROR_SUCCESS)
{
return false;
}
else
{
try
{
lRet = ::RegQueryValueE