FILE_ALLOCATION_INFORMATION structure (ntifs.h)

The FILE_ALLOCATION_INFORMATION structure is used to set the allocation size for a file.

Syntax

typedef struct _FILE_ALLOCATION_INFORMATION {
  LARGE_INTEGER AllocationSize;
} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;

Members

AllocationSize

File allocation size, in bytes. Usually this value is a multiple of the sector or cluster size of the underlying physical device.

Remarks

This operation can be performed in either of the following ways:

  • Call FltSetInformationFile or ZwSetInformationFile, passing FileAllocationInformation as the value of FileInformationClass and passing a caller-allocated, FILE_ALLOCATION_INFORMATION-structured buffer as the value of FileInformation. The FileHandle parameter specifies the file whose allocation size is to be set.

  • Create an IRP with major function code IRP_MJ_SET_INFORMATION.

This operation is valid only for files. It is undefined for directories.

File system minifilters must use FltSetInformationFile, not ZwSetInformationFile, to set the allocation size for a file.

FILE_WRITE_DATA access is required to set this information.

A file's allocation size and end-of-file position are independent of each other, with the following exception: The end-of-file position must always be less than or equal to the allocation size. If the allocation size is set to a value that is less than the end-of-file position, the end-of-file position is automatically adjusted to match the allocation size.

The size of the FileInformation buffer passed to FltSetInformationFile or ZwSetInformationFile must be >= sizeof(FILE_ALLOCATION_INFORMATION).

This structure must be aligned on a LONGLONG (8-byte) boundary.

Requirements

Requirement Value
Header ntifs.h (include Ntifs.h, Fltkernel.h)

See also

FILE_END_OF_FILE_INFORMATION

FltSetInformationFile

IRP_MJ_SET_INFORMATION

ZwSetInformationFile