/** * 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*/