aboutsummaryrefslogtreecommitdiff
path: root/src/libs/dutil/WixToolset.DUtil/inc/fileutil.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/inc/fileutil.h')
-rw-r--r--src/libs/dutil/WixToolset.DUtil/inc/fileutil.h247
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
6extern "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
18typedef enum FILE_ARCHITECTURE
19{
20 FILE_ARCHITECTURE_UNKNOWN,
21 FILE_ARCHITECTURE_X86,
22 FILE_ARCHITECTURE_X64,
23 FILE_ARCHITECTURE_IA64,
24} FILE_ARCHITECTURE;
25
26typedef 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
37LPWSTR DAPI FileFromPath(
38 __in_z LPCWSTR wzPath
39 );
40HRESULT DAPI FileResolvePath(
41 __in_z LPCWSTR wzRelativePath,
42 __out LPWSTR *ppwzFullPath
43 );
44HRESULT DAPI FileStripExtension(
45 __in_z LPCWSTR wzFileName,
46 __out LPWSTR *ppwzFileNameNoExtension
47 );
48HRESULT DAPI FileChangeExtension(
49 __in_z LPCWSTR wzFileName,
50 __in_z LPCWSTR wzNewExtension,
51 __out LPWSTR *ppwzFileNameNewExtension
52 );
53HRESULT DAPI FileAddSuffixToBaseName(
54 __in_z LPCWSTR wzFileName,
55 __in_z LPCWSTR wzSuffix,
56 __out_z LPWSTR* psczNewFileName
57 );
58HRESULT DAPI FileVersionFromString(
59 __in_z LPCWSTR wzVersion,
60 __out DWORD *pdwVerMajor,
61 __out DWORD* pdwVerMinor
62 );
63HRESULT DAPI FileVersionFromStringEx(
64 __in_z LPCWSTR wzVersion,
65 __in SIZE_T cchVersion,
66 __out DWORD64* pqwVersion
67 );
68HRESULT DAPI FileVersionToStringEx(
69 __in DWORD64 qwVersion,
70 __out LPWSTR* psczVersion
71 );
72HRESULT DAPI FileSetPointer(
73 __in HANDLE hFile,
74 __in DWORD64 dw64Move,
75 __out_opt DWORD64* pdw64NewPosition,
76 __in DWORD dwMoveMethod
77 );
78HRESULT DAPI FileSize(
79 __in_z LPCWSTR pwzFileName,
80 __out LONGLONG* pllSize
81 );
82HRESULT DAPI FileSizeByHandle(
83 __in HANDLE hFile,
84 __out LONGLONG* pllSize
85 );
86BOOL DAPI FileExistsEx(
87 __in_z LPCWSTR wzPath,
88 __out_opt DWORD *pdwAttributes
89 );
90BOOL DAPI FileExistsAfterRestart(
91 __in_z LPCWSTR wzPath,
92 __out_opt DWORD *pdwAttributes
93 );
94HRESULT DAPI FileRemoveFromPendingRename(
95 __in_z LPCWSTR wzPath
96 );
97HRESULT DAPI FileRead(
98 __deref_out_bcount_full(*pcbDest) LPBYTE* ppbDest,
99 __out SIZE_T* pcbDest,
100 __in_z LPCWSTR wzSrcPath
101 );
102HRESULT 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 );
108HRESULT 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 );
114HRESULT 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 );
123HRESULT 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 );
133HRESULT DAPI FileReadHandle(
134 __in HANDLE hFile,
135 __in_bcount(cbDest) LPBYTE pbDest,
136 __in SIZE_T cbDest
137 );
138HRESULT 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 );
145HRESULT DAPI FileWriteHandle(
146 __in HANDLE hFile,
147 __in_bcount_opt(cbData) LPCBYTE pbData,
148 __in SIZE_T cbData
149 );
150HRESULT DAPI FileCopyUsingHandles(
151 __in HANDLE hSource,
152 __in HANDLE hTarget,
153 __in DWORD64 cbCopy,
154 __out_opt DWORD64* pcbCopied
155 );
156HRESULT 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 );
163HRESULT DAPI FileEnsureCopy(
164 __in_z LPCWSTR wzSource,
165 __in_z LPCWSTR wzTarget,
166 __in BOOL fOverwrite
167 );
168HRESULT DAPI FileEnsureCopyWithRetry(
169 __in LPCWSTR wzSource,
170 __in LPCWSTR wzTarget,
171 __in BOOL fOverwrite,
172 __in DWORD cRetry,
173 __in DWORD dwWaitMilliseconds
174 );
175HRESULT DAPI FileEnsureMove(
176 __in_z LPCWSTR wzSource,
177 __in_z LPCWSTR wzTarget,
178 __in BOOL fOverwrite,
179 __in BOOL fAllowCopy
180 );
181HRESULT 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 );
189HRESULT 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 );
195HRESULT 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 );
201HRESULT DAPI FileVersion(
202 __in_z LPCWSTR wzFilename,
203 __out DWORD *pdwVerMajor,
204 __out DWORD* pdwVerMinor
205 );
206HRESULT DAPI FileIsSame(
207 __in_z LPCWSTR wzFile1,
208 __in_z LPCWSTR wzFile2,
209 __out LPBOOL lpfSameFile
210 );
211HRESULT DAPI FileEnsureDelete(
212 __in_z LPCWSTR wzFile
213 );
214HRESULT DAPI FileGetTime(
215 __in_z LPCWSTR wzFile,
216 __out_opt LPFILETIME lpCreationTime,
217 __out_opt LPFILETIME lpLastAccessTime,
218 __out_opt LPFILETIME lpLastWriteTime
219 );
220HRESULT 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 );
226HRESULT DAPI FileResetTime(
227 __in_z LPCWSTR wzFile
228 );
229HRESULT DAPI FileExecutableArchitecture(
230 __in_z LPCWSTR wzFile,
231 __out FILE_ARCHITECTURE *pArchitecture
232 );
233HRESULT DAPI FileToString(
234 __in_z LPCWSTR wzFile,
235 __out LPWSTR *psczString,
236 __out_opt FILE_ENCODING *pfeEncoding
237 );
238HRESULT 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