3.2.5.5.3 Receiving a Status Request for a Prior Operation
When the server receives a request with OperationCode equal to RSVD_TUNNEL_SRB_STATUS_OPERATION, the request handling proceeds as follows:
If MaxOutputResponse is less than 40 (size of SVHDX_TUNNEL_OPERATION_HEADER + size of SVHDX_TUNNEL_SRB_STATUS_RESPONSE), the server MUST fail the request with STATUS_INVALID_PARAMETER.
If SenseInfoExLength field of the request is not equal to the size of the SenseDataEx, the server MUST fail the request with STATUS_INVALID_PARAMETER.
The server MUST locate the SenseError in Open.SenseErrorDataList where SenseError.StatusKey matches the StatusKey of the request.
If SenseError is not found, the server MUST return STATUS_SVHDX_ERROR_NOT_AVAILABLE.
If SenseError is found, the server MUST construct the SVHDX_TUNNEL_SRB_STATUS_RESPONSE structure as specified in section 2.2.4.4 with the following values:
The SVHDX_TUNNEL_OPERATION_HEADER MUST be initialized as follows:
The OperationCode field MUST be set to the OperationCode value of the request.
The Status field MUST be set to STATUS_SUCCESS.
The RequestId field MUST be set to the value received in the request.
The SVHDX_TUNNEL_SRB_STATUS_RESPONSE packet is initialized as follows:
The StatusKey field MUST be set to the value received in the request.
The SenseInfoAutoGenerated field MUST be set to the value received from the virtual SCSI disk.
The SrbStatus field MUST be set to SenseError.SrbStatus.
The ScsiStatus field MUST be set to SenseError.ScsiStatus.
The SenseInfoExLength field SHOULD<16> be set to the length of the SenseError.SenseData, in bytes.
The SenseDataEx field MUST be set to SenseError.SenseData.
The response MUST be sent to the client.