184.108.40.206 Receiving an SMB_COM_LOCK_AND_READ Request
When the server receives an SMB_COM_LOCK_AND_READ Request (section 220.127.116.11.1), if the request is on a named pipe, the server MUST fail the request with an NT status code of STATUS_INVALID_DEVICE_REQUEST (0xC0000010); otherwise, the server MUST treat the request as if it is an SMB_COM_LOCK_BYTE_RANGE Request (section 18.104.22.168.1) followed by an SMB_COM_READ Request (section 22.214.171.124.1). Processing MUST proceed as specified in sections 126.96.36.199 and 188.8.131.52, with the following exceptions:
Their triggering requests will be the SMB_COM_LOCK_AND_READ Request of this event.
If processing results in an error during the process specified in section 184.108.40.206, the server MUST construct an SMB_COM_LOCK_AND_READ (section 220.127.116.11.1) error response and MUST NOT continue to the process indicated in section 18.104.22.168.
If processing results in an error during the process specified in section 22.214.171.124, the server MUST construct an SMB_COM_LOCK_AND_READ Request error response.
The server MUST construct an SMB_COM_LOCK_AND_READ Response (section 126.96.36.199.2) instead of the messages indicated in 188.8.131.52 and 184.108.40.206.
The response fields MUST be populated with the data that would go in the corresponding fields of both SMB_COM_LOCK_BYTE_RANGE Request (section 220.127.116.11.1) and SMB_COM_READ Response (section 18.104.22.168.2) messages.
An entry for the newly-granted byte-range lock MUST be added to Server.Open.Locks. The type of the lock MUST be exclusive, and the entry MUST be formatted with a 32-bit offset (LOCKING_ANDX_RANGE32).<273>
The response MUST be sent to the client as specified in section 22.214.171.124.