3.3.5.20.2 Handling SMB2_0_INFO_FILESYSTEM
The information classes that are supported for querying file systems are listed in section 2.2.37. Documentation for these is provided in [MS-FSCC] section 2.5.
Requests for information classes not listed in section 2.2.37 but documented in [MS-FSCC] section 2.5 SHOULD be failed with STATUS_NOT_SUPPORTED.
Requests for information classes not documented in [MS-FSCC] section 2.5 SHOULD be failed with STATUS_INVALID_INFO_CLASS.
The server MUST query the information requested from the underlying volume that hosts the open in the object store.<418> If the store does not support the data requested, the server MUST fail the request with STATUS_NOT_SUPPORTED.
Depending on the information class, the output data consists of a fixed portion followed by optional variable-length data. If the OutputBufferLength given in the client request is either zero or is insufficient to hold the fixed length part of the information requested, the server MUST fail the request with STATUS_INFO_LENGTH_MISMATCH and MUST return error data, as specified in section 2.2.2 with ByteCount set to 8, ErrorDataLength set to 0, and ErrorId set to 0 if Connection.Dialect is "3.1.1"; otherwise, ByteCount set to zero.
If the underlying object store returns an error, the server MUST fail the request with the error code received.
If the underlying object store returns only a portion of the variable-length data, the server MUST construct a success response as described below but set the Status in the SMB2 header to STATUS_BUFFER_OVERFLOW.
If the underlying object store returns the information successfully, the server MUST construct an SMB2 QUERY_INFO Response with the following values:
OutputBufferOffset MUST be set to the offset, in bytes, from the beginning of the SMB2 header to the attribute data at Buffer[].
OutputBufferLength MUST be set to the length of the attribute data being returned to the client.
The data MUST be placed in the response in Buffer[].
The response MUST then be sent to the client.<419>