目的是向USB设备传输图像并显示 USB设备已经做好了 驱动正常 而且有测试程序 只要选择一个文件 点发送 最终设备就可以显示图像了 
现在我要做的就是在另一个复杂点的程序中也实现这个功能 但是目前总是不成功 因为是第一次接触USB传输的领域 请大家不吝赐教 多谢了 代码如下:                         // 加PIPE0和不加PIPE0 hFile是一样的 , 如果加PIPE1则不一样 在我先前的测试过程中,PIPE0可以单步调试过WriteFile那行函数 但是返回无效的句柄错误 。 而现在 PIPE0和PIPE1都是走到WriteFile那一行再运行 便跳出程序界面 再也回不到调试功能了 不知道是异常跳出还是什么 点关闭程序还是能关闭的 就是再也执行不到贴出的这些代码了 CString strDev = "\\\\.\\DevName\\PIPE0"; 
HANDLE hFile = CreateFile( strDev,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
if ( INVALID_HANDLE_VALUE == hFile ) 

iErrCode = GetLastError(); 

else 

DWORD nBytesWritten = 0; 
CFile file; 
file.Open("D:\\image.bin",CFile::modeRead); 
int iLength = file.GetLength(); 
char* pData = new char[iLength]; 
memset(pData,0,iLength); 
int iRead = file.Read(pData,iLength); BOOL bWrite = FALSE; 
try 

                                        // 这一行就跳出调试功能了 
bWrite = WriteFile( hFile, pData , iLength, &nBytesWritten, NULL); 

catch(...) 

AfxMessageBox("asdf"); 

if ( bWrite ) 
{ } 
else 

iErrCode = GetLastError(); 
bWrite = CloseHandle( hFile ); 
} delete []pData; 

请大家看看这是什么问题 , 并如何解决WriteFile的问题 再谢!

解决方案 »

  1.   

    现在是 去掉PIPE0或者1 只写 \\\\.\\DevName
    可以通过WriteFile 但是返回0 错误码是无效句柄
    也在网上搜过类似的题目 但是都说的不是很清晰 
    有人说这已经成功了 但是我的数据并没有传到设备里 而且设备还死掉了
    必须重新插一次才能重新使用
      

  2.   

    设备名是"\\\\.\\DevName\\PIPE0"吗?
    CreateFile中,CREATE_ALWAYS改成OPEN_EXISTING。
      

  3.   

    bWrite = WriteFile( hFile, pData , iLength, &nBytesWritten, NULL); 
    调试时查看这个调用的每个参数,是否为预期值,
    实在不行,直接给值,先测试下,驱动是否能正常工作
      

  4.   

    file.Open("D:\\image.bin",CFile::modeRead); 
    D:\\image.bin写死了,