[cifs-protocol] SMB2 ProcessId header field for SYNC messages.

Christopher R. Hertel crh at ubiqx.mn.org
Tue Dec 6 22:12:21 MST 2011



The SYNC version of the SMB2 message header has a ProcessId field, 
which is described in [MS-SMB2] v20110920, section, pg30, as 

ProcessId (4 bytes): The client-side identification of the process that 
  issued the request. The client MUST set this field to 0xFEFF. The server
  MUST set this field to the ProcessId value received in the corresponding
  request, if any, or to 0 otherwise. The client MUST ignore this field on

That description, of course, makes no sense to me at all.  Sorry.

  * The field is 4 bytes, but 0xFEFF is two bytes.  Does the doc mean
    0x0000FEFF or 0xFEFF0000 or something else?

  * If the client "MUST" set the field to 0xFEFF, then the value is
    meaningless since it is always the same.  If it is always the same 
    value, then it cannot identify the process that issued the request.

  * If the server "MUST" set this field to the value in the corresponding
    request, then surely the client "MUST" be able to set the field to 
    something other than 0xFEFF.

  * When compsing the response, how could there not be a value in the
    corresponding request?  The only way I can imagine is that the request 
    was sent as an ASYNC request (no ProcessId field) and the server is 
    sending a SYNC response.  Is that even possible?

  * The description states that the client must ignore the field.
    Shouldn't the client use the value in the field to ensure that
    the result is sent to the correct client process?

Am I missing something in this description?  Hit me with the clue-bat.


Chris -)-----

More information about the cifs-protocol mailing list