DWORD dError;
ULONG nWritten;
// BOOL    ret = FALSE;
BOOL    ret;
hDevice = OpenByInterface( &ClassGuid, 0, &dError);
if(hDevice ==INVALID_HANDLE_VALUE)
{
AfxMessageBox("USB É豸²»¿ÉÒÔд");
ret = WriteFile(hDevice,buf,wLength,&nWritten,NULL);  
CloseHandle(hDevice);
return nWritten;在另台电脑上没有问题 
但是这台电脑会重启 系统是 雨林木风  Windows XP SP3 安装版 Y5.6
请问是这个问题吗 

解决方案 »

  1.   

    if(hDevice ==INVALID_HANDLE_VALUE) //????
    //如果返回的句柄无效,你干嘛还写啊?有效才写啊

    AfxMessageBox("USB É豸²»¿ÉÒÔд"); 
    ret = WriteFile(hDevice,buf,wLength,&nWritten,NULL);  
    CloseHandle(hDevice); 
    return nWritten; 
      

  2.   

    谢谢楼上   
    我写了它也不执行呀 
    我调试的时候它走到了WriteFile就重启了。
      

  3.   

    再补充一下我的程序是这样的
    DWORD MW90ADevice::ReadBulkData (char *buf,long wLength)
    {
    DWORD dError = 0;
    //BOOL rc;                                     
    ULONG nRead;
    hDevice = OpenByInterface(&ClassGuid, 0, &dError); if(hDevice !=INVALID_HANDLE_VALUE)
    {
    AfxMessageBox("USB É豸¿ÉÒÔ¶Á");
    }
      ret = WriteFile(hDevice,buf,wLength,&nWritten,NULL); CloseHandle(hDevice);
    return nWritten;
      

  4.   


    DWORD MW90ADevice::ReadBulkData (char *buf,long wLength) 

    DWORD dError = 0; 
    //BOOL rc;                                    
    ULONG nRead; 
    hDevice = OpenByInterface(&ClassGuid, 0, &dError); if(hDevice !=INVALID_HANDLE_VALUE) //这里判断句柄何意?判断了之后如果是无效的,你不还是接着往里写吗?

    AfxMessageBox("USB É豸¿ÉÒÔ¶Á"); 

    ret = WriteFile(hDevice,buf,wLength,&nWritten,NULL); //如果hDevice非法,你仍然是往里写CloseHandle(hDevice); 
    return nWritten; 
      

  5.   

    另外,看清楚OpenByInterface的返回值,是-1表示错误,还是NULL表示错误。