Dela via


2.4.15 FileFullEaInformation

This information class is used to query or set extended attribute (EA) information for a file. For queries, the client provides a list of FILE_GET_EA_INFORMATION (section 2.4.15.1) structures, and a list of FILE_FULL_EA_INFORMATION structures is returned by the server. For setting EA information, the client provides a list of FILE_FULL_EA_INFORMATION structures, and a status code is returned by the server, as specified in section 2.2.

When multiple FILE_FULL_EA_INFORMATION data elements are present in the buffer, each MUST be aligned on a 4-byte boundary. Any bytes inserted for alignment SHOULD be set to zero, and the receiver MUST ignore them. No padding is required following the last data element.

A FILE_FULL_EA_INFORMATION data element is as follows.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

NextEntryOffset

Flags

EaNameLength

EaValueLength

EaName (variable)

...

EaValue (variable)

...

NextEntryOffset (4 bytes): A 32-bit unsigned integer that contains the byte offset from the beginning of this entry, at which the next FILE_FULL_EA_INFORMATION entry is located, if multiple entries are present in the buffer. This member MUST be zero if no other entries follow this one. An implementation MUST use this value to determine the location of the next entry (if multiple entries are present in a buffer).

Flags (1 byte):  An 8-bit unsigned integer that MUST contain one of the following flag values.

Value

Meaning

0x00000000

If no flags are set, this EA does not prevent the file to which the EA belongs from being interpreted by applications that do not understand EAs.

FILE_NEED_EA

0x00000080

If this flag is set, the file to which the EA belongs cannot be interpreted by applications that do not understand EAs.

EaNameLength (1 byte):  An 8-bit unsigned integer that contains the length, in bytes, of the extended attribute name in the EaName field. This value MUST NOT include the terminating null character to EaName.

EaValueLength (2 bytes):  A 16-bit unsigned integer that contains the length, in bytes, of the extended attribute value in the EaValue field. When setting EA information, if this field is zero, then the given EaName and its current value are deleted from the given file.

EaName (variable): An array of 8-bit ASCII characters that contains the extended attribute name followed by a single terminating null character byte. The EaName MUST be less than 255 characters and MUST NOT contain any of the following characters:

ASCII values 0x00 - 0x1F, \ / : * ? " < > | , + = [ ] ;

EaValue (variable):  An array of bytes that contains the extended attribute value. The length of this array is specified by the EaValueLength field.

This operation returns a status code as specified in section 2.2. Upon success, the status code returned by the function that processes this file information class is STATUS_SUCCESS. The most common error codes are listed in the following table.

Error code

Meaning

STATUS_INVALID_DEVICE_REQUEST

0xC0000010

The target file system does not implement this functionality.

STATUS_ACCESS_DENIED

0xC0000022

The handle was not opened to read file data or file attributes.

STATUS_BUFFER_TOO_SMALL

0xC0000023

The buffer is too small to contain the entry. No information has been written to the buffer.

STATUS_NO_EAS_ON_FILE

0xC0000052

The file for which EAs were requested has no EAs.

STATUS_BUFFER_OVERFLOW

0x80000005

The output buffer was filled before all of the EA data could be returned. Only complete FILE_FULL_EA_INFORMATION structures are returned.

STATUS_INVALID_EA_NAME

0x80000013

The Flags field contains a value other than zero or FILE_NEED_EA, or the EaName field is longer than 255 characters, or it contains any of the following characters:

ASCII values 0x00 - 0x1F, \ / : * ? " < > | , + = [ ] ;