diff options
Diffstat (limited to 'src/dutil/inc/fileutil.h')
-rw-r--r-- | src/dutil/inc/fileutil.h | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/src/dutil/inc/fileutil.h b/src/dutil/inc/fileutil.h new file mode 100644 index 00000000..ddae340f --- /dev/null +++ b/src/dutil/inc/fileutil.h | |||
@@ -0,0 +1,235 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #define ReleaseFile(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; } | ||
10 | #define ReleaseFileHandle(h) if (INVALID_HANDLE_VALUE != h) { ::CloseHandle(h); h = INVALID_HANDLE_VALUE; } | ||
11 | #define ReleaseFileFindHandle(h) if (INVALID_HANDLE_VALUE != h) { ::FindClose(h); h = INVALID_HANDLE_VALUE; } | ||
12 | |||
13 | #define FILEMAKEVERSION(major, minor, build, revision) static_cast<DWORD64>((static_cast<DWORD64>(major & 0xFFFF) << 48) \ | ||
14 | | (static_cast<DWORD64>(minor & 0xFFFF) << 32) \ | ||
15 | | (static_cast<DWORD64>(build & 0xFFFF) << 16) \ | ||
16 | | (static_cast<DWORD64>(revision & 0xFFFF))) | ||
17 | |||
18 | typedef enum FILE_ARCHITECTURE | ||
19 | { | ||
20 | FILE_ARCHITECTURE_UNKNOWN, | ||
21 | FILE_ARCHITECTURE_X86, | ||
22 | FILE_ARCHITECTURE_X64, | ||
23 | FILE_ARCHITECTURE_IA64, | ||
24 | } FILE_ARCHITECTURE; | ||
25 | |||
26 | typedef enum FILE_ENCODING | ||
27 | { | ||
28 | FILE_ENCODING_UNSPECIFIED = 0, | ||
29 | // TODO: distinguish between non-BOM utf-8 and ANSI in the future? | ||
30 | FILE_ENCODING_UTF8, | ||
31 | FILE_ENCODING_UTF8_WITH_BOM, | ||
32 | FILE_ENCODING_UTF16, | ||
33 | FILE_ENCODING_UTF16_WITH_BOM, | ||
34 | } FILE_ENCODING; | ||
35 | |||
36 | |||
37 | LPWSTR DAPI FileFromPath( | ||
38 | __in_z LPCWSTR wzPath | ||
39 | ); | ||
40 | HRESULT DAPI FileResolvePath( | ||
41 | __in_z LPCWSTR wzRelativePath, | ||
42 | __out LPWSTR *ppwzFullPath | ||
43 | ); | ||
44 | HRESULT DAPI FileStripExtension( | ||
45 | __in_z LPCWSTR wzFileName, | ||
46 | __out LPWSTR *ppwzFileNameNoExtension | ||
47 | ); | ||
48 | HRESULT DAPI FileChangeExtension( | ||
49 | __in_z LPCWSTR wzFileName, | ||
50 | __in_z LPCWSTR wzNewExtension, | ||
51 | __out LPWSTR *ppwzFileNameNewExtension | ||
52 | ); | ||
53 | HRESULT DAPI FileAddSuffixToBaseName( | ||
54 | __in_z LPCWSTR wzFileName, | ||
55 | __in_z LPCWSTR wzSuffix, | ||
56 | __out_z LPWSTR* psczNewFileName | ||
57 | ); | ||
58 | HRESULT DAPI FileVersionFromString( | ||
59 | __in_z LPCWSTR wzVersion, | ||
60 | __out DWORD *pdwVerMajor, | ||
61 | __out DWORD* pdwVerMinor | ||
62 | ); | ||
63 | HRESULT DAPI FileVersionFromStringEx( | ||
64 | __in_z LPCWSTR wzVersion, | ||
65 | __in DWORD cchVersion, | ||
66 | __out DWORD64* pqwVersion | ||
67 | ); | ||
68 | HRESULT DAPI FileVersionToStringEx( | ||
69 | __in DWORD64 qwVersion, | ||
70 | __out LPWSTR* psczVersion | ||
71 | ); | ||
72 | HRESULT DAPI FileSetPointer( | ||
73 | __in HANDLE hFile, | ||
74 | __in DWORD64 dw64Move, | ||
75 | __out_opt DWORD64* pdw64NewPosition, | ||
76 | __in DWORD dwMoveMethod | ||
77 | ); | ||
78 | HRESULT DAPI FileSize( | ||
79 | __in_z LPCWSTR pwzFileName, | ||
80 | __out LONGLONG* pllSize | ||
81 | ); | ||
82 | HRESULT DAPI FileSizeByHandle( | ||
83 | __in HANDLE hFile, | ||
84 | __out LONGLONG* pllSize | ||
85 | ); | ||
86 | BOOL DAPI FileExistsEx( | ||
87 | __in_z LPCWSTR wzPath, | ||
88 | __out_opt DWORD *pdwAttributes | ||
89 | ); | ||
90 | BOOL DAPI FileExistsAfterRestart( | ||
91 | __in_z LPCWSTR wzPath, | ||
92 | __out_opt DWORD *pdwAttributes | ||
93 | ); | ||
94 | HRESULT DAPI FileRemoveFromPendingRename( | ||
95 | __in_z LPCWSTR wzPath | ||
96 | ); | ||
97 | HRESULT DAPI FileRead( | ||
98 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
99 | __out DWORD* pcbDest, | ||
100 | __in_z LPCWSTR wzSrcPath | ||
101 | ); | ||
102 | HRESULT DAPI FileReadEx( | ||
103 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
104 | __out DWORD* pcbDest, | ||
105 | __in_z LPCWSTR wzSrcPath, | ||
106 | __in DWORD dwShareMode | ||
107 | ); | ||
108 | HRESULT DAPI FileReadUntil( | ||
109 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
110 | __out_range(<=, cbMaxRead) DWORD* pcbDest, | ||
111 | __in_z LPCWSTR wzSrcPath, | ||
112 | __in DWORD cbMaxRead | ||
113 | ); | ||
114 | HRESULT DAPI FileReadPartial( | ||
115 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
116 | __out_range(<=, cbMaxRead) DWORD* pcbDest, | ||
117 | __in_z LPCWSTR wzSrcPath, | ||
118 | __in BOOL fSeek, | ||
119 | __in DWORD cbStartPosition, | ||
120 | __in DWORD cbMaxRead, | ||
121 | __in BOOL fPartialOK | ||
122 | ); | ||
123 | HRESULT DAPI FileReadPartialEx( | ||
124 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
125 | __out_range(<=, cbMaxRead) DWORD* pcbDest, | ||
126 | __in_z LPCWSTR wzSrcPath, | ||
127 | __in BOOL fSeek, | ||
128 | __in DWORD cbStartPosition, | ||
129 | __in DWORD cbMaxRead, | ||
130 | __in BOOL fPartialOK, | ||
131 | __in DWORD dwShareMode | ||
132 | ); | ||
133 | HRESULT DAPI FileWrite( | ||
134 | __in_z LPCWSTR pwzFileName, | ||
135 | __in DWORD dwFlagsAndAttributes, | ||
136 | __in_bcount_opt(cbData) LPCBYTE pbData, | ||
137 | __in DWORD cbData, | ||
138 | __out_opt HANDLE* pHandle | ||
139 | ); | ||
140 | HRESULT DAPI FileWriteHandle( | ||
141 | __in HANDLE hFile, | ||
142 | __in_bcount_opt(cbData) LPCBYTE pbData, | ||
143 | __in DWORD cbData | ||
144 | ); | ||
145 | HRESULT DAPI FileCopyUsingHandles( | ||
146 | __in HANDLE hSource, | ||
147 | __in HANDLE hTarget, | ||
148 | __in DWORD64 cbCopy, | ||
149 | __out_opt DWORD64* pcbCopied | ||
150 | ); | ||
151 | HRESULT DAPI FileEnsureCopy( | ||
152 | __in_z LPCWSTR wzSource, | ||
153 | __in_z LPCWSTR wzTarget, | ||
154 | __in BOOL fOverwrite | ||
155 | ); | ||
156 | HRESULT DAPI FileEnsureCopyWithRetry( | ||
157 | __in LPCWSTR wzSource, | ||
158 | __in LPCWSTR wzTarget, | ||
159 | __in BOOL fOverwrite, | ||
160 | __in DWORD cRetry, | ||
161 | __in DWORD dwWaitMilliseconds | ||
162 | ); | ||
163 | HRESULT DAPI FileEnsureMove( | ||
164 | __in_z LPCWSTR wzSource, | ||
165 | __in_z LPCWSTR wzTarget, | ||
166 | __in BOOL fOverwrite, | ||
167 | __in BOOL fAllowCopy | ||
168 | ); | ||
169 | HRESULT DAPI FileEnsureMoveWithRetry( | ||
170 | __in LPCWSTR wzSource, | ||
171 | __in LPCWSTR wzTarget, | ||
172 | __in BOOL fOverwrite, | ||
173 | __in BOOL fAllowCopy, | ||
174 | __in DWORD cRetry, | ||
175 | __in DWORD dwWaitMilliseconds | ||
176 | ); | ||
177 | HRESULT DAPI FileCreateTemp( | ||
178 | __in_z LPCWSTR wzPrefix, | ||
179 | __in_z LPCWSTR wzExtension, | ||
180 | __deref_opt_out_z LPWSTR* ppwzTempFile, | ||
181 | __out_opt HANDLE* phTempFile | ||
182 | ); | ||
183 | HRESULT DAPI FileCreateTempW( | ||
184 | __in_z LPCWSTR wzPrefix, | ||
185 | __in_z LPCWSTR wzExtension, | ||
186 | __deref_opt_out_z LPWSTR* ppwzTempFile, | ||
187 | __out_opt HANDLE* phTempFile | ||
188 | ); | ||
189 | HRESULT DAPI FileVersion( | ||
190 | __in_z LPCWSTR wzFilename, | ||
191 | __out DWORD *pdwVerMajor, | ||
192 | __out DWORD* pdwVerMinor | ||
193 | ); | ||
194 | HRESULT DAPI FileIsSame( | ||
195 | __in_z LPCWSTR wzFile1, | ||
196 | __in_z LPCWSTR wzFile2, | ||
197 | __out LPBOOL lpfSameFile | ||
198 | ); | ||
199 | HRESULT DAPI FileEnsureDelete( | ||
200 | __in_z LPCWSTR wzFile | ||
201 | ); | ||
202 | HRESULT DAPI FileGetTime( | ||
203 | __in_z LPCWSTR wzFile, | ||
204 | __out_opt LPFILETIME lpCreationTime, | ||
205 | __out_opt LPFILETIME lpLastAccessTime, | ||
206 | __out_opt LPFILETIME lpLastWriteTime | ||
207 | ); | ||
208 | HRESULT DAPI FileSetTime( | ||
209 | __in_z LPCWSTR wzFile, | ||
210 | __in_opt const FILETIME *lpCreationTime, | ||
211 | __in_opt const FILETIME *lpLastAccessTime, | ||
212 | __in_opt const FILETIME *lpLastWriteTime | ||
213 | ); | ||
214 | HRESULT DAPI FileResetTime( | ||
215 | __in_z LPCWSTR wzFile | ||
216 | ); | ||
217 | HRESULT DAPI FileExecutableArchitecture( | ||
218 | __in_z LPCWSTR wzFile, | ||
219 | __out FILE_ARCHITECTURE *pArchitecture | ||
220 | ); | ||
221 | HRESULT DAPI FileToString( | ||
222 | __in_z LPCWSTR wzFile, | ||
223 | __out LPWSTR *psczString, | ||
224 | __out_opt FILE_ENCODING *pfeEncoding | ||
225 | ); | ||
226 | HRESULT DAPI FileFromString( | ||
227 | __in_z LPCWSTR wzFile, | ||
228 | __in DWORD dwFlagsAndAttributes, | ||
229 | __in_z LPCWSTR sczString, | ||
230 | __in FILE_ENCODING feEncoding | ||
231 | ); | ||
232 | |||
233 | #ifdef __cplusplus | ||
234 | } | ||
235 | #endif | ||