]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/winapi/include/boost/detail/winapi/file_management.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / winapi / include / boost / detail / winapi / file_management.hpp
CommitLineData
7c673cae
FG
1// file_management.hpp --------------------------------------------------------------//
2
3// Copyright 2010 Vicente J. Botet Escriba
4// Copyright 2015 Andrey Semashev
5// Copyright 2016 Jorge Lodos
6
7// Distributed under the Boost Software License, Version 1.0.
8// See http://www.boost.org/LICENSE_1_0.txt
9
10
11#ifndef BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP
12#define BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP
13
14#include <boost/detail/winapi/basic_types.hpp>
15#include <boost/detail/winapi/limits.hpp>
16#include <boost/detail/winapi/time.hpp>
17#include <boost/detail/winapi/overlapped.hpp>
18
19#ifdef BOOST_HAS_PRAGMA_ONCE
20#pragma once
21#endif
22
23#if !defined( BOOST_USE_WINDOWS_H )
24extern "C" {
25
26#if !defined( BOOST_NO_ANSI_APIS )
27BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
28CreateFileA(
29 boost::detail::winapi::LPCSTR_ lpFileName,
30 boost::detail::winapi::DWORD_ dwDesiredAccess,
31 boost::detail::winapi::DWORD_ dwShareMode,
32 ::_SECURITY_ATTRIBUTES* lpSecurityAttributes,
33 boost::detail::winapi::DWORD_ dwCreationDisposition,
34 boost::detail::winapi::DWORD_ dwFlagsAndAttributes,
35 boost::detail::winapi::HANDLE_ hTemplateFile);
36
37BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
38DeleteFileA(boost::detail::winapi::LPCSTR_ lpFileName);
39
40struct _WIN32_FIND_DATAA;
41BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
42FindFirstFileA(boost::detail::winapi::LPCSTR_ lpFileName, ::_WIN32_FIND_DATAA* lpFindFileData);
43
44BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
45FindNextFileA(boost::detail::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAA* lpFindFileData);
46
47BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
48MoveFileExA(
49 boost::detail::winapi::LPCSTR_ lpExistingFileName,
50 boost::detail::winapi::LPCSTR_ lpNewFileName,
51 boost::detail::winapi::DWORD_ dwFlags);
52
53BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
54GetFileAttributesA(boost::detail::winapi::LPCSTR_ lpFileName);
55
56BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
57AreFileApisANSI(BOOST_DETAIL_WINAPI_VOID);
58#endif
59
60BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
61CreateFileW(
62 boost::detail::winapi::LPCWSTR_ lpFileName,
63 boost::detail::winapi::DWORD_ dwDesiredAccess,
64 boost::detail::winapi::DWORD_ dwShareMode,
65 ::_SECURITY_ATTRIBUTES* lpSecurityAttributes,
66 boost::detail::winapi::DWORD_ dwCreationDisposition,
67 boost::detail::winapi::DWORD_ dwFlagsAndAttributes,
68 boost::detail::winapi::HANDLE_ hTemplateFile);
69
70BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
71DeleteFileW(boost::detail::winapi::LPCWSTR_ lpFileName);
72
73struct _WIN32_FIND_DATAW;
74BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
75FindFirstFileW(boost::detail::winapi::LPCWSTR_ lpFileName, ::_WIN32_FIND_DATAW* lpFindFileData);
76
77BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
78FindNextFileW(boost::detail::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAW* lpFindFileData);
79
80BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
81MoveFileExW(
82 boost::detail::winapi::LPCWSTR_ lpExistingFileName,
83 boost::detail::winapi::LPCWSTR_ lpNewFileName,
84 boost::detail::winapi::DWORD_ dwFlags);
85
86BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
87GetFileAttributesW(boost::detail::winapi::LPCWSTR_ lpFileName);
88
89BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
90FindClose(boost::detail::winapi::HANDLE_ hFindFile);
91
92BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
93GetFileSizeEx(boost::detail::winapi::HANDLE_ hFile, ::_LARGE_INTEGER* lpFileSize);
94
95#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
96
97BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
98SetFileValidData(boost::detail::winapi::HANDLE_ hFile, boost::detail::winapi::LONGLONG_ ValidDataLength);
99
100#endif
101
102BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
103SetEndOfFile(boost::detail::winapi::HANDLE_ hFile);
104
105BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
106LockFile(
107 boost::detail::winapi::HANDLE_ hFile,
108 boost::detail::winapi::DWORD_ dwFileOffsetLow,
109 boost::detail::winapi::DWORD_ dwFileOffsetHigh,
110 boost::detail::winapi::DWORD_ nNumberOfBytesToLockLow,
111 boost::detail::winapi::DWORD_ nNumberOfBytesToLockHigh);
112
113BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
114UnlockFile(
115 boost::detail::winapi::HANDLE_ hFile,
116 boost::detail::winapi::DWORD_ dwFileOffsetLow,
117 boost::detail::winapi::DWORD_ dwFileOffsetHigh,
118 boost::detail::winapi::DWORD_ nNumberOfBytesToUnlockLow,
119 boost::detail::winapi::DWORD_ nNumberOfBytesToUnlockHigh);
120
121BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
122LockFileEx(
123 boost::detail::winapi::HANDLE_ hFile,
124 boost::detail::winapi::DWORD_ dwFlags,
125 boost::detail::winapi::DWORD_ dwReserved,
126 boost::detail::winapi::DWORD_ nNumberOfBytesToLockLow,
127 boost::detail::winapi::DWORD_ nNumberOfBytesToLockHigh,
128 ::_OVERLAPPED* lpOverlapped);
129
130BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
131UnlockFileEx(
132 boost::detail::winapi::HANDLE_ hFile,
133 boost::detail::winapi::DWORD_ dwReserved,
134 boost::detail::winapi::DWORD_ nNumberOfBytesToUnlockLow,
135 boost::detail::winapi::DWORD_ nNumberOfBytesToUnlockHigh,
136 ::_OVERLAPPED* lpOverlapped);
137
138BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
139ReadFile(
140 boost::detail::winapi::HANDLE_ hFile,
141 boost::detail::winapi::LPVOID_ lpBuffer,
142 boost::detail::winapi::DWORD_ nNumberOfBytesToRead,
143 boost::detail::winapi::LPDWORD_ lpNumberOfBytesRead,
144 ::_OVERLAPPED* lpOverlapped);
145
146BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
147WriteFile(
148 boost::detail::winapi::HANDLE_ hFile,
149 boost::detail::winapi::LPCVOID_ lpBuffer,
150 boost::detail::winapi::DWORD_ nNumberOfBytesToWrite,
151 boost::detail::winapi::LPDWORD_ lpNumberOfBytesWritten,
152 ::_OVERLAPPED* lpOverlapped);
153
154BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
155SetFilePointer(
156 boost::detail::winapi::HANDLE_ hFile,
157 boost::detail::winapi::LONG_ lpDistanceToMove,
158 boost::detail::winapi::PLONG_ lpDistanceToMoveHigh,
159 boost::detail::winapi::DWORD_ dwMoveMethod);
160
161struct _BY_HANDLE_FILE_INFORMATION;
162BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
163GetFileInformationByHandle(
164 boost::detail::winapi::HANDLE_ hFile,
165 ::_BY_HANDLE_FILE_INFORMATION* lpFileInformation);
166}
167#endif
168
169namespace boost {
170namespace detail {
171namespace winapi {
172
173#if defined( BOOST_USE_WINDOWS_H )
174
175const DWORD_ INVALID_FILE_SIZE_ = INVALID_FILE_SIZE;
176const DWORD_ INVALID_SET_FILE_POINTER_ = INVALID_SET_FILE_POINTER;
177const DWORD_ INVALID_FILE_ATTRIBUTES_ = INVALID_FILE_ATTRIBUTES;
178
179const DWORD_ FILE_ATTRIBUTE_READONLY_ = FILE_ATTRIBUTE_READONLY;
180const DWORD_ FILE_ATTRIBUTE_HIDDEN_ = FILE_ATTRIBUTE_HIDDEN;
181const DWORD_ FILE_ATTRIBUTE_SYSTEM_ = FILE_ATTRIBUTE_SYSTEM;
182const DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = FILE_ATTRIBUTE_DIRECTORY;
183const DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = FILE_ATTRIBUTE_ARCHIVE;
184const DWORD_ FILE_ATTRIBUTE_DEVICE_ = FILE_ATTRIBUTE_DEVICE;
185const DWORD_ FILE_ATTRIBUTE_NORMAL_ = FILE_ATTRIBUTE_NORMAL;
186const DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = FILE_ATTRIBUTE_TEMPORARY;
187const DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = FILE_ATTRIBUTE_SPARSE_FILE;
188const DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = FILE_ATTRIBUTE_REPARSE_POINT;
189const DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = FILE_ATTRIBUTE_COMPRESSED;
190const DWORD_ FILE_ATTRIBUTE_OFFLINE_ = FILE_ATTRIBUTE_OFFLINE;
191const DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
192const DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = FILE_ATTRIBUTE_ENCRYPTED;
193
194const DWORD_ CREATE_NEW_ = CREATE_NEW;
195const DWORD_ CREATE_ALWAYS_ = CREATE_ALWAYS;
196const DWORD_ OPEN_EXISTING_ = OPEN_EXISTING;
197const DWORD_ OPEN_ALWAYS_ = OPEN_ALWAYS;
198const DWORD_ TRUNCATE_EXISTING_ = TRUNCATE_EXISTING;
199
200const DWORD_ FILE_SHARE_READ_ = FILE_SHARE_READ;
201const DWORD_ FILE_SHARE_WRITE_ = FILE_SHARE_WRITE;
202const DWORD_ FILE_SHARE_DELETE_ = FILE_SHARE_DELETE;
203
204const DWORD_ FILE_BEGIN_ = FILE_BEGIN;
205const DWORD_ FILE_CURRENT_ = FILE_CURRENT;
206const DWORD_ FILE_END_ = FILE_END;
207
208#else // defined( BOOST_USE_WINDOWS_H )
209
210const DWORD_ INVALID_FILE_SIZE_ = ((DWORD_)0xFFFFFFFF);
211const DWORD_ INVALID_SET_FILE_POINTER_ = ((DWORD_)-1);
212const DWORD_ INVALID_FILE_ATTRIBUTES_ = ((DWORD_)-1);
213
214const DWORD_ FILE_ATTRIBUTE_READONLY_ = 0x00000001;
215const DWORD_ FILE_ATTRIBUTE_HIDDEN_ = 0x00000002;
216const DWORD_ FILE_ATTRIBUTE_SYSTEM_ = 0x00000004;
217const DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = 0x00000010;
218const DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = 0x00000020;
219const DWORD_ FILE_ATTRIBUTE_DEVICE_ = 0x00000040;
220const DWORD_ FILE_ATTRIBUTE_NORMAL_ = 0x00000080;
221const DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = 0x00000100;
222const DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = 0x00000200;
223const DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = 0x00000400;
224const DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = 0x00000800;
225const DWORD_ FILE_ATTRIBUTE_OFFLINE_ = 0x00001000;
226const DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = 0x00002000;
227const DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = 0x00004000;
228
229const DWORD_ CREATE_NEW_ = 1;
230const DWORD_ CREATE_ALWAYS_ = 2;
231const DWORD_ OPEN_EXISTING_ = 3;
232const DWORD_ OPEN_ALWAYS_ = 4;
233const DWORD_ TRUNCATE_EXISTING_ = 5;
234
235const DWORD_ FILE_SHARE_READ_ = 0x00000001;
236const DWORD_ FILE_SHARE_WRITE_ = 0x00000002;
237const DWORD_ FILE_SHARE_DELETE_ = 0x00000004;
238
239const DWORD_ FILE_BEGIN_ = 0;
240const DWORD_ FILE_CURRENT_ = 1;
241const DWORD_ FILE_END_ = 2;
242
243#endif // defined( BOOST_USE_WINDOWS_H )
244
245// This constant is not defined in Windows SDK up until 6.0A
246const DWORD_ FILE_ATTRIBUTE_VIRTUAL_ = 0x00010000;
247
248// These constants are not defined in Windows SDK up until 8.0 and MinGW/MinGW-w64 (as of 2016-02-14).
249// They are documented to be supported only since Windows 8/Windows Server 2012
250// but defined unconditionally.
251const DWORD_ FILE_ATTRIBUTE_INTEGRITY_STREAM_ = 0x00008000;
252const DWORD_ FILE_ATTRIBUTE_NO_SCRUB_DATA_ = 0x00020000;
253// Undocumented
254const DWORD_ FILE_ATTRIBUTE_EA_ = 0x00040000;
255
256#if !defined( BOOST_NO_ANSI_APIS )
257using ::DeleteFileA;
258using ::MoveFileExA;
259using ::GetFileAttributesA;
260using ::AreFileApisANSI;
261#endif
262
263using ::DeleteFileW;
264using ::MoveFileExW;
265using ::GetFileAttributesW;
266
267using ::FindClose;
268
269#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
270
271using ::SetFileValidData;
272
273#endif
274
275using ::SetEndOfFile;
276using ::LockFile;
277using ::UnlockFile;
278using ::SetFilePointer;
279
280
281#if !defined( BOOST_NO_ANSI_APIS )
282BOOST_FORCEINLINE HANDLE_ CreateFileA(
283 LPCSTR_ lpFileName,
284 DWORD_ dwDesiredAccess,
285 DWORD_ dwShareMode,
286 SECURITY_ATTRIBUTES_* lpSecurityAttributes,
287 DWORD_ dwCreationDisposition,
288 DWORD_ dwFlagsAndAttributes,
289 HANDLE_ hTemplateFile)
290{
291 return ::CreateFileA(
292 lpFileName,
293 dwDesiredAccess,
294 dwShareMode,
295 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
296 dwCreationDisposition,
297 dwFlagsAndAttributes,
298 hTemplateFile);
299}
300
301typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _WIN32_FIND_DATAA {
302 DWORD_ dwFileAttributes;
303 FILETIME_ ftCreationTime;
304 FILETIME_ ftLastAccessTime;
305 FILETIME_ ftLastWriteTime;
306 DWORD_ nFileSizeHigh;
307 DWORD_ nFileSizeLow;
308 DWORD_ dwReserved0;
309 DWORD_ dwReserved1;
310 CHAR_ cFileName[MAX_PATH_];
311 CHAR_ cAlternateFileName[14];
312#ifdef _MAC
313 DWORD_ dwFileType;
314 DWORD_ dwCreatorType;
315 WORD_ wFinderFlags;
316#endif
317} WIN32_FIND_DATAA_, *PWIN32_FIND_DATAA_, *LPWIN32_FIND_DATAA_;
318
319BOOST_FORCEINLINE HANDLE_ FindFirstFileA(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData)
320{
321 return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
322}
323
324BOOST_FORCEINLINE BOOL_ FindNextFileA(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData)
325{
326 return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
327}
328#endif
329
330BOOST_FORCEINLINE HANDLE_ CreateFileW(
331 LPCWSTR_ lpFileName,
332 DWORD_ dwDesiredAccess,
333 DWORD_ dwShareMode,
334 SECURITY_ATTRIBUTES_* lpSecurityAttributes,
335 DWORD_ dwCreationDisposition,
336 DWORD_ dwFlagsAndAttributes,
337 HANDLE_ hTemplateFile)
338{
339 return ::CreateFileW(
340 lpFileName,
341 dwDesiredAccess,
342 dwShareMode,
343 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
344 dwCreationDisposition,
345 dwFlagsAndAttributes,
346 hTemplateFile);
347}
348
349typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _WIN32_FIND_DATAW {
350 DWORD_ dwFileAttributes;
351 FILETIME_ ftCreationTime;
352 FILETIME_ ftLastAccessTime;
353 FILETIME_ ftLastWriteTime;
354 DWORD_ nFileSizeHigh;
355 DWORD_ nFileSizeLow;
356 DWORD_ dwReserved0;
357 DWORD_ dwReserved1;
358 WCHAR_ cFileName[MAX_PATH_];
359 WCHAR_ cAlternateFileName[14];
360#ifdef _MAC
361 DWORD_ dwFileType;
362 DWORD_ dwCreatorType;
363 WORD_ wFinderFlags;
364#endif
365} WIN32_FIND_DATAW_, *PWIN32_FIND_DATAW_, *LPWIN32_FIND_DATAW_;
366
367typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _BY_HANDLE_FILE_INFORMATION {
368 DWORD_ dwFileAttributes;
369 FILETIME_ ftCreationTime;
370 FILETIME_ ftLastAccessTime;
371 FILETIME_ ftLastWriteTime;
372 DWORD_ dwVolumeSerialNumber;
373 DWORD_ nFileSizeHigh;
374 DWORD_ nFileSizeLow;
375 DWORD_ nNumberOfLinks;
376 DWORD_ nFileIndexHigh;
377 DWORD_ nFileIndexLow;
378} BY_HANDLE_FILE_INFORMATION_, *PBY_HANDLE_FILE_INFORMATION_, *LPBY_HANDLE_FILE_INFORMATION_;
379
380BOOST_FORCEINLINE HANDLE_ FindFirstFileW(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData)
381{
382 return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
383}
384
385BOOST_FORCEINLINE BOOL_ FindNextFileW(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData)
386{
387 return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
388}
389
390BOOST_FORCEINLINE BOOL_ GetFileSizeEx(HANDLE_ hFile, LARGE_INTEGER_* lpFileSize)
391{
392 return ::GetFileSizeEx(hFile, reinterpret_cast< ::_LARGE_INTEGER* >(lpFileSize));
393}
394
395BOOST_FORCEINLINE BOOL_ LockFileEx(
396 HANDLE_ hFile,
397 DWORD_ dwFlags,
398 DWORD_ dwReserved,
399 DWORD_ nNumberOfBytesToLockLow,
400 DWORD_ nNumberOfBytesToLockHigh,
401 OVERLAPPED_* lpOverlapped)
402{
403 return ::LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
404}
405
406BOOST_FORCEINLINE BOOL_ UnlockFileEx(
407 HANDLE_ hFile,
408 DWORD_ dwReserved,
409 DWORD_ nNumberOfBytesToUnlockLow,
410 DWORD_ nNumberOfBytesToUnlockHigh,
411 OVERLAPPED_* lpOverlapped)
412{
413 return ::UnlockFileEx(hFile, dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
414}
415
416BOOST_FORCEINLINE BOOL_ ReadFile(
417 HANDLE_ hFile,
418 LPVOID_ lpBuffer,
419 DWORD_ nNumberOfBytesToWrite,
420 LPDWORD_ lpNumberOfBytesWritten,
421 OVERLAPPED_* lpOverlapped)
422{
423 return ::ReadFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
424}
425
426BOOST_FORCEINLINE BOOL_ WriteFile(
427 HANDLE_ hFile,
428 LPCVOID_ lpBuffer,
429 DWORD_ nNumberOfBytesToWrite,
430 LPDWORD_ lpNumberOfBytesWritten,
431 OVERLAPPED_* lpOverlapped)
432{
433 return ::WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
434}
435
436#if !defined( BOOST_NO_ANSI_APIS )
437BOOST_FORCEINLINE HANDLE_ create_file(
438 LPCSTR_ lpFileName,
439 DWORD_ dwDesiredAccess,
440 DWORD_ dwShareMode,
441 SECURITY_ATTRIBUTES_* lpSecurityAttributes,
442 DWORD_ dwCreationDisposition,
443 DWORD_ dwFlagsAndAttributes,
444 HANDLE_ hTemplateFile)
445{
446 return ::CreateFileA(
447 lpFileName,
448 dwDesiredAccess,
449 dwShareMode,
450 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
451 dwCreationDisposition,
452 dwFlagsAndAttributes,
453 hTemplateFile);
454}
455
456BOOST_FORCEINLINE BOOL_ delete_file(LPCSTR_ lpFileName)
457{
458 return ::DeleteFileA(lpFileName);
459}
460
461BOOST_FORCEINLINE HANDLE_ find_first_file(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData)
462{
463 return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
464}
465
466BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData)
467{
468 return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
469}
470
471BOOST_FORCEINLINE BOOL_ move_file(LPCSTR_ lpExistingFileName, LPCSTR_ lpNewFileName, DWORD_ dwFlags)
472{
473 return ::MoveFileExA(lpExistingFileName, lpNewFileName, dwFlags);
474}
475
476BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCSTR_ lpFileName)
477{
478 return ::GetFileAttributesA(lpFileName);
479}
480#endif
481
482BOOST_FORCEINLINE HANDLE_ create_file(
483 LPCWSTR_ lpFileName,
484 DWORD_ dwDesiredAccess,
485 DWORD_ dwShareMode,
486 SECURITY_ATTRIBUTES_* lpSecurityAttributes,
487 DWORD_ dwCreationDisposition,
488 DWORD_ dwFlagsAndAttributes,
489 HANDLE_ hTemplateFile)
490{
491 return ::CreateFileW(
492 lpFileName,
493 dwDesiredAccess,
494 dwShareMode,
495 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
496 dwCreationDisposition,
497 dwFlagsAndAttributes,
498 hTemplateFile);
499}
500
501BOOST_FORCEINLINE BOOL_ delete_file(LPCWSTR_ lpFileName)
502{
503 return ::DeleteFileW(lpFileName);
504}
505
506BOOST_FORCEINLINE HANDLE_ find_first_file(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData)
507{
508 return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
509}
510
511BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData)
512{
513 return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
514}
515
516BOOST_FORCEINLINE BOOL_ move_file(LPCWSTR_ lpExistingFileName, LPCWSTR_ lpNewFileName, DWORD_ dwFlags)
517{
518 return ::MoveFileExW(lpExistingFileName, lpNewFileName, dwFlags);
519}
520
521BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCWSTR_ lpFileName)
522{
523 return ::GetFileAttributesW(lpFileName);
524}
525
526BOOST_FORCEINLINE BOOL_ GetFileInformationByHandle(HANDLE_ h, BY_HANDLE_FILE_INFORMATION_* info)
527{
528 return ::GetFileInformationByHandle(h, reinterpret_cast< ::_BY_HANDLE_FILE_INFORMATION* >(info));
529}
530
531}
532}
533}
534
535#endif // BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP