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