OutputBuffer is of type FILE_FS_VOLUME_INFORMATION, as described in [MS-FSCC] section 2.5.9.

This routine uses the following local variables:

  • 32-bit unsigned integers: RemainingLength, BytesToCopy

Pseudocode for the operation is as follows:

  • If OutputBufferSize is smaller than BlockAlign(FieldOffset(FILE_FS_VOLUME_INFORMATION.VolumeLabel), 8), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.

  • OutputBuffer MUST be constructed as follows:

    • OutputBuffer.VolumeCreationTime set to Open.File.Volume.VolumeCreationTime.

    • OutputBuffer.VolumeSerialNumber set to Open.File.Volume.VolumeSerialNumber.

    • OutputBuffer.VolumeLabelLength set to the length, in bytes, of the Open.File.Volume.VolumeLabel string. This value can be zero.

    • OutputBuffer.SupportsObjects set to TRUE.

  • Set RemainingLength to OutputBufferSize - FieldOffset(FILE_FS_VOLUME_INFORMATION.VolumeLabel).

  • If RemainingLength < OutputBuffer.VolumeLabelLength:

    • Set BytesToCopy to RemainingLength.

  • Else:

    • Set BytesToCopy to OutputBuffer.VolumeLabelLength.

  • EndIf

  • Copy BytesToCopy bytes from Volume.VolumeLable to OutputBuffer.VolumeLabel.

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

    • ByteCount set to FieldOffset(FILE_FS_VOLUME_INFORMATION.VolumeLabel) + BytesToCopy.

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