ATOMIC_CREATE_ECP_CONTEXT structure (ntifs.h)

The ATOMIC_CREATE_ECP_CONTEXT structure contains the extra create parameter (ECP) context that allows supplemental operations to be performed on a file atomically during create.

Syntax

typedef struct _ATOMIC_CREATE_ECP_CONTEXT {
  USHORT               Size;
  USHORT               InFlags;
  USHORT               OutFlags;
  USHORT               ReparseBufferLength;
  PREPARSE_DATA_BUFFER ReparseBuffer;
  LONGLONG             FileSize;
  LONGLONG             ValidDataLength;
  PFILE_TIMESTAMPS     FileTimestamps;
  ULONG                FileAttributes;
  ULONG                UsnSourceInfo;
  USN                  Usn;
  ULONG                SuppressFileAttributeInheritanceMask;
  ULONG                InOpFlags;
  ULONG                OutOpFlags;
  ULONG                InGenFlags;
  ULONG                OutGenFlags;
  ULONG                CaseSensitiveFlagsMask;
  ULONG                InCaseSensitiveFlags;
  ULONG                OutCaseSensitiveFlags;
} ATOMIC_CREATE_ECP_CONTEXT, *PATOMIC_CREATE_ECP_CONTEXT;

Members

Size

The size of this context structure, in bytes.

InFlags

Flags that indicate the requested supplemental operation(s) to be performed with the create operation.

Value Meaning
ATOMIC_CREATE_ECP_IN_FLAG_SPARSE_SPECIFIED Requests that the sparse flag be set on the file.
ATOMIC_CREATE_ECP_IN_FLAG_REPARSE_POINT_SPECIFIED Requests that a reparse point be set on the file.
ATOMIC_CREATE_ECP_IN_FLAG_EOF_SPECIFIED Requests that a file size be set on the file. This also implies
that on-disk allocation will occur to support the requested file size.
ATOMIC_CREATE_ECP_IN_FLAG_VDL_SPECIFIED Requests that a valid data length be set on the file. This also implies that the file size be set to at least the requested valid data length. NOTE: this is considered a privileged operation if it could potentially
expose uninitialized data.
ATOMIC_CREATE_ECP_IN_FLAG_OPERATION_MASK Use this flag as a mask to specify the other InFlags flag values.
ATOMIC_CREATE_ECP_IN_FLAG_BEST_EFFORT Indicates that the file system should perform the create operation even if some of the requested supplemental operations could not be
performed or are not supported by the file system. The caller can check OutFlags to see which operations were performed. If this flag is not specified, the file system should fail the create operation if it cannot successfully perform all of the requested supplemental operations.

OutFlags

Flags that indicate the actual supplemental operation(s) performed with a successful create operation.

Value Meaning
ATOMIC_CREATE_ECP_OUT_FLAG_SPARSE_SET Indicates that the sparse flag was set on the file.
ATOMIC_CREATE_ECP_OUT_FLAG_REPARSE_POINT_SET Indicates that a reparse point was set on the file.
ATOMIC_CREATE_ECP_OUT_FLAG_EOF_SET Indicates that a file size was set on the file, and that on-disk allocation occurred to support the requested file size.
ATOMIC_CREATE_ECP_OUT_FLAG_VDL_SET Indicates that a valid data length was set on the file, and that the file size was set to at least the requested valid data length.
ATOMIC_CREATE_ECP_OUT_FLAG_OPERATION_MASK Use this flag value as a mask to determine the supplemental operations that were performed with the create operation.

ReparseBufferLength

The length of the ReparseBuffer member. This value can't exceed the MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16K).

ReparseBuffer

The optional value that indicates the type of buffer used in the create operation. Possible values are REPARSE_DATA_BUFFER or REPARSE_GUID_DATA_BUFFER.

FileSize

The optional value that is used with ATOMIC_CREATE_ECP_IN_FLAG_EOF_SPECIFIED to indicate the requested file size to be set on the file.

ValidDataLength

The optional value that is used with ATOMIC_CREATE_ECP_IN_FLAG_VDL_SPECIFIED to indicate the requested valid data length to be set on the file.

FileTimestamps

Pointer to an optional FILE_TIMESTAMPS structure which contains the last recorded instance of specific actions on a file.

FileAttributes

Specifies the attributes of a file.

UsnSourceInfo

Specifies optional Update Sequence Number (USN) source info flags.

Usn

Specifies the Update Sequence Number (USN). This value is filled at the end of GUID_ECP_ATOMIC_CREATE .

SuppressFileAttributeInheritanceMask

Mask that indicates the file attributes whose normal inheritance rules should be suppressed.

InOpFlags

ATOMIC_CREATE_ECP_IN_OP_FLAG_xxx flags.

OutOpFlags

ATOMIC_CREATE_ECP_OUT_OP_FLAG_xxx flags.

InGenFlags

ATOMIC_CREATE_ECP_IN_GN_FLAG_xxx flags.

OutGenFlags

ATOMIC_CREATE_ECP_OUT_GN_FLAG_xxx flags.

CaseSensitiveFlagsMask

Indicates which FILE_CS_FLAG_xxx flags are specified; file systems should pick the default values for other flags.

InCaseSensitiveFlags

Input case sensitive flags on the file. Even if no BEST_EFFORT is specified, file systems can ignore some of the InCaseSensitiveFlags. The behavior is similar to FileCaseSensitiveInformation so callers could examine OutCaseSensitiveFlags to know the flags that are set. If a flag is not supported on some file or directory then BEST_EFFORT would take effect.

OutCaseSensitiveFlags

This member returns the case sensitive flags on the file, even if no InCaseSensitiveFlags are specified.

Remarks

The system-defined GUID_ECP_ATOMIC_CREATE** value is used with this ECP context structure when calling ECP-related support routines such as FltAllocateExtraCreateParameter and FsRtlRemoveExtraCreateParameter.

See Introduction to extra create parameters for more information.

Requirements

Requirement Value
Minimum supported client Windows 10, version 1607
Minimum supported server Windows Server 2016
Header ntifs.h