1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_CLFSW32
7#define _INC_CLFSW32
8#include <clfs.h>
9#include <clfsmgmt.h>
10
11#if (_WIN32_WINNT >= 0x0600)
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);
17typedef void  (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);
18typedef FILE *PFILE;
19typedef ULONG (__stdcall * CLFS_PRINT_RECORD_ROUTINE) (PFILE, CLFS_RECORD_TYPE, PVOID, ULONG);
20
21WINBOOL WINAPI AdvanceLogBase(PVOID pvMarshal,PCLFS_LSN plsnBase,ULONG fFlags,LPOVERLAPPED pOverlapped);
22
23WINBOOL WINAPI AlignReservedLog(PVOID pvMarshal,ULONG cReservedRecords,LONGLONG rgcbReservation,PLONGLONG pcbAlignReservation);
24WINBOOL WINAPI AllocReservedLog(PVOID pvMarshal,ULONG cReservedRecords,PLONGLONG pcbAdjustment);
25
26WINBOOL WINAPI AddLogContainer(HANDLE hLog,PULONGLONG pcbContainer,LPWSTR pwszContainerPath,LPVOID pReserved);
27WINBOOL WINAPI AddLogContainerSet(HANDLE hLog,USHORT cContainers,PULONGLONG pcbContainer,LPWSTR *rgwszContainerPath,PVOID Reserved);
28WINBOOL WINAPI CloseAndResetLogFile(HANDLE hLog);
29
30WINBOOL WINAPI CreateLogContainerScanContext(
31  HANDLE hLog,
32  ULONG cFromContainer,
33  ULONG cContainers,
34  CLFS_SCAN_MODE eScanMode,
35  PCLFS_SCAN_CONTEXT pcxScan,
36  LPOVERLAPPED pOverlapped
37);
38
39HANDLE WINAPI CreateLogFile(
40  LPCWSTR pszLogFileName,
41  ACCESS_MASK fDesiredAccess,
42  DWORD dwShareMode,
43  LPSECURITY_ATTRIBUTES psaLogFile,
44  ULONG fCreateDisposition,
45  ULONG fFlagsAndAttributes
46);
47
48WINBOOL WINAPI ScanLogContainers(
49  PCLFS_SCAN_CONTEXT pcxScan,
50  CLFS_SCAN_MODE eScanMode,
51  LPVOID pReserved
52);
53
54WINBOOL WINAPI CreateLogMarshallingArea(
55  HANDLE hLog,
56  CLFS_BLOCK_ALLOCATION pfnAllocBuffer,
57  CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
58  PVOID   pvBlockAllocContext,
59  ULONG cbMarshallingBuffer,
60  ULONG  cMaxWriteBuffers,
61  ULONG cMaxReadBuffers,
62  PVOID *ppvMarshal
63);
64
65WINBOOL WINAPI DeleteLogMarshallingArea(
66  PVOID pvMarshal
67);
68
69WINBOOL WINAPI DeleteLogByHandle(
70  HANDLE hLog
71);
72
73WINBOOL WINAPI DeleteLogFile(
74  LPCWSTR pszLogFileName,
75  PVOID pvReserved
76);
77
78WINBOOL WINAPI DeregisterManageableLogClient(
79  HANDLE hLog
80);
81
82WINBOOL WINAPI DumpLogRecords(
83  PWSTR pwszLogFileName,
84  CLFS_RECORD_TYPE fRecordType,
85  PCLFS_LSN plsnStart,
86  PCLFS_LSN plsnEnd,
87  PFILE pstrmOut,
88  CLFS_PRINT_RECORD_ROUTINE pfnPrintRecord,
89  CLFS_BLOCK_ALLOCATION pfnAllocBlock,
90  CLFS_BLOCK_DEALLOCATION pfnFreeBlock,
91  PVOID   pvBlockAllocContext,
92  ULONG cbBlock,
93  ULONG cMaxBlocks
94);
95
96WINBOOL WINAPI ReadLogRecord(
97  PVOID pvMarshal,
98  PCLFS_LSN plsnFirst,
99  CLFS_CONTEXT_MODE eContextMode,
100  PVOID *ppvReadBuffer,
101  PULONG pcbReadBuffer,
102  PCLFS_RECORD_TYPE peRecordType,
103  PCLFS_LSN plsnUndoNext,
104  PCLFS_LSN plsnPrevious,
105  PVOID *ppvReadContext,
106  LPOVERLAPPED pOverlapped
107);
108
109WINBOOL WINAPI ReadNextLogRecord(
110  PVOID pvReadContext,
111  PVOID *ppvBuffer,
112  PULONG pcbBuffer,
113  PCLFS_RECORD_TYPE peRecordType,
114  PCLFS_LSN plsnUser,
115  PCLFS_LSN plsnUndoNext,
116  PCLFS_LSN plsnPrevious,
117  PCLFS_LSN plsnRecord,
118  LPOVERLAPPED pOverlapped
119);
120
121WINBOOL WINAPI FlushLogBuffers(
122  PVOID pvMarshal,
123  LPOVERLAPPED pOverlapped
124);
125
126WINBOOL WINAPI FlushLogToLsn(
127  PVOID pvMarshalContext,
128  PCLFS_LSN plsnFlush,
129  PCLFS_LSN plsnLastFlushed,
130  LPOVERLAPPED pOverlapped
131);
132
133WINBOOL WINAPI FreeReservedLog(
134  PVOID pvMarshal,
135  ULONG cReservedRecords,
136  PLONGLONG pcbAdjustment
137);
138
139WINBOOL WINAPI GetLogContainerName(
140  HANDLE hLog,
141  CLFS_CONTAINER_ID cidLogicalContainer,
142  LPCWSTR pwstrContainerName,
143  ULONG cLenContainerName,
144  PULONG pcActualLenContainerName
145);
146
147WINBOOL WINAPI GetLogFileInformation(
148  HANDLE hLog,
149  PCLFS_INFORMATION pinfoBuffer,
150  PULONG cbBuffer
151);
152
153WINBOOL WINAPI GetLogIoStatistics(
154  HANDLE hLog,
155  PVOID pvStatsBuffer,
156  ULONG cbStatsBuffer,
157  CLFS_IOSTATS_CLASS eStatsClass,
158  PULONG pcbStatsWritten
159);
160
161typedef LPVOID CLFS_LOG_ARCHIVE_CONTEXT;
162typedef CLFS_LOG_ARCHIVE_CONTEXT *PCLFS_LOG_ARCHIVE_CONTEXT;
163
164WINBOOL WINAPI GetNextLogArchiveExtent(
165  CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext,
166  CLFS_ARCHIVE_DESCRIPTOR rgadExtent[],
167  ULONG cDescriptors,
168  PULONG pcDescriptorsReturned
169);
170
171WINBOOL WINAPI PrepareLogArchive(
172  HANDLE hLog,
173  PWSTR pszBaseLogFileName,
174  ULONG cLen,
175  const PCLFS_LSN plsnLow,
176  const PCLFS_LSN plsnHigh,
177  PULONG pcActualLength,
178  PULONGLONG poffBaseLogFileData,
179  PULONGLONG pcbBaseLogFileLength,
180  PCLFS_LSN plsnBase,
181  PCLFS_LSN plsnLast,
182  PCLFS_LSN plsnCurrentArchiveTail,
183  PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext
184);
185
186WINBOOL WINAPI TerminateLogArchive(
187  CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext
188);
189
190ULONG WINAPI LsnBlockOffset(
191  const CLFS_LSN *plsn
192);
193
194CLFS_CONTAINER_ID WINAPI LsnContainer(
195  const CLFS_LSN *plsn
196);
197
198CLFS_LSN WINAPI LsnCreate(
199  CLFS_CONTAINER_ID cidContainer,
200  ULONG offBlock,
201  ULONG cRecord
202);
203
204ULONG WINAPI LsnRecordSequence(
205  const CLFS_LSN *plsn
206);
207
208WINBOOL WINAPI PrepareLogArchive(
209  HANDLE hLog,
210  PWSTR pszBaseLogFileName,
211  ULONG cLen,
212  const PCLFS_LSN plsnLow,
213  const PCLFS_LSN plsnHigh,
214  PULONG pcActualLength,
215  PULONGLONG poffBaseLogFileData,
216  PULONGLONG pcbBaseLogFileLength,
217  PCLFS_LSN plsnBase,
218  PCLFS_LSN plsnLast,
219  PCLFS_LSN plsnCurrentArchiveTail,
220  PCLFS_LOG_ARCHIVE_CONTEXT ppvArchiveContext
221);
222
223WINBOOL WINAPI QueryLogPolicy(
224  HANDLE hLog,
225  CLFS_MGMT_POLICY_TYPE ePolicyType,
226  PCLFS_MGMT_POLICY pPolicyBuffer,
227  PULONG pcbPolicyBuffer
228);
229
230WINBOOL WINAPI ReadLogArchiveMetadata(
231  CLFS_LOG_ARCHIVE_CONTEXT pvArchiveContext,
232  ULONG cbOffset,
233  ULONG cbBytesToRead,
234  PBYTE pbReadBuffer,
235  PULONG pcbBytesRead
236);
237
238WINBOOL WINAPI ReadLogRestartArea(
239  PVOID pvMarshal,
240  PVOID *ppvRestartBuffer,
241  PULONG pcbRestartBuffer,
242  PCLFS_LSN plsn,
243  PVOID *ppvContext,
244  LPOVERLAPPED pOverlapped
245);
246
247WINBOOL WINAPI ReadPreviousLogRestartArea(
248  PVOID pvReadContext,
249  PVOID *ppvRestartBuffer,
250  PULONG pcbRestartBuffer,
251  PCLFS_LSN plsnRestart,
252  LPOVERLAPPED pOverlapped
253);
254
255WINBOOL WINAPI RemoveLogContainer(
256  HANDLE hLog,
257  LPWSTR pwszContainerPath,
258  WINBOOL fForce,
259  LPVOID pReserved
260);
261
262WINBOOL WINAPI RemoveLogContainerSet(
263  HANDLE hLog,
264  USHORT cContainers,
265  LPWSTR *rgwszContainerPath,
266  WINBOOL fForce,
267  LPVOID pReserved
268);
269
270WINBOOL WINAPI ReserveAndAppendLog(
271  PVOID pvMarshal,
272  PCLFS_WRITE_ENTRY rgWriteEntries,
273  ULONG cWriteEntries,
274  PCLFS_LSN plsnUndoNext,
275  PCLFS_LSN plsnPrevious,
276  ULONG cReserveRecords,
277  LONGLONG rgcbReservation[],
278  ULONG fFlags,
279  PCLFS_LSN plsn,
280  LPOVERLAPPED pOverlapped
281);
282
283WINBOOL WINAPI ReserveAndAppendLogAligned(
284  PVOID pvMarshal,
285  PCLFS_WRITE_ENTRY rgWriteEntries,
286  ULONG cWriteEntries,
287  ULONG cbEntryAlignment,
288  PCLFS_LSN plsnUndoNext,
289  PCLFS_LSN plsnPrevious,
290  ULONG cReserveRecords,
291  LONGLONG rgcbReservation[],
292  ULONG fFlags,
293  PCLFS_LSN plsn,
294  LPOVERLAPPED overlapped
295);
296
297WINBOOL WINAPI SetEndOfLog(
298  HANDLE hLog,
299  PCLFS_LSN plsnEnd,
300  LPOVERLAPPED lpOverlapped
301);
302
303WINBOOL WINAPI SetLogArchiveMode(
304  HANDLE hLog,
305  CLFS_LOG_ARCHIVE_MODE eMode
306);
307
308WINBOOL WINAPI SetLogArchiveTail(
309  HANDLE hLog,
310  PCLFS_LSN plsnArchiveTail,
311  LPVOID pReserved
312);
313
314WINBOOL WINAPI TerminateReadLog(
315  PVOID pvCursorContext
316);
317
318WINBOOL WINAPI ValidateLog(
319  LPCWSTR pszLogFileName,
320  LPSECURITY_ATTRIBUTES psaLogFile,
321  PCLFS_INFORMATION pinfoBuffer,
322  PULONG pcbBuffer
323);
324
325#ifdef __cplusplus
326}
327#endif
328#endif /* (_WIN32_WINNT >= 0x0600) */
329#endif /*_INC_CLFSW32*/
330