The CLFS_MGMT_POLICY structure holds a description of a policy for managing a CLFS log.


typedef struct _CLFS_MGMT_POLICY {
  ULONG                 Version;
  ULONG                 LengthInBytes;
  ULONG                 PolicyFlags;
  union {
    struct {
      ULONG Containers;
    } MaximumSize;
    struct {
      ULONG Containers;
    } MinimumSize;
    struct {
      ULONG SizeInBytes;
    } NewContainerSize;
    struct {
      ULONG AbsoluteGrowthInContainers;
      ULONG RelativeGrowthPercentage;
    } GrowthRate;
    struct {
      ULONG MinimumAvailablePercentage;
      ULONG MinimumAvailableContainers;
    } LogTail;
    struct {
      ULONG Percentage;
    } AutoShrink;
    struct {
      ULONG Enabled;
    } AutoGrow;
    struct {
      USHORT PrefixLengthInBytes;
      WCHAR  PrefixString[1];
    } NewContainerPrefix;
    struct {
      ULONGLONG NextContainerSuffix;
    } NewContainerSuffix;
    struct {
      USHORT ExtensionLengthInBytes;
      WCHAR  ExtensionString[1];
    } NewContainerExtension;
  } PolicyParameters;



The version of the CLFS_MGMT_POLICY structure. Set this to CLFS_MGMT_POLICY_VERSION.


The length of the CLFS_MGMT_POLICY structure.


The flags that apply to this instance of the CLFS_MGMT_POLICY structure. The only flag that has been implemented for this release is LOG_POLICY_OVERWRITE, which indicates that when the policy is installed, it will replace the policy of the same type, if such a policy already exists.


A value of the CLFS_MGMT_POLICY_TYPE enumeration that supplies the type of this instance of the CLFS_MGMT_POLICY structure.


The union that provides the detailed information about this instance of the CLFS_MGMT_POLICY structure.


The maximum number of containers that the log will use.


The minimum number of containers that the log will use.


The size of each of the log's containers.


The number of containers that should be added when the size of the log is increased. If the RelativeGrowthPercentage member is nonzero, then AbsoluteGrowthInContainers must be zero.


The percentage by which the log's size should increase when the log grows, expressed as a number between zero and 100. For example, if the log consisted of 32 containers and RelativeGrowthPercentage was ten, then, when the log needed to grow, it would grow by three (32 * 10 percent, rounded down to the nearest integer) containers. If the AbsoluteGrowthInContainers member is nonzero, then RelativeGrowthPercentage must be zero.


When CLFS management notifies the client to move its log tail, it will specify that the tail be moved to an LSN that leaves at least MinimumAvailablePercentage percent of the log free. If the MinimumAvailableContainers member is nonzero, then MinimumAvailablePercentage must be zero.


When CLFS management notifies the client to move its log tail, it will specify that the tail be moved to an LSN that leaves at least MinimumAvailableContainers containers free. If the MinimumAvailablePercentage member is nonzero, then MinimumAvailableContainers must be zero.


When the percentage of free space in the log reaches Percentage, the log will shrink. Percentage is expressed as a number between 0 and 100, so a value of 25 would mean 25 percent.


A numeric value that determines whether automatic log growth is enabled. Any nonzero value enables automatic growth.


The length, in bytes, of the PrefixString member.


A wide-character string that contains the full path to the directory where the log's containers reside, as well as a prefix that will be used as part of the file name for each container in the log.


The number to use as the suffix of the file name for the next container in the log. To form the file name, the number is converted to a string of decimal digits and appended to the prefix string. The number is incremented for the file name of each subsequent container.


The length, in bytes, of the ExtensionString member.


A wide-character string that contains the extension to the file name for each container in the log. Container file names are built using the format [prefix][suffix][.extension]. An extension is optional. The default extension is the empty string.


The way a CLFS_MGMT_POLICY structure is interpreted depends on the type of policy that the structure holds.

You can provide policies that specify how the log will be managed. Each policy is an instance of the CLFS_MGMT_POLICY structure, but the structure is interpreted differently depending on the policy type. CLFS uses the information that you provided in the policies to tailor how it manages the log.

When you create a CLFS_MGMT_POLICY structure whose PolicyType is ClfsMgmtPolicyNewContainerPrefix, be sure to allocate enough space to hold the PolicyParameters.NewContainerPrefix.PrefixString string.

You can only install a policy whose policy type specified in the PolicyType value is ClfsMgmtPolicyNewContainerSize before there are any containers in the log. You can change other policies after the log exists.


Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)

See Also