diff options
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/inc/fileutil.h')
-rw-r--r-- | src/libs/dutil/WixToolset.DUtil/inc/fileutil.h | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/inc/fileutil.h b/src/libs/dutil/WixToolset.DUtil/inc/fileutil.h new file mode 100644 index 00000000..d3e326f7 --- /dev/null +++ b/src/libs/dutil/WixToolset.DUtil/inc/fileutil.h | |||
@@ -0,0 +1,247 @@ | |||
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 SIZE_T 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 SIZE_T* pcbDest, | ||
100 | __in_z LPCWSTR wzSrcPath | ||
101 | ); | ||
102 | HRESULT DAPI FileReadEx( | ||
103 | __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
104 | __out SIZE_T* 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) SIZE_T* 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) SIZE_T* 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_inout_bcount_full(*pcbDest) LPBYTE* ppbDest, | ||
125 | __out_range(<=, cbMaxRead) SIZE_T* 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 FileReadHandle( | ||
134 | __in HANDLE hFile, | ||
135 | __in_bcount(cbDest) LPBYTE pbDest, | ||
136 | __in SIZE_T cbDest | ||
137 | ); | ||
138 | HRESULT DAPI FileWrite( | ||
139 | __in_z LPCWSTR pwzFileName, | ||
140 | __in DWORD dwFlagsAndAttributes, | ||
141 | __in_bcount_opt(cbData) LPCBYTE pbData, | ||
142 | __in SIZE_T cbData, | ||
143 | __out_opt HANDLE* pHandle | ||
144 | ); | ||
145 | HRESULT DAPI FileWriteHandle( | ||
146 | __in HANDLE hFile, | ||
147 | __in_bcount_opt(cbData) LPCBYTE pbData, | ||
148 | __in SIZE_T cbData | ||
149 | ); | ||
150 | HRESULT DAPI FileCopyUsingHandles( | ||
151 | __in HANDLE hSource, | ||
152 | __in HANDLE hTarget, | ||
153 | __in DWORD64 cbCopy, | ||
154 | __out_opt DWORD64* pcbCopied | ||
155 | ); | ||
156 | HRESULT DAPI FileCopyUsingHandlesWithProgress( | ||
157 | __in HANDLE hSource, | ||
158 | __in HANDLE hTarget, | ||
159 | __in DWORD64 cbCopy, | ||
160 | __in_opt LPPROGRESS_ROUTINE lpProgressRoutine, | ||
161 | __in_opt LPVOID lpData | ||
162 | ); | ||
163 | HRESULT DAPI FileEnsureCopy( | ||
164 | __in_z LPCWSTR wzSource, | ||
165 | __in_z LPCWSTR wzTarget, | ||
166 | __in BOOL fOverwrite | ||
167 | ); | ||
168 | HRESULT DAPI FileEnsureCopyWithRetry( | ||
169 | __in LPCWSTR wzSource, | ||
170 | __in LPCWSTR wzTarget, | ||
171 | __in BOOL fOverwrite, | ||
172 | __in DWORD cRetry, | ||
173 | __in DWORD dwWaitMilliseconds | ||
174 | ); | ||
175 | HRESULT DAPI FileEnsureMove( | ||
176 | __in_z LPCWSTR wzSource, | ||
177 | __in_z LPCWSTR wzTarget, | ||
178 | __in BOOL fOverwrite, | ||
179 | __in BOOL fAllowCopy | ||
180 | ); | ||
181 | HRESULT DAPI FileEnsureMoveWithRetry( | ||
182 | __in LPCWSTR wzSource, | ||
183 | __in LPCWSTR wzTarget, | ||
184 | __in BOOL fOverwrite, | ||
185 | __in BOOL fAllowCopy, | ||
186 | __in DWORD cRetry, | ||
187 | __in DWORD dwWaitMilliseconds | ||
188 | ); | ||
189 | HRESULT DAPI FileCreateTemp( | ||
190 | __in_z LPCWSTR wzPrefix, | ||
191 | __in_z LPCWSTR wzExtension, | ||
192 | __deref_opt_out_z LPWSTR* ppwzTempFile, | ||
193 | __out_opt HANDLE* phTempFile | ||
194 | ); | ||
195 | HRESULT DAPI FileCreateTempW( | ||
196 | __in_z LPCWSTR wzPrefix, | ||
197 | __in_z LPCWSTR wzExtension, | ||
198 | __deref_opt_out_z LPWSTR* ppwzTempFile, | ||
199 | __out_opt HANDLE* phTempFile | ||
200 | ); | ||
201 | HRESULT DAPI FileVersion( | ||
202 | __in_z LPCWSTR wzFilename, | ||
203 | __out DWORD *pdwVerMajor, | ||
204 | __out DWORD* pdwVerMinor | ||
205 | ); | ||
206 | HRESULT DAPI FileIsSame( | ||
207 | __in_z LPCWSTR wzFile1, | ||
208 | __in_z LPCWSTR wzFile2, | ||
209 | __out LPBOOL lpfSameFile | ||
210 | ); | ||
211 | HRESULT DAPI FileEnsureDelete( | ||
212 | __in_z LPCWSTR wzFile | ||
213 | ); | ||
214 | HRESULT DAPI FileGetTime( | ||
215 | __in_z LPCWSTR wzFile, | ||
216 | __out_opt LPFILETIME lpCreationTime, | ||
217 | __out_opt LPFILETIME lpLastAccessTime, | ||
218 | __out_opt LPFILETIME lpLastWriteTime | ||
219 | ); | ||
220 | HRESULT DAPI FileSetTime( | ||
221 | __in_z LPCWSTR wzFile, | ||
222 | __in_opt const FILETIME *lpCreationTime, | ||
223 | __in_opt const FILETIME *lpLastAccessTime, | ||
224 | __in_opt const FILETIME *lpLastWriteTime | ||
225 | ); | ||
226 | HRESULT DAPI FileResetTime( | ||
227 | __in_z LPCWSTR wzFile | ||
228 | ); | ||
229 | HRESULT DAPI FileExecutableArchitecture( | ||
230 | __in_z LPCWSTR wzFile, | ||
231 | __out FILE_ARCHITECTURE *pArchitecture | ||
232 | ); | ||
233 | HRESULT DAPI FileToString( | ||
234 | __in_z LPCWSTR wzFile, | ||
235 | __out LPWSTR *psczString, | ||
236 | __out_opt FILE_ENCODING *pfeEncoding | ||
237 | ); | ||
238 | HRESULT DAPI FileFromString( | ||
239 | __in_z LPCWSTR wzFile, | ||
240 | __in DWORD dwFlagsAndAttributes, | ||
241 | __in_z LPCWSTR sczString, | ||
242 | __in FILE_ENCODING feEncoding | ||
243 | ); | ||
244 | |||
245 | #ifdef __cplusplus | ||
246 | } | ||
247 | #endif | ||