-
大小: 118KB文件类型: .rar金币: 2下载: 0 次发布日期: 2021-05-05
- 语言: 其他
- 标签: 封装 CopyFileEx 同步 异步
资源简介
封装CopyFileExe成为一个类,提供简单的同步、异步调用文件复制、暂停、恢复、取消复制,自动计算速度和进度,回调给调用者。
![](http://www.nz998.com/pic/31157.jpg)
代码片段和文件信息
// FileCopy.cpp: implementation of the CFileCopy class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “FileCopyDemo.h“
#include “FileCopy.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include
#include
#include
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
class CAutoLock
{
private:
LPCRITICAL_SECTION m_pcsLcok;
public:
CAutoLock(LPCRITICAL_SECTION pcsLcok)
{
m_pcsLcok = pcsLcok;
if (m_pcsLcok)
{
EnterCriticalSection(m_pcsLcok);
}
}
~CAutoLock()
{
if (m_pcsLcok)
{
LeaveCriticalSection(m_pcsLcok);
m_pcsLcok = NULL;
}
}
};
class CStopwatch
{
public:
CStopwatch()
{
QueryPerformanceFrequency(&m_liPerfFreq);
Start();
}
void Start()
{
QueryPerformanceCounter(&m_liPerfStart);
}
__int64 Now() const
{
LARGE_INTEGER liPerfNow;
QueryPerformanceCounter(&liPerfNow);
return (liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000 / m_liPerfFreq.QuadPart;
}
__int64 NowInMicro() const
{
LARGE_INTEGER liPerfNow;
QueryPerformanceCounter(&liPerfNow);
return (liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000000 / m_liPerfFreq.QuadPart;
}
private:
LARGE_INTEGER m_liPerfFreq; //counter per second
LARGE_INTEGER m_liPerfStart; //starting count
};
CFileCopy::CFileCopy()
{
m_bCancel = FALSE;
m_dw64TotalFileSize = 0;
m_dw64TotalBytesTransferred = 0;
m_bIsCoping = FALSE;
m_hPauseEvent = NULL;
m_hFeedbackExitEvent = NULL;
m_hAsyncCopyThreadHandle = NULL;
m_hFeedbackProgressThreadHandle = NULL;
m_pUserData = NULL;
m_pAsyncCopyResultCB = NULL;
m_pCopingProgressCB = NULL;
m_dwProgressFeedbackTime = 0;
InitializeCriticalSection(&m_csLock);
}
CFileCopy::~CFileCopy()
{
Cancel();
DeleteCriticalSection(&m_csLock);
}
BOOL CFileCopy::CopyFile(IN LPCTSTR lpSrcFileName
IN LPCTSTR lpDesFileName
IN const BOOL bSynchronousCopy
IN const DWORD dwProgressFeedbackTime
OUT DOUBLE &dbSpeed
OUT tstring &strErrorMsg)
{
{
CAutoLock autolock(&m_csLock);
if (m_bIsCoping)
{
strErrorMsg = _T(“In coping.“);
return FALSE;
}
m_bIsCoping = TRUE;
}
// 同步复制
if (bSynchronousCopy)
{
m_dwProgressFeedbackTime = dwProgressFeedbackTime;
BOOL bRet = SynchronousCopyFile(
lpSrcFileName
lpDesFileName
dwProgressFeedbackTime
dbSpeed
st
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10251 2014-06-16 14:39 FileCopyDemo\FileCopy.cpp
文件 4453 2014-06-16 13:14 FileCopyDemo\FileCopy.h
文件 1779 2014-06-16 10:21 FileCopyDemo\FileCopyDemo.clw
文件 2147 2014-06-12 11:16 FileCopyDemo\FileCopyDemo.cpp
文件 4584 2014-06-16 15:29 FileCopyDemo\FileCopyDemo.dsp
文件 549 2014-06-12 11:16 FileCopyDemo\FileCopyDemo.dsw
文件 1390 2014-06-12 11:16 FileCopyDemo\FileCopyDemo.h
文件 6348 2014-06-16 10:23 FileCopyDemo\FileCopyDemo.rc
文件 11275 2014-06-16 15:28 FileCopyDemo\FileCopyDemoDlg.cpp
文件 1860 2014-06-16 15:28 FileCopyDemo\FileCopyDemoDlg.h
文件 3687 2014-06-12 11:16 FileCopyDemo\ReadMe.txt
文件 1196 2014-06-16 10:23 FileCopyDemo\resource.h
文件 214 2014-06-12 11:16 FileCopyDemo\StdAfx.cpp
文件 1086 2014-06-12 15:17 FileCopyDemo\StdAfx.h
文件 1078 2014-06-12 11:16 FileCopyDemo\res\FileCopyDemo.ico
文件 404 2014-06-12 11:16 FileCopyDemo\res\FileCopyDemo.rc2
文件 139327 2014-06-16 15:28 FileCopyDemo\Debug\FileCopyDemo.exe
文件 517120 2014-06-16 15:28 FileCopyDemo\Debug\FileCopyDemo.pdb
目录 0 2014-06-23 10:27 FileCopyDemo\res
目录 0 2014-06-23 10:27 FileCopyDemo\Debug
目录 0 2014-06-23 10:27 FileCopyDemo
----------- --------- ---------- ----- ----
708748 21
相关资源
- 曼彻斯特编解码_同步QuartusII工程
- linux下用多进程同步方法解决生产者
- 线程同步机制-AutoResetEvent
- 用FileSystemWatcher控件实现文件同步更新
- c ODBC 封装类
- 意法半导体STM全系列微控制器STM32ST
- w5500原理图封装
- STM32的PCB封装库,以及原理图库,48
- HP磁盘备份方案:让数据备份与业务应
- 飞康CDP让两岸数据库即时同步
- Altium designer超全元件库+封装库部分
- DC-005封装 altium6.9
- 参数在线估算的永磁同步电机最大转
- doneex xcell compiler 2.1.2.9绿色汉化版(
- Type-c 接口封装,24引脚,Altium Design
- 静止同步补偿器(STATCOM)综述
- 基于RBF神经网络在线辨识的永磁同步
- FTDI芯片的AD封装FT2232FT232FT4232原理图封
- EMC解决方案助交行实现业务大集中同
- MEMS红外传感器电子封装报告
- 基于模糊PI的低速表贴式永磁同步电机
- 文件时间戳记同步(更改)工具
- FreeFileSync 免费文件同步 v10.19 Windows版
- 基于DSP的矿井提升机永磁同步电机D
- STMicroelectronics 所有封装集成库intlib格
- 目前找到最好用的文件同步软件
- 原生网页封装Nativefier.zip
- altium designer 实用封装库 .pcblib亲测可
- altium适用的m.2接口封装, MKey的插头和
- 一种基于定子电压相角控制的永磁同
评论
共有 条评论