clfs.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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_CLFS
  7. #define _INC_CLFS
  8. #if (_WIN32_WINNT >= 0x0600)
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. typedef enum {
  13. ClfsContextNone = 0x00,
  14. ClfsContextUndoNext,
  15. ClfsContextPrevious,
  16. ClfsContextForward
  17. } CLFS_CONTEXT_MODE, *PCLFS_CONTEXT_MODE, **PPCLFS_CONTEXT_MODE;
  18. typedef enum _CLFS_IOSTATS_CLASS {
  19. ClfsIoStatsDefault = 0x0000,
  20. ClfsIoStatsMax = 0xFFFF
  21. } CLFS_IOSTATS_CLASS, *PCLFS_IOSTATS_CLASS, **PPCLFS_IOSTATS_CLASS;
  22. typedef enum _CLFS_LOG_ARCHIVE_MODE {
  23. ClfsLogArchiveEnabled = 0x01,
  24. ClfsLogArchiveDisabled = 0x02
  25. } CLFS_LOG_ARCHIVE_MODE, *PCLFS_LOG_ARCHIVE_MODE;
  26. typedef enum _CLFS_RECORD_TYPE {
  27. ClfsDataRecord = 0x01,
  28. ClfsRestartRecord = 0x02,
  29. ClfsClientRecord = 0x3F
  30. } CLFS_RECORD_TYPE, *PCLFS_RECORD_TYPE;
  31. typedef union _CLFS_LSN {
  32. ULONGLONG Internal;
  33. } CLFS_LSN, *PCLFS_LSN;
  34. /*http://msdn.microsoft.com/en-us/library/bb540355%28VS.85%29.aspx*/
  35. typedef enum _CLFS_SCAN_MODE {
  36. CLFS_SCAN_INIT = 0x01,
  37. CLFS_SCAN_FORWARD = 0x02,
  38. CLFS_SCAN_BACKWARD = 0x04,
  39. CLFS_SCAN_CLOSE = 0x08,
  40. CLFS_SCAN_INITIALIZED = 0x10,
  41. CLFS_SCAN_BUFFERED = 0x20
  42. } CLFS_SCAN_MODE;
  43. /* enum guessed from http://msdn.microsoft.com/en-us/library/bb540336%28VS.85%29.aspx */
  44. typedef enum _CLFS_CONTAINER_STATE {
  45. ClfsContainerInitializing = 0x01,
  46. ClfsContainerInactive = 0x02,
  47. ClfsContainerActive = 0x04,
  48. ClfsContainerActivePendingDelete = 0x08,
  49. ClfsContainerPendingArchive = 0x10,
  50. ClfsContainerPendingArchiveAndDelete = 0x20
  51. } CLFS_CONTAINER_STATE;
  52. typedef DWORD CLFS_CONTAINER_ID;
  53. /* Goes in wdm.h */
  54. typedef struct _CLFS_CONTAINER_INFORMATION {
  55. ULONG FileAttributes;
  56. ULONGLONG CreationTime;
  57. ULONGLONG LastAccessTime;
  58. ULONGLONG LastWriteTime;
  59. LONGLONG ContainerSize;
  60. ULONG FileNameActualLength;
  61. ULONG FileNameLength;
  62. WCHAR FileName[MAX_PATH];
  63. CLFS_CONTAINER_STATE State;
  64. CLFS_CONTAINER_ID PhysicalContainerId;
  65. CLFS_CONTAINER_ID LogicalContainerId;
  66. } CLFS_CONTAINER_INFORMATION, *PCLFS_CONTAINER_INFORMATION, **PPCLFS_CONTAINER_INFORMATION;
  67. /**/
  68. typedef struct _CLFS_IO_STATISTICS_HEADER {
  69. UCHAR ubMajorVersion;
  70. UCHAR ubMinorVersion;
  71. CLFS_IOSTATS_CLASS eStatsClass;
  72. USHORT cbLength;
  73. ULONG coffData;
  74. } CLFS_IO_STATISTICS_HEADER, *PCLFS_IO_STATISTICS_HEADER, **PPCLFS_IO_STATISTICS_HEADER;
  75. typedef struct _CLFS_ARCHIVE_DESCRIPTOR {
  76. ULONGLONG coffLow;
  77. ULONGLONG coffHigh;
  78. CLFS_CONTAINER_INFORMATION infoContainer;
  79. } CLFS_ARCHIVE_DESCRIPTOR, *PCLFS_ARCHIVE_DESCRIPTOR, **PPCLFS_ARCHIVE_DESCRIPTOR;
  80. typedef struct _CLFS_INFORMATION {
  81. LONGLONG TotalAvailable;
  82. LONGLONG CurrentAvailable;
  83. LONGLONG TotalReservation;
  84. ULONGLONG BaseFileSize;
  85. ULONGLONG ContainerSize;
  86. ULONG TotalContainers;
  87. ULONG FreeContainers;
  88. ULONG TotalClients;
  89. ULONG Attributes;
  90. ULONG FlushThreshold;
  91. ULONG SectorSize;
  92. CLFS_LSN MinArchiveTailLsn;
  93. CLFS_LSN BaseLsn;
  94. CLFS_LSN LastFlushedLsn;
  95. CLFS_LSN LastLsn;
  96. CLFS_LSN RestartLsn;
  97. GUID Identity;
  98. } CLFS_INFORMATION, *PCLFS_INFORMATION, **PPCLFS_INFORMATION;
  99. typedef struct _CLFS_IO_STATISTICS {
  100. CLFS_IO_STATISTICS_HEADER hdrIoStats;
  101. ULONGLONG cFlush;
  102. ULONGLONG cbFlush;
  103. ULONGLONG cMetaFlush;
  104. ULONGLONG cbMetaFlush;
  105. } CLFS_IO_STATISTICS, *PCLFS_IO_STATISTICS, **PPCLFS_IO_STATISTICS;
  106. typedef struct _CLFS_NODE_ID {
  107. ULONG cType;
  108. ULONG cbNode;
  109. } CLFS_NODE_ID, *PCLFS_NODE_ID;
  110. typedef struct _CLFS_SCAN_CONTEXT {
  111. CLFS_NODE_ID cidNode;
  112. HANDLE hLog;
  113. ULONG cIndex;
  114. ULONG cContainers;
  115. ULONG cContainersReturned;
  116. CLFS_SCAN_MODE eScanMode;
  117. PCLFS_CONTAINER_INFORMATION pinfoContainer;
  118. } CLFS_SCAN_CONTEXT, *PCLFS_SCAN_CONTEXT;
  119. typedef struct _CLFS_WRITE_ENTRY {
  120. PVOID Buffer;
  121. ULONG ByteLength;
  122. } CLFS_WRITE_ENTRY, *PCLFS_WRITE_ENTRY;
  123. WINBOOL WINAPI LsnEqual(
  124. const CLFS_LSN *plsn1,
  125. const CLFS_LSN *plsn2
  126. );
  127. WINBOOL WINAPI LsnGreater(
  128. const CLFS_LSN *plsn1,
  129. const CLFS_LSN *plsn2
  130. );
  131. WINBOOL WINAPI LsnLess(
  132. const CLFS_LSN *plsn1,
  133. const CLFS_LSN *plsn2
  134. );
  135. WINBOOL WINAPI LsnNull(
  136. const CLFS_LSN *plsn
  137. );
  138. #ifdef __cplusplus
  139. }
  140. #endif
  141. #endif /*(_WIN32_WINNT >= 0x0600)*/
  142. #endif /*_INC_CLFS*/