如何查看設備的guid
『壹』 在windows系統哪些API可以通過GUID打開USB設備
根據當前機器時間,硬碟序列號,網卡mac地址等等生成的。如果數值和字串符是StringFromIID
StringFromGUID2結果CoCreateGuid
Creates a GUID, a unique 128-bit integer used for CLSIDs and interface identifiers.
HRESULT CoCreateGuid(
GUID *pguid //Pointer to the GUID on return
);
Parameter
pguid
[out] Pointer to the requested GUID on return.
Return Value
S_OK
The GUID was successfully created.
Win32 errors are returned by UuidCreate but wrapped as an HRESULT.
Remarks
The CoCreateGuid function calls the RPC function UuidCreate, which creates a GUID, a globally unique 128-bit integer. Use the CoCreateGuid function when you need an absolutely unique number that you will use as a persistent identifier in a distributed environment.To a very high degree of certainty, this function returns a unique value – no other invocation, on the same or any other system (networked or not), should return the same value.
Requirements
Windows NT/2000/XP: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Declared in objbase.h.
Library: Use ole32.lib.
『貳』 掃描USB硬體時,怎麼獲取設備的GUID
HANDLE MyHid::OpenDevice(bool isOverLapped)
{
GUID hidGuid;
HidD_GetHidGuid(&hidGuid);
hDevInfo = SetupDiGetClassDevs(&hidGuid,NULL,NULL,(DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
if (hDevInfo == INVALID_HANDLE_VALUE)
{
return INVALID_HANDLE_VALUE;
}
SP_DEVICE_INTERFACE_DATA devInfoData;
devInfoData.cbSize = sizeof (SP_DEVICE_INTERFACE_DATA);
int deviceNo = 0;
SetLastError(NO_ERROR);
while (GetLastError() != ERROR_NO_MORE_ITEMS)
{
if (SetupDiEnumInterfaceDevice (hDevInfo,0,&hidGuid,deviceNo,&devInfoData))
{
ULONG requiredLength = 0;
(hDevInfo,&devInfoData,NULL,0,&requiredLength,NULL);
PSP_INTERFACE_DEVICE_DETAIL_DATA devDetail = (SP_INTERFACE_DEVICE_DETAIL_DATA*) malloc (requiredLength);
devDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if(!(hDevInfo,&devInfoData,devDetail,requiredLength,NULL,NULL))
{
free(devDetail);
SetupDiDestroyDeviceInfoList(hDevInfo);
return INVALID_HANDLE_VALUE;
}
if (isOverLapped)
{
hidHandle = CreateFile(devDetail->DevicePath,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
}
else
{
hidHandle = CreateFile(devDetail->DevicePath,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
}
free(devDetail);
if (hidHandle==INVALID_HANDLE_VALUE)
{
SetupDiDestroyDeviceInfoList(hDevInfo);
free(devDetail);
return INVALID_HANDLE_VALUE;
}
_HIDD_ATTRIBUTES hidAttributes;
if(!HidD_GetAttributes(hidHandle, &hidAttributes))
{
CloseHandle(hidHandle);
SetupDiDestroyDeviceInfoList(hDevInfo);
return INVALID_HANDLE_VALUE;
}
if (USB_VID == hidAttributes.VendorID&& USB_PID == hidAttributes.ProctID)
{
m_isDevicesOK=true;
break;
}
else
{
CloseHandle(hidHandle);
++deviceNo;
m_isDevicesOK=false;
}
}
}
SetupDiDestroyDeviceInfoList(hDevInfo);
return hidHandle;
}
#define USB_VID 0x08fe
#define USB_PID 0x0003
//自定義的設備號.
你可以在設備管理器裡面找到你自己的需要的 ID 然後 但看實例句柄.
『叄』 做驅動開發時關於GUID的問題
前一個是設備介面類GUID(Device Interface class GUID),是由驅動程序負責添加的該GUID出現在注冊表中KKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses子鍵下。
介面類GUID下有曾經安裝過的設備,鍵值就是設備的路徑(設備介面名)。而安裝類則是在設備安裝時由Windows安裝器添加到注冊表中。通常安裝器從安裝驅動的inf文件中獲取這個安裝類GUID,例如安裝HID設備的inf文件是Windows/inf文件夾下的input.inf,打開它可以找到ClassGuid={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx},設備安裝類出現在注冊表的KKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class子鍵下,與介面類GUID類似,安裝類GUID下也有曾經安裝過的設備,不過這是用數字表示的。
另外,在注冊表的KKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum子鍵下有不同設備的分類,在分類下可以找到對應的設備,裡面記錄的安裝時的安裝類GUID
『肆』 海康錄像機設備激活成功以後是否導出guid文件用於密碼重置呢
可以導出,導出還是比較安全的,不過實際操作中一般都不導出
『伍』 如何得到設備的GUID值
1,普通時候我們查看類似的IMEI值,都會通過手機的設置功能,或者輸入相關的代碼在回撥號界面,然後進答行直接的查看
2,但是這個GUID值,並不能通過這種方法查看,就我目前所知道的,它是只能通過很少一部分軟體可以看到,一些硬體檢測工具都不行
3,想要查看的話,我們可以使用騰訊手機管家,然後點擊右上角的個人中心標志,進入手機的總設置菜單,在這里找到我們要的功能
4,打開個人中心後,會有一個硬體信息,也就是查看你手機所有設置的地方,這里就是我們所要找到的功能,直接打開即可
『陸』 如何得到設備的GUID
#define USB_PID 0x0003 //自定義的設備號. 你可以在設備管理器裡面找到專GUID HidGuid; // 查找本屬系統中HID類的GUID標識 HidD_GetHidGuid(&HidGuid
『柒』 如何得到設備的GUID值
如果是系統的標准設備,可以在devguid.h文件中找到所對應的guid值,但如果是其它安裝的驅動則可以查看其classguid值(系統設備也可以),如:
USB的guid值可以在注冊表路徑:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/
裡面找到值{36fc9e60-c465-11cf-8056-444553540000}
其對應的classguid值為:
{0x36fc9e60L, 0xc465, 0x11cf, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
對比下就可以用這兩個字元串相互轉換了。
devguid.h中設備類型guid的定義:
GUID_DEVCLASS_FDC 軟盤控制器
GUID_DEVCLASS_DISPLAY 顯示卡
GUID_DEVCLASS_CDROM 光碟機
GUID_DEVCLASS_KEYBOARD 鍵盤
GUID_DEVCLASS_COMPUTER 計算機
GUID_DEVCLASS_SYSTEM 系統
GUID_DEVCLASS_DISKDRIVE 磁碟驅動器
GUID_DEVCLASS_MEDIA 聲音、視頻和游戲控制器
GUID_DEVCLASS_MODEM MODEM
GUID_DEVCLASS_MOUSE 滑鼠和其他指針設備
GUID_DEVCLASS_NET 網路設備器
GUID_DEVCLASS_USB 通用串列匯流排控制器
GUID_DEVCLASS_FLOPPYDISK 軟盤驅動器
GUID_DEVCLASS_UNKNOWN 未知設備
GUID_DEVCLASS_SCSIADAPTER SCSI 和 RAID 控制器
GUID_DEVCLASS_HDC IDE ATA/ATAPI 控制器
GUID_DEVCLASS_PORTS 埠(COM 和 LPT)
GUID_DEVCLASS_MONITOR 監視器
對設備管理器的查詢
GUID ClassGuid = {0x96e73b6eL, 0x7a5a, 0x11d4, 0x9f, 0x24, 0x00, 0x80, 0xc8, 0x27, 0x27, 0xf4};
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
CString temp;
CString str;
hDevInfo = SetupDiGetClassDevs((LPGUID) &ClassGuid, 0, 0,DIGCF_PRESENT);
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;
char buffer[2048];
DWORD buffersize =sizeof(buffer);
while (!(
hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
//if (buffer) LocalFree(buffer);
//buffer = (PSP_INF_INFORMATION)LocalAlloc(LPTR,buffersize);
}
else
{
// Insert error handling here.
break;
}
}
if (buffer != NULL && i == 0)
{
temp.Format("<光碟驅動器>");
str += temp;
}
temp.Format("<VALUE>%s</VALUE>",buffer);
str += temp;
if (buffer) LocalFree(buffer);
}
if (i != 0)
{
temp.Format("</光碟驅動器>");
str += temp;
}
if ( GetLastError()!=NO_ERROR &&
GetLastError()!=ERROR_NO_MORE_ITEMS )
{
return ;
}
// Cleanup
SetupDiDestroyDeviceInfoList(hDevInfo);
『捌』 掃描USB硬體時,如何獲取設備的GUID
在設備管理器中可以查看,當掃描usb硬體,如果該驅動沒有安裝,在設備管理器中肯定是未知或感嘆號的設備,雙擊設備--詳細信息中有GUID顯示,如下圖所示

