2.2.3.2 Parameter Block

SMB was originally designed as a rudimentary remote procedure call protocol, and the parameter block was defined as an array of "one word (two byte) fields containing SMB command dependent parameters". In the CIFS dialect, however, the SMB_Parameters.Words array can contain any arbitrary structure. The format of the SMB_Parameters.Words structure is defined individually for each command message. The size of the Words array is still measured as a count of byte pairs.

The general format of the parameter block is as follows.

 SMB_Parameters
   {
   UCHAR  WordCount;
   USHORT Words[WordCount] (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

WordCount

Words (variable)

...

WordCount (1 byte): The size, in two-byte words, of the Words field. This field can be zero, indicating that the Words field is empty. Note that the size of this field is one byte and comes after the fixed 32-byte SMB Header (section 2.2.3.1), which causes the Words field to be unaligned.

Words (variable): The message-specific parameters structure. The size of this field MUST be (2 x WordCount) bytes. If WordCount is 0x00, this field is not included.