查找到usb的device name并且用createfile打开pipe02以后,用writefile写数据老是失败,是什么原因呢?
CUsbAccess mx1usb;
UpdateData(TRUE);
         LPGUID  pGuidMx1 = (LPGUID)&MX1USB_GUID;
//if(""==m_PipeName) MessageBox("Open Usb Device");
char *m_PiPeNameChar=m_PipeName.GetBufferSetLength(m_PipeName.GetLength());
hMx1Usb=mx1usb.OpenUsbPipe(pGuidMx1,m_PiPeNameChar); //打开改USB的pipe
         //开始写数据
         int bResult;
DWORD nBytes;
UpdateData(TRUE);
DWORD m_WriteDataSize=m_WriteData.GetLength();
char *m_WriteDataChar=m_WriteData.GetBufferSetLength(m_WriteDataSize);
bResult=WriteFile(hMx1Usb,m_WriteDataChar,m_WriteDataSize,&nBytes,NULL);
if(bResult!=0) 
MessageBox("Write Succeed!","",0);

解决方案 »

  1.   

    我打开的设备是U盘,它使用的是U盘的默认驱动,那么usb的pipename是什么呢,去哪里获得pipename的名称?谢谢各位了
      

  2.   

    如果需要读写指定device name的usb
    建议使用DeviceIoControl,使用SCSI命令发送SCSI_READ6,SCSI_WRITE6之类的命令
      

  3.   

    使用DeviceIoControl可以不和驱动程序通讯吗?
    怎么在DeviceIoControl里面发送scsi命令呢,请赐教!
    DeviceIoControl的第二个参数好像就是和驱动通信的,如果要发送scsi命令,怎么设置第二个参数呢?
    谢谢!
      

  4.   

    读写u盘需要使用管道吗?跟普通的文件没有什么区别吧。
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    不使用管道那怎么知道数据是被写到ep0还是epx的buffer里面呢?
      

  5.   

    SCSI命令的发送例子在Windows DDK里有
      

  6.   

    呵呵,这个我也很想知道呀,好象只能用DDK里面的函数,再有就是编写驱动,不知道在那有这方面的资料。找到发个帖子告诉大家