阅读:1288回复:1
哪位大侠帮我看看下面这段关于读取USB设备程序的意思?谢谢了!
BOOL CUSBDlg::ReadDataFromUsb()
{ BULK_TRANSFER_CONTROL bulkcontrol; bulkcontrol.pipeNum=0; if (!DeviceIoControl (hDevice, IOCTL_EZUSB_BULK_READ, (LPVOID)&bulkcontrol, sizeof(BULK_TRANSFER_CONTROL), (LPVOID)BulkReadData1, 1000, &BytesReturned, NULL) ) { //AfxMessageBox("错误"); CloseHandle(hDevice); Sleep(20); if(!bOpenDriver(&hDevice,m_strName.GetBuffer(m_strName.GetLength()))) { m_strOutput+="重新打开设备失败,请检查设备名是正确\r\n"; CloseHandle(hDevice); if(bOpenDriver(&hDevice,m_strName11.GetBuffer(m_strName11.GetLength()))) m_strOutput+="重新打开设备"+m_strName11+"\r\n"; // return FALSE; } else { m_strOutput+="重新打开设备"+m_strName+"\r\n"; } UpdateData(FALSE); DeviceIoControl(hDevice, IOCTL_EZUSB_BULK_READ, (LPVOID)&bulkcontrol, sizeof(BULK_TRANSFER_CONTROL), (LPVOID)BulkReadData1, 1000, &BytesReturned, NULL); // return FALSE; } Sleep(20); if (!DeviceIoControl (hDevice, IOCTL_EZUSB_BULK_READ, (LPVOID)&bulkcontrol, sizeof(BULK_TRANSFER_CONTROL), (LPVOID)BulkReadData2, 1000, &BytesReturned, NULL) ) { CloseHandle(hDevice); return FALSE; } Sleep(20); if (!DeviceIoControl (hDevice, IOCTL_EZUSB_BULK_READ, (LPVOID)&bulkcontrol, sizeof(BULK_TRANSFER_CONTROL), (LPVOID)BulkReadData3, 1000, &BytesReturned, NULL) ) { CloseHandle(hDevice); return FALSE; } return TRUE; } |
|
沙发#
发布于:2007-07-26 13:14
这就是打开设备,然后利用DeviceIoControl,也就是驱动程序对应的控IRP_MJ_DEVICE_CONTROL中进行响应.
|
|