Compartilhar via


2.2.5.8.2 Response

The server MUST set an error code in the Status field of the SMB Header (section 2.2.3.1) of the response to indicate whether the read from the named pipe succeeded or failed.

If the named pipe specified in the Request.SMB_Parameters.Setup.FID field is not set to non-blocking mode, and there is no data in the named pipe, the read operation will wait indefinitely.

 Trans_Data
   {
   UCHAR ReadData[TotalDataCount];
   }
            

SMB_Parameters: The SMB_Parameters section contains the relevant fields for the TRANS_READ_NMPIPE subcommand of the SMB_COM_TRANSACTION response.

WordCount (1 byte): This field MUST be set to 0x0A.

Words (20 bytes):

TotalParameterCount (2 bytes): This field MUST be set to 0x0000.

TotalDataCount (2 bytes): This field MUST be set to the total number of bytes read from the named pipe.

ParameterCount (2 bytes): This field MUST be set to 0x0000.

DataCount (2 bytes): This field MUST be set to the number of bytes that the ReadData field contained in the Trans_Data of this response. For this response, it MUST be set to less than or equal to the value of the TotalDataCount field.

SetupCount (1 byte): This field MUST be set to 0x00.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Trans_Data (variable)

...

Trans_Data (variable):


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

ReadData (variable)

...

ReadData (variable): This field MUST contain the bytes read from the named pipe. The size of the buffer MUST be equal to the value in TotalDataCount. If the named pipe is a message mode pipe, and the entire message was not read, the Status field in the SMB Header MUST be set to STATUS_BUFFER_OVERFLOW.

Error Codes

SMB error class

SMB error code

NT status code

POSIX equivalent

Description

ERRDOS

(0x01)

ERRbadfid

(0x0006)

STATUS_INVALID_HANDLE

(0xC0000008L)

STATUS_SMB_BAD_FID

(0x00060001)

EBADF

Invalid FID.

ERRDOS

(0x01)

ERRnomem

(0x0008)

STATUS_INSUFF_SERVER_RESOURCES

(0xC0000205)

ENOMEM

The server is out of resources required to process the request.

ERRDOS

(0x01)

ERRmoredata

(0x00EA)

STATUS_BUFFER_OVERFLOW

(0x80000005L)

There is more data available than can fit in the response buffer based on the MaxDataCount field value in the client request. MaxDataCount bytes of data were returned in the response.

ERRSRV

(0x02)

ERRerror

(0x0001)

STATUS_INVALID_SMB

(0x00010002)

Invalid SMB. Not enough parameter bytes were sent.

ERRSRV

(0x02)

ERRinvtid

(0x0005)

STATUS_INVALID_HANDLE

(0xC0000008L)

STATUS_SMB_BAD_TID

(0x00050002)

The TID is no longer valid.

ERRSRV

(0x02)

ERRbaduid

(0x005B)

STATUS_INVALID_HANDLE

(0xC0000008L)

STATUS_SMB_BAD_UID

(0x005B0002)

The UID supplied is not known to the session.