3.1.4.1 Application Issues a Storage Quality of Service Control Request for a Logical Flow
Before issuing a Storage Quality of Service Control request, the client MUST have already established a connection to the server by calling the interface specified in [MS-SMB2] section 3.2.4.2 and providing the following input parameters:
The application-provided server name.
The application-provided share name.
The application-provided user credentials.
If the connection is successfully established, the client MUST open the remote file by calling the interface specified in [MS-SMB2] section 3.2.4.3 and provide the following input parameters:
File name
After opening the remote file, in order to issue a Storage Quality of Service Request for the remote file, the client MUST construct a STORAGE_QOS_CONTROL_REQUEST structure, as specified in section 2.2.2.2, as follows:
All fields of the STORAGE_QOS_CONTROL_REQUEST structure SHOULD initially be set to zero.
The ProtocolVersion field MUST be set to an implementation-specific value<3>.
The Options field MUST contain at least one of the flags defined in section 2.2.2.2, as specified in the rest of this section and in section 3.1.6.
If the Options field includes the STORAGE_QOS_CONTROL_GET_STATUS flag, the maximum output buffer size MUST be at least 80 (size of STORAGE_QOS_CONTROL_RESPONSE).
If the handle to the Open has not yet been associated to a logical flow, the Options field MUST include the STORAGE_QOS_CONTROL_FLAG_SET_LOGICAL_FLOW_ID flag and LogicalFlowID must be set to a non-empty GUID.
If the Options field includes the STORAGE_QOS_CONTROL_FLAG_PROBE_POLICY flag, the LogicalFlowID MUST NOT be set to an empty GUID.
If the Options field includes the STORAGE_QOS_CONTROL_FLAG_UPDATE_COUNTERS flag the client MUST set the following request fields:
IoCountIncrement is set to LogicalFlow.IoCountIncrement
NormalizedIoCountIncrement is set to LogicalFlow.NormalizedIoCountIncrement
LatencyIncrement is set to LogicalFlow.LatencyIncrement
LowerLatencyIncrement is set to LogicalFlow.LowerLatencyIncrement
If Dialect is 1.1, then KilobyteCountIncrement is set to LogicalFlow.KilobyteCountIncrement
The client MUST ensure the following after sending the request:
LogicalFlow.IoCountIncrement is set to zero.
LogicalFlow.NormalizedIoCountIncrement is set to zero.
LogicalFlow.LatencyIncrement is set to zero.
LogicalFlow.LowerLatencyIncrement is set to zero.
If Dialect is 1.1, then LogicalFlow.KilobyteCountIncrement is set to zero.
The client MUST call the interface specified in [MS-SMB2] section 3.2.4.20.11, supplying the following input parameters:
Application-provided handle to identify the Open.
Control code: FSCTL_STORAGE_QOS_CONTROL.
STORAGE_QOS_CONTROL_REQUEST structure as payload.
The maximum output buffer size that it will accept.