Chris@16
|
1 // thread.hpp --------------------------------------------------------------//
|
Chris@16
|
2
|
Chris@16
|
3 // Copyright 2010 Vicente J. Botet Escriba
|
Chris@16
|
4
|
Chris@16
|
5 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
6 // See http://www.boost.org/LICENSE_1_0.txt
|
Chris@16
|
7
|
Chris@16
|
8
|
Chris@16
|
9 #ifndef BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP
|
Chris@16
|
10 #define BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP
|
Chris@16
|
11
|
Chris@16
|
12 #include <boost/detail/winapi/basic_types.hpp>
|
Chris@16
|
13 #include <boost/detail/winapi/security.hpp>
|
Chris@16
|
14
|
Chris@16
|
15 #ifdef BOOST_HAS_PRAGMA_ONCE
|
Chris@16
|
16 #pragma once
|
Chris@16
|
17 #endif
|
Chris@16
|
18
|
Chris@16
|
19 namespace boost
|
Chris@16
|
20 {
|
Chris@16
|
21 namespace detail
|
Chris@16
|
22 {
|
Chris@16
|
23 namespace winapi
|
Chris@16
|
24 {
|
Chris@16
|
25 #if defined( BOOST_USE_WINDOWS_H )
|
Chris@16
|
26 using ::CreateFileA;
|
Chris@16
|
27 using ::DeleteFileA;
|
Chris@16
|
28 using ::FindFirstFileA;
|
Chris@16
|
29 using ::FindNextFileA;
|
Chris@16
|
30 using ::FindClose;
|
Chris@16
|
31 using ::GetFileSizeEx;
|
Chris@16
|
32 using ::MoveFileExA;
|
Chris@16
|
33 using ::SetFileValidData;
|
Chris@16
|
34 #else
|
Chris@16
|
35 extern "C" {
|
Chris@16
|
36 typedef struct _OVERLAPPED {
|
Chris@16
|
37 ULONG_PTR Internal;
|
Chris@16
|
38 ULONG_PTR InternalHigh;
|
Chris@16
|
39 union {
|
Chris@16
|
40 struct {
|
Chris@16
|
41 DWORD Offset;
|
Chris@16
|
42 DWORD OffsetHigh;
|
Chris@16
|
43 } ;
|
Chris@16
|
44 PVOID Pointer;
|
Chris@16
|
45 } ;
|
Chris@16
|
46 HANDLE hEvent;
|
Chris@16
|
47 } OVERLAPPED, *LPOVERLAPPED;
|
Chris@16
|
48
|
Chris@16
|
49
|
Chris@16
|
50 __declspec(dllimport) void * __stdcall
|
Chris@16
|
51 CreateFileA (const char *, unsigned long, unsigned long, struct SECURITY_ATTRIBUTES_*, unsigned long, unsigned long, void *);
|
Chris@16
|
52 __declspec(dllimport) int __stdcall
|
Chris@16
|
53 DeleteFileA (const char *);
|
Chris@16
|
54 __declspec(dllimport) void *__stdcall
|
Chris@16
|
55 FindFirstFileA(const char *lpFileName, win32_find_data_t *lpFindFileData);
|
Chris@16
|
56 __declspec(dllimport) int __stdcall
|
Chris@16
|
57 FindNextFileA(void *hFindFile, win32_find_data_t *lpFindFileData);
|
Chris@16
|
58 __declspec(dllimport) int __stdcall
|
Chris@16
|
59 FindClose(void *hFindFile);
|
Chris@16
|
60 __declspec(dllimport) BOOL __stdcall
|
Chris@16
|
61 GetFileSizeEx(
|
Chris@16
|
62 HANDLE_ hFile,
|
Chris@16
|
63 PLARGE_INTEGER_ lpFileSize
|
Chris@16
|
64 );
|
Chris@16
|
65 __declspec(dllimport) int __stdcall
|
Chris@16
|
66 MoveFileExA (const char *, const char *, unsigned long);
|
Chris@16
|
67 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
68 SetFileValidData(
|
Chris@16
|
69 HANDLE_ hFile,
|
Chris@16
|
70 LONGLONG_ ValidDataLength
|
Chris@16
|
71 );
|
Chris@16
|
72 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
73 SetEndOfFile(
|
Chris@16
|
74 HANDLE_ hFile
|
Chris@16
|
75 );
|
Chris@16
|
76 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
77 SetFilePointerEx(
|
Chris@16
|
78 HANDLE_ hFile,
|
Chris@16
|
79 LARGE_INTEGER_ liDistanceToMove,
|
Chris@16
|
80 PLARGE_INTEGER_ lpNewFilePointer,
|
Chris@16
|
81 DWORD_ dwMoveMethod
|
Chris@16
|
82 );
|
Chris@16
|
83 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
84 LockFile(
|
Chris@16
|
85 HANDLE_ hFile,
|
Chris@16
|
86 DWORD_ dwFileOffsetLow,
|
Chris@16
|
87 DWORD_ dwFileOffsetHigh,
|
Chris@16
|
88 DWORD_ nNumberOfBytesToLockLow,
|
Chris@16
|
89 DWORD_ nNumberOfBytesToLockHigh
|
Chris@16
|
90 );
|
Chris@16
|
91 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
92 UnlockFile(
|
Chris@16
|
93 HANDLE_ hFile,
|
Chris@16
|
94 DWORD_ dwFileOffsetLow,
|
Chris@16
|
95 DWORD_ dwFileOffsetHigh,
|
Chris@16
|
96 DWORD_ nNumberOfBytesToUnlockLow,
|
Chris@16
|
97 DWORD_ nNumberOfBytesToUnlockHigh
|
Chris@16
|
98 );
|
Chris@16
|
99 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
100 LockFileEx(
|
Chris@16
|
101 HANDLE_ hFile,
|
Chris@16
|
102 DWORD_ dwFlags,
|
Chris@16
|
103 DWORD_ dwReserved,
|
Chris@16
|
104 DWORD_ nNumberOfBytesToLockLow,
|
Chris@16
|
105 DWORD_ nNumberOfBytesToLockHigh,
|
Chris@16
|
106 LPOVERLAPPED_ lpOverlapped
|
Chris@16
|
107 );
|
Chris@16
|
108 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
109 UnlockFileEx(
|
Chris@16
|
110 HANDLE_ hFile,
|
Chris@16
|
111 DWORD_ dwReserved,
|
Chris@16
|
112 DWORD_ nNumberOfBytesToUnlockLow,
|
Chris@16
|
113 DWORD_ nNumberOfBytesToUnlockHigh,
|
Chris@16
|
114 LPOVERLAPPED_ lpOverlapped
|
Chris@16
|
115 );
|
Chris@16
|
116 __declspec(dllimport) BOOL_ __stdcall
|
Chris@16
|
117 WriteFile(
|
Chris@16
|
118 HANDLE_ hFile,
|
Chris@16
|
119 LPCVOID_ lpBuffer,
|
Chris@16
|
120 DWORD_ nNumberOfBytesToWrite,
|
Chris@16
|
121 LPDWORD_ lpNumberOfBytesWritten,
|
Chris@16
|
122 LPOVERLAPPED_ lpOverlapped
|
Chris@16
|
123 );
|
Chris@16
|
124 }
|
Chris@16
|
125 #endif
|
Chris@16
|
126 }
|
Chris@16
|
127 }
|
Chris@16
|
128 }
|
Chris@16
|
129
|
Chris@16
|
130 #endif // BOOST_DETAIL_WINAPI_THREAD_HPP
|