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
10 extern "C" {
11 #endif
12 
13 typedef 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 
27 typedef enum _CLFS_MGMT_NOTIFICATION_TYPE {
28   ClfsMgmtAdvanceTailNotification = 0,
29   ClfsMgmtLogFullHandlerNotification,
30   ClfsMgmtLogUnpinnedNotification,
31   ClfsMgmtLogWriteNotification
32 } CLFS_MGMT_NOTIFICATION_TYPE;
33 
34 typedef 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 
40 typedef 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
84 typedef struct _ClfsMgmtPolicyAutoGrow {
85   ULONG Enabled;
86 } ClfsMgmtPolicyAutoGrow;
87 
88 typedef struct _ClfsMgmtPolicyAutoShrink {
89   ULONG Percentage;
90 } ClfsMgmtPolicyAutoShrink;
91 
92 typedef struct _ClfsMgmtPolicyGrowthRate {
93   ULONG AbsoluteGrowthInContainers;
94   ULONG RelativeGrowthPercentage;
95 } ClfsMgmtPolicyGrowthRate;
96 
97 typedef struct _ClfsMgmtPolicyLogTail {
98   ULONG MinimumAvailablePercentage;
99   ULONG MinimumAvailableContainers;
100 } ClfsMgmtPolicyLogTail;
101 
102 typedef struct _ClfsMgmtPolicyMinimumSize {
103   ULONG Containers;
104 } ClfsMgmtPolicyMinimumSize;
105 
106 typedef struct _ClfsMgmtPolicyMaximumSize {
107   ULONG Containers;
108 } ClfsMgmtPolicyMaximumSize;
109 
110 typedef struct _ClfsMgmtPolicyNewContainerExtension {
111   ULONG ExtensionLengthInBytes;
112   WCHAR ExtensionString[1];
113 } ClfsMgmtPolicyNewContainerExtension, *PClfsMgmtPolicyNewContainerExtension;
114 
115 typedef struct _ClfsMgmtPolicyNewContainerPrefix {
116   USHORT PrefixLengthInBytes;
117   WCHAR  PrefixString[1];
118 } ClfsMgmtPolicyNewContainerPrefix;
119 
120 typedef struct _ClfsMgmtPolicyNewContainerSize {
121   ULONG SizeInBytes;
122 } ClfsMgmtPolicyNewContainerSize;
123 
124 typedef struct _ClfsMgmtPolicyNewContainerSuffix {
125   ULONGLONG NextContainerSuffix;
126 } ClfsMgmtPolicyNewContainerSuffix, *PClfsMgmtPolicyNewContainerSuffix;
127 */
128 #ifdef __cplusplus
129 }
130 #endif
131 #endif /*(_WIN32_WINNT >= 0x0600)*/
132 #endif /*_INC_CLFSMGMT*/
133