2.2.4.42.2 Response
-
SMB_Parameters { UCHAR WordCount; Words { UCHAR AndXCommand; UCHAR AndXReserved; USHORT AndXOffset; USHORT Available; USHORT DataCompactionMode; USHORT Reserved1; USHORT DataLength; USHORT DataOffset; USHORT Reserved2[5]; } } SMB_Data { USHORT ByteCount; Bytes { UCHAR Pad[] (optional); UCHAR Data[DataLength]; } }
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SMB_Parameters (25 bytes) |
|||||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
... |
|||||||||||||||||||||||||||||||
... |
SMB_Data (variable) |
||||||||||||||||||||||||||||||
... |
SMB_Parameters (25 bytes):
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1WordCount
Words (24 bytes)
...
...
...
-
WordCount (1 byte): This field MUST be 0x0C.
-
Words (24 bytes):
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1AndXCommand
AndXReserved
AndXOffset
Available
DataCompactionMode
Reserved1
DataLength
DataOffset
Reserved2
...
...
-
AndXCommand (1 byte): The command code for the next SMB command in the packet. This value MUST be set to SMB_COM_NO_ANDX_COMMAND (section 2.2.4.75) (0xFF) if there are no additional SMB command responses in the server response packet.<58>
-
AndXReserved (1 byte): A reserved field. This MUST be set to 0x00 when this response is sent, and the client MUST ignore this field.
-
AndXOffset (2 bytes): This field MUST be set to the offset in bytes from the start of the SMB Header (section 2.2.3.1) to the start of the WordCount field in the next SMB command response in this packet. This field is valid only if the AndXCommand field is not set to SMB_COM_NO_ANDX_COMMAND (0xFF). If AndXCommand is SMB_COM_NO_ANDX_COMMAND, this field MUST be ignored by the client.<59>
-
Available (2 bytes): This field is valid when reading from named pipes. This field indicates the number of bytes remaining to be read after the requested read was completed.
-
DataCompactionMode (2 bytes): Reserved and SHOULD be 0x0000.
-
Reserved1 (2 bytes): This field MUST be 0x0000.
-
DataLength (2 bytes): The number of data bytes included in the response. If this value is less than the value in the Request.SMB_Parameters.MaxCountOfBytesToReturn field, it indicates that the read operation has reached the end of the file (EOF).
-
DataOffset (2 bytes): The offset in bytes from the header of the read data.
-
Reserved2 (10 bytes): Reserved. All entries MUST be 0x0000. The last 5 words are reserved in order to make the SMB_COM_READ_ANDX Response (section 2.2.4.42.2) the same size as the SMB_COM_WRITE_ANDX Response (section 2.2.4.43.2).
-
SMB_Data (variable):
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1ByteCount
Bytes (variable)
...
-
ByteCount (2 bytes): This field MUST be greater than or equal to 0x0000.
-
Bytes (variable):
-
0
1
2
3
4
5
6
7
8
91
0
1
2
3
4
5
6
7
8
92
0
1
2
3
4
5
6
7
8
93
0
1Pad
Data (variable)
...
-
Pad (1 byte): This field is optional. When using the NT LAN Manager dialect, this field can be used to align the Data field to a 16-bit boundary relative to the start of the SMB Header. If Unicode strings are being used, this field MUST be present. When used, this field MUST be one padding byte long.
-
Data (variable): The actual bytes read in response to the request.
-
Error Codes
SMB error class |
SMB error code |
NT status code |
POSIX equivalent |
Description |
---|---|---|---|---|
ERRDOS (0x01) |
ERRnoaccess (0x0005) |
STATUS_ALREADY_COMMITTED (0xC0000021) |
ENOLCK |
Attempt to read from a portion of the file that the server detects has been locked or been opened in deny-read. |
ERRDOS (0x01) |
ERRbadfid (0x0006) |
STATUS_INVALID_HANDLE (0xC0000008) STATUS_SMB_BAD_FID (0x00060001) |
ENFILE |
Attempt to read from a FID that the server does not have open. |
ERRDOS (0x01) |
ERRnomem (0x0008) |
STATUS_INSUFF_SERVER_RESOURCES (0xC0000205) |
ENOMEM |
The server is out of resources. |
ERRDOS (0x01) |
ERRbadaccess (0x000C) |
STATUS_ACCESS_DENIED (0xC0000022) |
|
Invalid open mode for the attempted operation. |
ERRDOS (0x01) |
ERRlock (0x0021) |
STATUS_FILE_LOCK_CONFLICT (0xC0000054) STATUS_LOCK_NOT_GRANTED (0xC0000055) |
EAGAIN |
The requested byte range was already locked by a different process (PID). |
ERRDOS (0x01) |
ERReof (0x0026) |
STATUS_END_OF_FILE (0xC0000011) |
|
Attempted to read beyond the end of the file.<60> |
ERRDOS (0x01) |
ERRpipebusy (0x00E7) |
STATUS_PIPE_BUSY (0xC00000AE) |
EAGAIN |
Attempted to read from a busy pipe. |
ERRDOS (0x01) |
ERRpipeclosing (0x00E8) |
STATUS_PIPE_EMPTY (0xC00000D9) |
|
Attempted to read from an empty pipe. |
ERRDOS (0x01) |
ERRmoredata (0x00EA) |
STATUS_BUFFER_OVERFLOW (0x80000005) |
|
The message on a message mode named pipe exceeds the requested number of bytes. The server MUST send a full SMB_COM_READ response with this error code. The requested number of bytes are read and returned to the client. |
ERRSRV (0x02) |
ERRerror (0x0001) |
|
EBADF |
The FID was validated by the server but unacceptable to the system. |
ERRSRV (0x02) |
ERRerror (0x0001) |
|
EDEADLK |
The read would block and deadlock would result. |
ERRSRV (0x02) |
ERRerror (0x0001) |
STATUS_INVALID_SMB (0x00010002) |
|
A corrupt request has been encountered. |
ERRSRV (0x02) |
ERRinvdevice (0x0007) |
STATUS_BAD_DEVICE_TYPE (0xC00000CB) |
|
Attempt to read from an open spool file. |
ERRSRV (0x02) |
ERRinvtid (0x0005) |
STATUS_SMB_BAD_TID (0x00050002) |
|
Invalid TID in request. |
ERRSRV (0x02) |
ERRtimeout (0x0058) |
|
|
The requested operation on a named pipe or an I/O device has timed out. |
ERRSRV (0x02) |
ERRbaduid (0x005B) |
STATUS_SMB_BAD_UID (0x005B0002) |
|
The UID specified is not defined as a valid ID for this session, or the user identified by the UID does not have sufficient privileges. |
ERRHRD (0x03) |
ERRdata (0x0017) |
STATUS_DATA_ERROR (0xC000003E) |
EIO |
A problem has occurred in the physical I/O. |
ERRHRD (0x03) |
ERRread (0x001E) |
|
ENXIO |
The device associated with the file descriptor is a block-special or character-special file and the value of the file pointer is out of range. |