vc 列舉USB裝置

2021-06-21 15:21:02 字數 2096 閱讀 2315

#include #pragma comment(lib,"shlwapi.lib")

#include #pragma comment(lib,"setupapi.lib")

/** 函式名稱: enumusbdev

* 函式功能: 列舉裝置

* 參 數:

* acdevpath: 存放裝置路徑

* ndevnum: 裝置數量

* 返 回 值: 成功返回true,失敗返回false

*/bool cenumdevdlg::enumusbdev(out char acdevpath[max_path][max_path], out int &ndevnum)

zeromemory(acdevpath, sizeof(acdevpath));

bool bret = false;

sp_device_inte***ce_data deviceinte***cedata; // 儲存裝置介面資訊

dword dwrequiredsize = 0; // 得到詳細資訊時需要的記憶體大小

psp_inte***ce_device_detail_data pdevicedetaildata = null; // 詳細資訊

hdevinfo hdeviceinfo; // 裝置資訊集合的指標

guid inte***ceguid = g_guidcdrom;

deviceinte***cedata.cbsize = sizeof(sp_device_inte***ce_data);

//// 1.列舉裝置

// int i = 0;

hdeviceinfo = setupdigetclassdevs(

&inte***ceguid,

null,

null,

digcf_deviceinte***ce|digcf_present);

if (hdeviceinfo == invalid_handle_value)

while (1)

// 下面需要得到inte***ce的詳細資訊

// 先得到詳細資訊需要的記憶體大小

bret = setupdigetdeviceinte***cedetail(hdeviceinfo, &deviceinte***cedata, null, 0, &dwrequiredsize, null);

if(bret)

// 為詳細資訊分配記憶體

if(pdevicedetaildata)

pdevicedetaildata = (psp_inte***ce_device_detail_data)malloc(dwrequiredsize);

if(pdevicedetaildata == null)

// 得到inte***ce的詳細資訊

pdevicedetaildata->cbsize = sizeof(sp_inte***ce_device_detail_data);

sp_devinfo_data deviceinfodata;

deviceinfodata.cbsize = sizeof(sp_devinfo_data);

bret = setupdigetdeviceinte***cedetail(

hdeviceinfo,

&deviceinte***cedata,

pdevicedetaildata,

dwrequiredsize,

&dwrequiredsize,

&deviceinfodata);

if ( !bret )

strcpy(acdevpath[ndevnum], pdevicedetaildata->devicepath);

ndevnum++;

} if(pdevicedetaildata)

setupdidestroydeviceinfolist(hdeviceinfo);

return true;

}void cenumdevdlg::onbutton1()

}

USB主機列舉USB裝置步驟

usb主機列舉usb裝置步驟 1.usb主機對usb裝置進行復位,復位後usb裝置用端點0來傳輸資料 usb主機向usb裝置傳送獲取裝置描述符指令,usb裝置收到指令後,通過端點0將裝置描述符資訊返回給usb主機,且若端點0中包含完整的18位元組裝置描述符資訊,則將完整的裝置描述符資訊返回給usb主...

USB裝置列舉過程

當裝置連線到主機時,按照以下順序進行列舉 1.連線了裝置的hub 在host 查詢其狀態改變端點時返回對應的bitmap,告知host 某個port 狀態發生了改變。2.主機向hub 查詢該port 的狀態,得知有裝置連線,並知道了該裝置的基本特性。3.主機等待 至少100ms 裝置上電穩定,然後向...

基於OHCI的USB主機 USB裝置列舉

usb裝置接入以後,必須進行裝置列舉,得到裝置引數,設定裝置執行配置等引數,下面的 就是對u盤裝置進行列舉的過程。因為沒有使用作業系統,所以函式使用狀態遷移的方式完成列舉,該函式在主迴圈中被呼叫。usb裝置列舉處理 return 當前列舉處理的狀態 short usbenumdev void old...