需要用MFC編程實作PC與一個USB設備的通信,第一步想實作識別USB設備的功能。類似于下面這種效果,識別的名稱不一定要顯示VID和PID。

這設備的驅動是自行安裝的,最好能識別成設備管理器里寫的那樣。

求助各位大神,這該怎么弄,剛接觸MFC,有點懵。
uj5u.com熱心網友回復:
讀取注冊表,或者通過WMI等查詢uj5u.com熱心網友回復:
下載 SDK 做參考https://www.silabs.com/products/development-tools/interface/cp2130ek-evaluation-kit
uj5u.com熱心網友回復:
RegisterDeviceNotification,注冊USB事件通知
HDEVNOTIFY hDevNotify;
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter));
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++)
{
NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
hDevNotify = RegisterDeviceNotification(this->GetSafeHwnd(),&NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
if( !hDevNotify )
{
return FALSE;
}
}
BOOL CUSBEventDlg::OnDeviceChange(UINT nEventType,DWORD dwData)
{
switch (nEventType)
{
case DBT_DEVICEARRIVAL:
{
DEV_BROADCAST_HDR* pDev=(DEV_BROADCAST_HDR*)dwData;
if(pDev->dbch_devicetype ==DBT_DEVTYP_VOLUME )//移動存盤設備
{
DEV_BROADCAST_VOLUME* pDisk=(DEV_BROADCAST_VOLUME*)dwData;
DWORD mask=pDisk->dbcv_unitmask;
TCHAR diskname[MAX_PATH];
for(int i=0;i<32;i++)
{
if((mask>>i)==1)
{//獲取盤符
diskname[0]='A'+i;
diskname[1]='\0';
break;
}
}
}
}break;
case DBT_DEVICEREMOVECOMPLETE:
{
}break;
}
return TRUE;
}
uj5u.com熱心網友回復:
那個sdk我下載了,那個demo是配合評估板的,還是用c#寫的,對于這新手有點懵。uj5u.com熱心網友回復:
CP201X_SDK 的 目錄下似乎有 VC2005 和 VC6 的例子呢uj5u.com熱心網友回復:
這個是cp2130,不過謝謝你,我看看能不能做些參考uj5u.com熱心網友回復:
WM_DEVICECHANGE應該可以監控到USB的連接然后通過注冊表應該可以找到你想要的資訊
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
//// 查詢屬性輸出的資料結構
//typedef struct _STORAGE_DEVICE_DESCRIPTOR {
// ULONG Version; // 版本
// ULONG Size; // 結構大小
// UCHAR DeviceType; // 設備型別
// UCHAR DeviceTypeModifier; // SCSI-2額外的設備型別
// BOOLEAN RemovableMedia; // 是否可移動
// BOOLEAN CommandQueueing; // 是否支持命令佇列
// ULONG VendorIdOffset; // 廠家設定值的偏移
// ULONG ProductIdOffset; // 產品ID的偏移
// ULONG ProductRevisionOffset; // 產品版本的偏移
// ULONG SerialNumberOffset; // 序列號的偏移
// STORAGE_BUS_TYPE BusType; // 總線型別
// ULONG RawPropertiesLength; // 額外的屬性資料長度
// UCHAR RawDeviceProperties[1]; // 額外的屬性資料(僅定義了象征性的1個位元組)
//} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88170.html
標籤:基礎類
