OutputBuffer is of type FILE_FS_ATTRIBUTE_INFORMATION, as described in [MS-FSCC] section 2.5.1.

This routine uses the following local variables:

  • 32-bit unsigned integer: RemainingLength, BytesToCopy

Pseudocode for the operation is as follows:

  • If OutputBufferSize is smaller than BlockAlign(FieldOffset(FILE_FS_ATTRIBUTE_INFORMATION.FileSystemName), 4), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.

  • OutputBuffer MUST be constructed as follows:

    • OutputBuffer.FileSystemAttributes set to appropriate values, as specified in [MS-FSCC] section 2.5.1, based on the implementation of the given file system.<145>

    • OutputBuffer.MaximumComponentNameLength set to different values depending on the file system.<146>

    • OutputBuffer.FileSystemNameLength set to the length, in bytes, of the name of the file system on Open.File.Volume.

  • Set RemainingLength to OutputBufferSize - FieldOffset(FILE_FS_ATTRIBUTE_INFORMATION.FileSystemName).

  • If RemainingLength < OutputBuffer.FileSystemNameLength.

    • Set BytesToCopy to RemainingLength.

  • Else

    • Set BytesToCopy to OutputBuffer.FileSystemNameLength.

  • EndIf

  • Copy BytesToCopy bytes from the file system name string to OutputBuffer.FileSystemName.

  • Upon successful completion of the operation, the object store MUST return:

    • ByteCount set to FieldOffset(FILE_FS_ATTRIBUTE_INFORMATION.FileSystemName)+ BytesToCopy.

    • Status set to STATUS_BUFFER_OVERFLOW if BytesToCopy < OutputBuffer.FileSystemNameLength else STATUS_SUCCESS.