| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-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*/ |