通过Windows注册表获取U盘、移动硬盘和USB读卡器等设备的PID、VID和序列号
http://blog.csdn.net/trustbo/article/details/50057463
LPCTSTR Regkey = "SYSTEM\\CurrentControlSet\\services\\USBSTOR\\enum\\";
DWORD dwInsTime = 0;
DWORD dwType = REG_DWORD;
DWORD cbData = sizeof(DWORD);
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, Regkey, 0, KEY_ALL_ACCESS, &hKey);
DWORD tUsbNum = 0;
RegQueryValueEx(hKey, "Count", NULL, &dwType, (PBYTE)&tUsbNum, &cbData);
printf("tUsbNum=%d\n", tUsbNum);
dwType = REG_SZ;
for (int i = 0; i < tUsbNum; i++){
TCHAR path[255] = { 0 };
sprintf_s(path, "%d", i);
//printf(path);
TCHAR szBuffer[255] = { 0 };
cbData = 255;
RegQueryValueEx(hKey, path, NULL, &dwType, (PBYTE)&szBuffer, &cbData);
printf("szBuffer=%s\n", szBuffer);
}
RegCloseKey(hKey);
注意,下图中的0,1,2不是物理硬盘号。