master
  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_CLFSMGMT
  7#define _INC_CLFSMGMT
  8#if (_WIN32_WINNT >= 0x0600)
  9#ifdef __cplusplus
 10extern "C" {
 11#endif
 12
 13typedef enum _CLFS_MGMT_POLICY_TYPE {
 14  ClfsMgmtPolicyMaximumSize             = 0x0,
 15  ClfsMgmtPolicyMinimumSize             = 0x1,
 16  ClfsMgmtPolicyNewContainerSize        = 0x2,
 17  ClfsMgmtPolicyGrowthRate              = 0x3,
 18  ClfsMgmtPolicyLogTail                 = 0x4,
 19  ClfsMgmtPolicyAutoShrink              = 0x5,
 20  ClfsMgmtPolicyAutoGrow                = 0x6,
 21  ClfsMgmtPolicyNewContainerPrefix      = 0x7,
 22  ClfsMgmtPolicyNewContainerSuffix      = 0x8,
 23  ClfsMgmtPolicyNewContainerExtension   = 9,
 24  ClfsMgmtPolicyInvalid                 = 10
 25} CLFS_MGMT_POLICY_TYPE, *PCLFS_MGMT_POLICY_TYPE;
 26
 27typedef enum _CLFS_MGMT_NOTIFICATION_TYPE {
 28  ClfsMgmtAdvanceTailNotification = 0,
 29  ClfsMgmtLogFullHandlerNotification,
 30  ClfsMgmtLogUnpinnedNotification,
 31  ClfsMgmtLogWriteNotification
 32} CLFS_MGMT_NOTIFICATION_TYPE;
 33
 34typedef struct _CLFS_MGMT_NOTIFICATION {
 35  CLFS_MGMT_NOTIFICATION_TYPE Notification;
 36  CLFS_LSN                    Lsn;
 37  USHORT                      LogIsPinned;
 38} CLFS_MGMT_NOTIFICATION, *PCLFS_MGMT_NOTIFICATION;
 39
 40typedef struct _CLFS_MGMT_POLICY {
 41  ULONG Version;
 42  ULONG LengthInBytes;
 43  ULONG PolicyFlags;
 44  CLFS_MGMT_POLICY_TYPE PolicyType;
 45  union {
 46    struct {
 47      ULONG Containers;
 48    } MaximumSize;
 49    struct {
 50      ULONG Containers;
 51    } MinimumSize;
 52    struct {
 53      ULONG SizeInBytes;
 54    } NewContainerSize;
 55    struct {
 56      ULONG AbsoluteGrowthInContainers;
 57      ULONG RelativeGrowthPercentage;
 58    } GrowthRate;
 59    struct {
 60      ULONG MinimumAvailablePercentage;
 61      ULONG MinimumAvailableContainers;
 62    } LogTail;
 63    struct {
 64      ULONG Percentage;
 65    } AutoShrink;
 66    struct {
 67      ULONG Enabled;
 68    } AutoGrow;
 69    struct {
 70      USHORT PrefixLengthInBytes;
 71      WCHAR PrefixString[1];
 72    } NewContainerPrefix;
 73    struct {
 74      ULONGLONG NextContainerSuffix;
 75    } NewContainerSuffix;
 76    struct {
 77      USHORT ExtensionLengthInBytes;
 78      WCHAR ExtensionString[1];
 79    } NewContainerExtension;
 80  } PolicyParameters;
 81} CLFS_MGMT_POLICY,  *PCLFS_MGMT_POLICY;
 82
 83/* Conflict with CLFS_MGMT_POLICY_TYPE
 84typedef struct _ClfsMgmtPolicyAutoGrow {
 85  ULONG Enabled;
 86} ClfsMgmtPolicyAutoGrow;
 87
 88typedef struct _ClfsMgmtPolicyAutoShrink {
 89  ULONG Percentage;
 90} ClfsMgmtPolicyAutoShrink;
 91
 92typedef struct _ClfsMgmtPolicyGrowthRate {
 93  ULONG AbsoluteGrowthInContainers;
 94  ULONG RelativeGrowthPercentage;
 95} ClfsMgmtPolicyGrowthRate;
 96
 97typedef struct _ClfsMgmtPolicyLogTail {
 98  ULONG MinimumAvailablePercentage;
 99  ULONG MinimumAvailableContainers;
100} ClfsMgmtPolicyLogTail;
101
102typedef struct _ClfsMgmtPolicyMinimumSize {
103  ULONG Containers;
104} ClfsMgmtPolicyMinimumSize;
105
106typedef struct _ClfsMgmtPolicyMaximumSize {
107  ULONG Containers;
108} ClfsMgmtPolicyMaximumSize;
109
110typedef struct _ClfsMgmtPolicyNewContainerExtension {
111  ULONG ExtensionLengthInBytes;
112  WCHAR ExtensionString[1];
113} ClfsMgmtPolicyNewContainerExtension, *PClfsMgmtPolicyNewContainerExtension;
114
115typedef struct _ClfsMgmtPolicyNewContainerPrefix {
116  USHORT PrefixLengthInBytes;
117  WCHAR  PrefixString[1];
118} ClfsMgmtPolicyNewContainerPrefix;
119
120typedef struct _ClfsMgmtPolicyNewContainerSize {
121  ULONG SizeInBytes;
122} ClfsMgmtPolicyNewContainerSize;
123
124typedef struct _ClfsMgmtPolicyNewContainerSuffix {
125  ULONGLONG NextContainerSuffix;
126} ClfsMgmtPolicyNewContainerSuffix, *PClfsMgmtPolicyNewContainerSuffix;
127*/
128#ifdef __cplusplus
129}
130#endif
131#endif /*(_WIN32_WINNT >= 0x0600)*/
132#endif /*_INC_CLFSMGMT*/