-
大小: 118KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-05
- 语言: 其他
- 标签: 封装 CopyFileEx 同步 异步
资源简介
封装CopyFileExe成为一个类,提供简单的同步、异步调用文件复制、暂停、恢复、取消复制,自动计算速度和进度,回调给调用者。
代码片段和文件信息
// 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
相关资源
- Socket 同步通信 系列教程——1
- typec封装尺寸图
- VMware虚拟机安装和封装系统学习
- 永磁同步电机谐振抑制仿真
- 实验4tcp数据包的封装与发送
- 实验一 Ethernet帧的封装与解析.doc
- PCB封装大全,常用元器件封装都有
- STM32F103ZET6核心板原理图和封装库
- 基于MRAS的永磁同步电机无位置传感器
- TMS320F28379D原理图_PCB封装库(Altium D
- stm32 64引脚封装图
- 信号量同步实验报告哲学家进餐问题
- 自己封装Unity AB打包、加载插件
- usb_typec接口cadance的pcb封装,前插后贴
- mini_pcie封装库,ad pcb封装库:minipci
- 3.5mm耳机和音频输入PCB封装AD
- PS2主板双联双位键盘鼠标插座PCB封装
- 永磁同步电机直接转矩控制仿真-矩阵
- 永磁同步电机模糊PID控制-sl10.slx
- 论文研究-基于卡尔曼滤波与PID控制的
- 自己封装的发送短信通用工具类
- PADS封装---GSENSOR_QMA7981
- 在vue中封装可复用的组件方法
- 各种贴片元件IC封装库.rar
- sim卡PCB封装
- 各种卡插座 PCB封装
- 同步信号为正弦波触发电路的设计
- STM32F407系列ZG/VG/IG原理图封装全
- SD卡座的各种封装
- 滑模观测器设计
评论
共有 条评论