| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _INC_CLFS |
| #define _INC_CLFS |
| #if (_WIN32_WINNT >= 0x0600) |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| ClfsContextNone = 0x00, |
| ClfsContextUndoNext, |
| ClfsContextPrevious, |
| ClfsContextForward |
| } CLFS_CONTEXT_MODE, *PCLFS_CONTEXT_MODE, **PPCLFS_CONTEXT_MODE; |
| |
| typedef enum _CLFS_IOSTATS_CLASS { |
| ClfsIoStatsDefault = 0x0000, |
| ClfsIoStatsMax = 0xFFFF |
| } CLFS_IOSTATS_CLASS, *PCLFS_IOSTATS_CLASS, **PPCLFS_IOSTATS_CLASS; |
| |
| typedef enum _CLFS_LOG_ARCHIVE_MODE { |
| ClfsLogArchiveEnabled = 0x01, |
| ClfsLogArchiveDisabled = 0x02 |
| } CLFS_LOG_ARCHIVE_MODE, *PCLFS_LOG_ARCHIVE_MODE; |
| |
| typedef enum _CLFS_RECORD_TYPE { |
| ClfsDataRecord = 0x01, |
| ClfsRestartRecord = 0x02, |
| ClfsClientRecord = 0x3F |
| } CLFS_RECORD_TYPE, *PCLFS_RECORD_TYPE; |
| |
| typedef union _CLFS_LSN { |
| ULONGLONG Internal; |
| } CLFS_LSN, *PCLFS_LSN; |
| |
| /*http://msdn.microsoft.com/en-us/library/bb540355%28VS.85%29.aspx*/ |
| typedef enum _CLFS_SCAN_MODE { |
| CLFS_SCAN_INIT = 0x01, |
| CLFS_SCAN_FORWARD = 0x02, |
| CLFS_SCAN_BACKWARD = 0x04, |
| CLFS_SCAN_CLOSE = 0x08, |
| CLFS_SCAN_INITIALIZED = 0x10, |
| CLFS_SCAN_BUFFERED = 0x20 |
| } CLFS_SCAN_MODE; |
| |
| /* enum guessed from http://msdn.microsoft.com/en-us/library/bb540336%28VS.85%29.aspx */ |
| typedef enum _CLFS_CONTAINER_STATE { |
| ClfsContainerInitializing = 0x01, |
| ClfsContainerInactive = 0x02, |
| ClfsContainerActive = 0x04, |
| ClfsContainerActivePendingDelete = 0x08, |
| ClfsContainerPendingArchive = 0x10, |
| ClfsContainerPendingArchiveAndDelete = 0x20 |
| } CLFS_CONTAINER_STATE; |
| |
| typedef DWORD CLFS_CONTAINER_ID; |
| |
| /* Goes in wdm.h */ |
| typedef struct _CLFS_CONTAINER_INFORMATION { |
| ULONG FileAttributes; |
| ULONGLONG CreationTime; |
| ULONGLONG LastAccessTime; |
| ULONGLONG LastWriteTime; |
| LONGLONG ContainerSize; |
| ULONG FileNameActualLength; |
| ULONG FileNameLength; |
| WCHAR FileName[MAX_PATH]; |
| CLFS_CONTAINER_STATE State; |
| CLFS_CONTAINER_ID PhysicalContainerId; |
| CLFS_CONTAINER_ID LogicalContainerId; |
| } CLFS_CONTAINER_INFORMATION, *PCLFS_CONTAINER_INFORMATION, **PPCLFS_CONTAINER_INFORMATION; |
| /**/ |
| |
| typedef struct _CLFS_IO_STATISTICS_HEADER { |
| UCHAR ubMajorVersion; |
| UCHAR ubMinorVersion; |
| CLFS_IOSTATS_CLASS eStatsClass; |
| USHORT cbLength; |
| ULONG coffData; |
| } CLFS_IO_STATISTICS_HEADER, *PCLFS_IO_STATISTICS_HEADER, **PPCLFS_IO_STATISTICS_HEADER; |
| |
| typedef struct _CLFS_ARCHIVE_DESCRIPTOR { |
| ULONGLONG coffLow; |
| ULONGLONG coffHigh; |
| CLFS_CONTAINER_INFORMATION infoContainer; |
| } CLFS_ARCHIVE_DESCRIPTOR, *PCLFS_ARCHIVE_DESCRIPTOR, **PPCLFS_ARCHIVE_DESCRIPTOR; |
| |
| typedef struct _CLFS_INFORMATION { |
| LONGLONG TotalAvailable; |
| LONGLONG CurrentAvailable; |
| LONGLONG TotalReservation; |
| ULONGLONG BaseFileSize; |
| ULONGLONG ContainerSize; |
| ULONG TotalContainers; |
| ULONG FreeContainers; |
| ULONG TotalClients; |
| ULONG Attributes; |
| ULONG FlushThreshold; |
| ULONG SectorSize; |
| CLFS_LSN MinArchiveTailLsn; |
| CLFS_LSN BaseLsn; |
| CLFS_LSN LastFlushedLsn; |
| CLFS_LSN LastLsn; |
| CLFS_LSN RestartLsn; |
| GUID Identity; |
| } CLFS_INFORMATION, *PCLFS_INFORMATION, **PPCLFS_INFORMATION; |
| |
| typedef struct _CLFS_IO_STATISTICS { |
| CLFS_IO_STATISTICS_HEADER hdrIoStats; |
| ULONGLONG cFlush; |
| ULONGLONG cbFlush; |
| ULONGLONG cMetaFlush; |
| ULONGLONG cbMetaFlush; |
| } CLFS_IO_STATISTICS, *PCLFS_IO_STATISTICS, **PPCLFS_IO_STATISTICS; |
| |
| typedef struct _CLFS_NODE_ID { |
| ULONG cType; |
| ULONG cbNode; |
| } CLFS_NODE_ID, *PCLFS_NODE_ID; |
| |
| typedef struct _CLFS_SCAN_CONTEXT { |
| CLFS_NODE_ID cidNode; |
| HANDLE hLog; |
| ULONG cIndex; |
| ULONG cContainers; |
| ULONG cContainersReturned; |
| CLFS_SCAN_MODE eScanMode; |
| PCLFS_CONTAINER_INFORMATION pinfoContainer; |
| } CLFS_SCAN_CONTEXT, *PCLFS_SCAN_CONTEXT; |
| |
| typedef struct _CLFS_WRITE_ENTRY { |
| PVOID Buffer; |
| ULONG ByteLength; |
| } CLFS_WRITE_ENTRY, *PCLFS_WRITE_ENTRY; |
| |
| WINBOOL WINAPI LsnEqual( |
| const CLFS_LSN *plsn1, |
| const CLFS_LSN *plsn2 |
| ); |
| |
| WINBOOL WINAPI LsnGreater( |
| const CLFS_LSN *plsn1, |
| const CLFS_LSN *plsn2 |
| ); |
| |
| WINBOOL WINAPI LsnLess( |
| const CLFS_LSN *plsn1, |
| const CLFS_LSN *plsn2 |
| ); |
| |
| WINBOOL WINAPI LsnNull( |
| const CLFS_LSN *plsn |
| ); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /*(_WIN32_WINNT >= 0x0600)*/ |
| #endif /*_INC_CLFS*/ |