Revision Summary Date Revision History Revision Class Comments 4/4/2008 0.1 New Initial Availability 6/27/2008 1.0 Revised and edited the technical content 12/12/2008 1.01 Editorial Revised and edited the technical content 7/13/2009 1.02 Major Revised and edited the technical content 8/28/2009 1.03 Editorial Revised and edited the technical content 11/6/2009 1.04 Editorial Revised and edited the technical content 2/19/2010 2.0 Editorial Revised and edited the technical content 3/31/2010 2.01 Editorial Revised and edited the technical content 4/30/2010 2.02 Editorial Revised and edited the technical content 6/7/2010 2.03 Editorial Revised and edited the technical content 6/29/2010 2.04 Editorial Changed language and formatting in the technical content. 7/23/2010 2.05 Minor Clarified the meaning of the
technical content. 9/27/2010 2.05 None No changes to the meaning, language, or formatting of the technical content. 11/15/2010 2.05 None No changes to the meaning, language, or formatting of the technical content. 12/17/2010 2.06 Editorial Changed language and formatting in the technical content. 3/18/2011 2.06 None No changes to the meaning, language, or formatting of the technical content. 6/10/2011 2.06 None No changes to the meaning, language, or formatting of the technical content. 1/20/2012 2.7 Minor Clarified the meaning of the technical content. 4/11/2012 2.7 None No changes to the meaning, language, or
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 _iClientVersion _fClientIsRemote _cbBlob1 _paddingcbdBlob2 (variable) ... _cbBlob2 _padding ... ... MachineName (variable) ... UserName (variable) ... _paddingcPropSets (variable) ... cPropSets PropertySets (variable) ... _paddingExtPropset (variable) ... cExtPropSet ExtPropertySets (variable)
Note that most of the time the protocol server is in "running" state. The following is the state machine diagram for the protocol server. Figure 2: State machine diagram for the protocol server Timers None. Initialization Upon initialization, the protocol server MUST set its state to "not initialized" and begin listening for messages on the named pipe specified in section . After doing any other internal initialization, it MUST transition to the "running" state. Higher-Layer Triggered Events None. Message Processing Events and Sequencing Rules Whenever an error occurs during processing of a message sent by a protocol client, the protocol server MUST report an error back to the protocol client as follows: Stop processing the message sent by the protocol client. Respond with the message header (only) of the message sent by the protocol client, keeping _msg field intact. Set the _status field to the error code value. When a message arrives, the protocol server MUST check the field value to see if it is a known type (see section ). If the type is not known, it MUST report a STATUS_INVALID_PARAMETER (0xC000000D) error. The protocol server MUST then validate the _ulChecksum field value if the message type is one of the following: (0x000000C8) (0x000000CA) (0x000000D0) (0x000000CC) (0x000000E4) The protocol server MUST validate that the _ulChecksum field was calculated as specified in section . If the _ulChecksum value is invalid, the protocol server MUST report a STATUS_INVALID_PARAMETER (0xC000000D) error. Next, the protocol server checks which state is it in. If its state is "not initialized", the protocol server MUST report a CI_E_NOT_INITIALIZED (0x8004180B) error. If the state is "shutting down", the protocol server MUST report a CI_E_SHUTDOWN (0x80041812) error. After a header has been determined to be valid and the protocol server to be in "running" state, further message-specific processing MUST be done as specified in the following subsections.
Index A Abstract data model 51 45 9 C 9 12 23 17 23 24 25 16 67 Client 51 51 51 54 56 45 54 55 51 Client - higher-layer triggered events 52 52 54 54 54 53 53 54 54 55 55 55 54 54 55 55 55 18 19 26 33 35 36 38 44 42 43 44 44 40 41 39 20 22 27 28 20 29 29 21 D Data model - abstract 51 45 E 44 Examples 57 F 9 G 6 H Higher-layer triggered events 51 46 Higher-layer triggered events - client 52 52 54 54 54 53 53 I 64 64 8 Initialization 51 46 6 M 31 Message processing 54 46 54 54