clfsw32.h 7.3 KB

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