3.3.5.57.12 Receiving a TRANS_CALL_NMPIPE Request

Upon receipt of a TRANS_CALL_NMPIPE (section 2.2.5.11) subcommand request, the SMB Trans subsystem MUST attempt to obtain an Open on the named pipe specified by the SMB_Data.Bytes.Name field in the request from the underlying object store. If successful, the Trans subsystem MUST attempt to write data to and then read data from the underlying object store as specified in section 3.3.5.57.7, with the following exceptions:

  • The Trans subsystem MUST use the FID of the returned Open to the named pipe.

  • The Trans subsystem MUST use the Trans_Data.WriteData of the request (using SMB_Parameters.Words.TotalDataCount as its length) as the data to be written.

If the operation returns either STATUS_BUFFER_OVERFLOW (ERRDOS/ERRmoredata) or success, the Trans subsystem MUST NOT construct a TRANS_TRANSACT_NMPIPE response, but instead continue processing as follows.

If successful, the Trans subsystem MUST then attempt to close the Open on the underlying object store to the named pipe before sending a response.

If the operation fails, the status code indicating the error is returned in an error response. If the operation returns either STATUS_BUFFER_OVERFLOW (ERRDOS/ERRmoredata) or success, the server MUST construct a TRANS_CALL_NMPIPE response, as specified in section 2.2.5.11.2.

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