急。

解决方案 »

  1.   

    楼上的想得太简单了,upupup;
      

  2.   

    不要用异步方式写啊,用同步的,当write返回的时候就是写完了
      

  3.   

    看返回值、异常、比较两边文件大小,任何一直方法都可以啊!我觉得。// 拷贝整个光盘
    void CSetupDlg::OnInstall() 
    {
        char device[100]="";
        CString DriveNum;    
        for (char i=97;i<=122;i++)
        {
            DriveNum=i;
            DriveNum.Format("%c:\\",i);
            int TempDrive=GetDriveType(DriveNum);
            if (TempDrive==DRIVE_CDROM) 
            {
                DriveNum += "*.*\0";
                char cur_path[1024] = "";
                char dst_path[1024] = "";            strcpy(cur_path, DriveNum);
                GetDlgItemText(IDE_PATH, dst_path, sizeof(dst_path));
                mkdir(dst_path);            int   nOk;            
                char  strTitle[] = "文件正在拷贝...";    
         
                SHFILEOPSTRUCT FileOp;            FileOp.hwnd = m_hWnd;
                FileOp.wFunc = FO_COPY;    
                FileOp.pFrom = cur_path;
                FileOp.pTo = dst_path;
                FileOp.fFlags = FOF_ALLOWUNDO;
                FileOp.hNameMappings = NULL;
                FileOp.lpszProgressTitle = strTitle;
                 
                nOk = SHFileOperation(&FileOp);            if(nOk)
                     SetDlgItemText(IDE_STATUS, "正在复制文件 ...");
                else
                     SetDlgItemText(IDE_STATUS, "正在复制文件 ...");
                 
                if(FileOp.fAnyOperationsAborted)
                     SetDlgItemText(IDE_STATUS, "复制文件失败!");            break;
            }
                device[0]=i;
        }
    }
      

  4.   

    千年了!!!! 现在你等到你的爱情鸟了么? :-)你的这个移动硬盘拷贝的问题得问比如朗科公司,我怀疑是技术条件限制,并非是他们故意这样子做的或者没有想到,也许和USB的底层有关。
    你是用外部程序想检测拷贝过程么?如果你不想控制这个过程的话,看灯就可以了阿  :-)