forked from Chuyu-Team/CPPHelper
/
FileHelper.h
87 lines (54 loc) · 2.62 KB
/
FileHelper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#pragma once
#include <Windows.h>
#include <atlstr.h>
#include "km.h"
#include <map>
/////////////////////////////////////////////////////////////////////////////
//
// 提供文件基础操作
//
/////////////////////////////////////////////////////////////////////////////
//UTF16文件头
const BYTE BomUTF16[] = { 0xff,0xfe };
//UTF8文件头
const BYTE BomUTF8[] = { 0xEF ,0xBB ,0xBF };
//判断问是否是.以及..
bool __fastcall IsDots(LPCWSTR FileName, DWORD cbFileName);
bool __fastcall IsDots(LPCWSTR FileName);
bool __fastcall IsDots(LPCSTR FileName);
#define _IsDots IsDots
NTSTATUS __fastcall GetFileId(LPCWSTR FilePath, FILE_STANDARD_INFORMATION* pFileStandardInfo, FILE_INTERNAL_INFORMATION* pFileInternalInfo = NULL);
NTSTATUS __fastcall NtGetFileId(POBJECT_ATTRIBUTES ObjectAttributes, FILE_STANDARD_INFORMATION* pFileStandardInfo, FILE_INTERNAL_INFORMATION* pFileInternalInfo);
/*无视权限删除文件或者文件夹
DeleteRootPath指示是否删除根目录,当Path为文件时此产生无效*/
NTSTATUS DeleteDirectory(LPCWSTR Path, BOOL DeleteRootPath = TRUE);
HRESULT UpdateFile(CString lpExistingFileName, CString lpNewFileName);
NTSTATUS CopyDirectory(LPCWSTR ExistingDirectoryPath, LPCWSTR NewDirectoryInfoPath);
//DWORD MoveFileEx2(LPCTSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags = MOVEFILE_REPLACE_EXISTING);
//无视权限删除文件或者(空)文件夹
NTSTATUS DeleteFile2(LPCWSTR FilePath);
NTSTATUS NtDeleteFile2(POBJECT_ATTRIBUTES ObjectAttributes);
DWORD GetFileAttributes2(LPCTSTR FilePath);
NTSTATUS NtSetFileAttributes(POBJECT_ATTRIBUTES ObjectAttributes, DWORD FileAttributes);
NTSTATUS SetFileAttributes2(LPCTSTR FilePath, DWORD FileAttributes);
UINT64 GetFileAllocationSize(LPCWSTR FilePath);
UINT64 GetDirectorySize(LPCWSTR FilePath);
//可以NTFS压缩一个文件/文件夹
HRESULT CompressFile(LPCWSTR FilePath);
ULONG64 GetDriverFreeSize(LPCWSTR Latter);
ULONG64 GetDriverUseSize(LPCWSTR Latter);
BOOL CheckUpdateFile(CString Src, CString Des, std::map<UINT64, DWORD>&FileMap, UINT64* pSize);
HRESULT GetFileVersion(HMODULE hFileMoudle, UINT16 Version[4], WORD wLanguage = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
HRESULT GetFileVersion(LPCWSTR FilePath, UINT16 Version[4], WORD wLanguage = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
UINT64 GetDirectoryAllocationSize(LPCWSTR FilePath, std::map<UINT64, DWORD>& FileMap);
HRESULT CrateDirectorHandLink(CString To, CString From);
HRESULT MoveDirectory(CString ExistingDirectoryPath, CString NewDirectoryInfoPath);
enum FilePathType
{
PathIsUnkow = -1,
PathNotExist,
PathIsFile,
PathIsDir,
};
FilePathType GetFileType(LPCWSTR FilePath);
FilePathType GetFileType(LPCSTR FilePath);