3.3.5.57.9 Receiving a TRANS_READ_NMPIPE Request

Upon receipt of a TRANS_READ_NMPIPE (section 2.2.5.8) subcommand request, the SMB Trans subsystem MUST attempt to read data from the named pipe indicated by the Server.Open identified by the SMB_Parameters.Words.Setup.FID field of the request. The amount of data to be read is specified by the SMB_Parameters.Words.MaxDataCount field of the request. The data MUST be read with respect to the current I/O state of the pipe (see TRANS_SET_NMPIPE_STATE (section 2.2.5.1) and TRANS_QUERY_NMPIPE_STATE (section 2.2.5.3)). If the named pipe is not set to non-blocking mode, and there is no data in the named pipe, the read operation on the server MUST wait indefinitely for data to become available (or until it is canceled).<334>

If the operation fails, the status code indicating the error is returned in an SMB_COM_TRANSACTION Response (section 2.2.4.33.2) error message. If the operation returns either STATUS_BUFFER_OVERFLOW (ERRDOS/ERRmoredata) or success, the server MUST construct a TRANS_READ_NMPIPE Response (section 2.2.5.8.2).

The CIFS server passes the results to the client in the SMB_COM_TRANSACTION Response.