MyException - 我的异常网
当前位置:我的异常网» VC/MFC » USB移动存储设备的检测、写下及弹出

USB移动存储设备的检测、写下及弹出(2)

www.MyException.Cn  网友分享于:2013-02-20  浏览:258次

 {
  DWORD accessMode = 0, shareMode = 0;
  HANDLE   hDevice; 
 ULONG returned = 0,bResult = 0;
  DWORD   dwError;  
 shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;  // default
  accessMode = GENERIC_WRITE | GENERIC_READ;       // default 
  if(szDriveName == 0) 
  { 
   return FALSE;
  }
  CString vol_string = "\\\\.\\A:";
  vol_string.SetAt(4, szDriveName);
  TRACE("%s",vol_string);
  hDevice = CreateFile(vol_string,accessMode,shareMode,NULL,OPEN_EXISTING,0,NULL);
     if(hDevice == INVALID_HANDLE_VALUE)
  {
   CString debugInfo;
   dwError   =   GetLastError();    
  debugInfo.Format("error = %d ", dwError); 
   TRACE("IOCTL_STORAGE_EJECT_MEDIA  errorcode = %d \n", dwError);
   return FALSE;
     }
  bResult  =  DeviceIoControl(hDevice,IOCTL_STORAGE_EJECT_MEDIA,NULL,0, NULL,0,&returned, NULL);
  if(!bResult)   //   IOCTL   failed     //经实验,有时虽然失败了,U盘还是能弹出 
  {   
  CString debugInfo;
   dwError   =   GetLastError();    
  debugInfo.Format("error = %d ", dwError); 
   TRACE("IOCTL_STORAGE_EJECT_MEDIA  errorcode = %d \n", dwError); 
  }
  bResult = CloseHandle(hDevice);
  if(!bResult)     
  {     
  CString debugInfo;
  dwError   =   GetLastError();    
 debugInfo.Format("error = %d ", dwError);
  TRACE("IOCTL_STORAGE_EJECT_MEDIA  errorcode = %d \n", dwError); 
  return FALSE;
  }    
 return TRUE;
 } 
这个函数在按钮的实现中,即把卷标传入即可:
 
void CUSBTestDlg::OnButton1() 
{
  // TODO: Add your control notification handler code here
  UnInstallUsb((char)g_strVolume.GetAt(0));
 }
 
(4)需要的读取卷标和写入的函数。
 
void CUSBTestDlg::JudgeDeviceChangePath(DWORD dwData, CString &strPath)
 {
  for(int i=0;i<32;i++)
  {
   if(dwData&0x01)
   {
    //获取盘符
    CString str=char('A'+i);
    strPath+=str;
    break;
   }
   dwData = dwData>>1;
   if(dwData==0x0000)
    break;
  }
    
 }
 
void CUSBTestDlg::IOFileToMobileDevice(CString str)
 {
  FILE* stream = NULL;
  char paramfilepath[200];

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有