Revision Summary Date Revision History Revision Class Comments 2/22/2007 0.01 New Version 0.01 release 6/1/2007 1.0 Major Updated and revised the technical content. 7/3/2007 1.1 Minor Minor technical content changes. 7/20/2007 1.1.1 Editorial Changed language and formatting in the technical content. 8/10/2007 1.2 Minor Updated content based on feedback. 9/28/2007 1.3 Minor Made technical and editorial changes based on feedback. 10/23/2007 1.4 Minor Made technical and editorial changes based on feedback. 11/30/2007 1.5 Minor Made technical and editorial changes based on feedback. 1/25/2008 2.0 Major Updated and revised the technical content.
3/14/2008 3.0 Major Updated and revised the technical content. 5/16/2008 3.0.1 Editorial Changed language and formatting in the technical content. 6/20/2008 3.1 Minor Clarified the meaning of the technical content. 7/25/2008 3.1.1 Editorial Changed language and formatting in the technical content. 8/29/2008 3.1.2 Editorial Changed language and formatting in the technical content. 10/24/2008 3.1.3 Editorial Changed language and formatting in the technical content. 12/5/2008 3.1.4 Editorial Changed language and formatting in the technical content. 1/16/2009 3.1.5 Editorial Changed language and formatting in the technical content. 2/27/2009 3.1.6 Editorial Changed language
and formatting in the technical content. 4/10/2009 4.0 Major Updated and revised the technical content. 5/22/2009 5.0 Major Updated and revised the technical content. 7/2/2009 6.0 Major Updated and revised the technical content. 8/14/2009 7.0 Major Updated and revised the technical content. 9/25/2009 7.1 Minor Clarified the meaning of the technical content. 11/6/2009 7.1.1 Editorial Changed language and formatting in the technical content. 12/18/2009 8.0 Major Updated and revised the technical content. 1/29/2010 9.0 Major Updated and revised the technical content. 3/12/2010 10.0 Major Updated and revised the technical content.
4/23/2010 10.0.1 Editorial Changed language and formatting in the technical content. 6/4/2010 11.0 Major Updated and revised the technical content. 7/16/2010 11.0.1 Editorial Changed language and formatting in the technical content. 8/27/2010 11.0.1 None No changes to the meaning, language, or formatting of the technical content. 10/8/2010 11.0.1 None No changes to the meaning, language, or formatting of the technical content. 11/19/2010 11.0.1 None No changes to the meaning, language, or formatting of the technical content. 1/7/2011 11.0.1 None No changes to the meaning, language, or formatting of the technical content.
7/12/2012 12.0 None No changes to the meaning, language, or formatting of the technical content. 10/25/2012 13.0 Major Updated and revised the technical content. 1/31/2013 13.0 None No changes to the meaning, language, or formatting of the technical content. 8/8/2013 14.0 Updated and revised the technical content. 11/14/2013 15.0 Major Updated and revised the technical content. 2/13/2014 15.0 None No changes to the meaning, language, or formatting of the technical content. 5/15/2014 15.0 None No changes to the meaning, language, or formatting of the technical content. 6/30/2015 16.0 Significantly changed the
technical content. 10/16/2015 16.0 None No changes to the meaning, language, or formatting of the technical content. 7/14/2016 17.0 Major Significantly changed the technical content. 6/1/2017 17.0 None No changes to the meaning, language, or formatting of the technical content.
The server sends the Authenticated Client message after it authenticates the client to the server session. The client MUST NOT send any device addition or removal messages until it receives this message. Only after receiving this message MAY the client send one or more . Device Addition and Removal Messages Sending a Client Device Addition Message The structure and fields of the are as specified in section 2.2.1.3.1. The client MUST generate and assign a unique client device ID for each of the devices in its Client device list that it to redirect to the server. This message MUST be sent only after the client receives an . Sending a Client Device Removal Message The structure and fields of the are as specified in section 2.2.1.3.2. Before the client sends this message to stop redirecting a particular device, the corresponding device MUST have previously been sent as part of a . The client also removes the device from its Client device list. PNP Device I/O Subprotocol Initialization Messages messages establish the logical connection between server and client, in addition to capabilities. Initialization messages MUST be sent immediately after creating a new dynamic channel connection within the FileRedirectorChannel channel. A new channel connection MUST be established for each CreateFile call. These messages are generally followed by the CreateFile message and then by Read, Write, or IOControl messages. Processing a Server Capabilities Request Message The structure and fields of the are defined in section 2.2.2.2.1. This MUST be the first message that a client receives on each connection within the . The client inspects the version field. For example, if the client receives a version of 6 or later (future versions of the protocol MAY send a later version, although current ones do not) from the packet described in section 2.2.2.2.1, the client MAY send packets that describe custom events, as described in section . However, if the version is earlier than 6, the client MUST NOT send packets that describe custom events. The client MUST reply with its own version by sending a . Sending a Client Capabilities Reply The structure and fields of the are defined in section 2.2.2.2.2. This message MUST be sent only after receiving a . Device I/O Messages The device I/O messages in the are used to perform real I/O operations on the client devices and to return the result to the server. Processing a CreateFile Request Message
A Abstract data model client ( 28, 29) server ( 28, 33) 10 14 C 38 11 45 Client abstract data model ( 28, 29) higher-layer triggered events ( 28, 29) initialization ( 28, 29) events ( 29, 32) message processing ( 28, 29) 32 sequencing rules ( 28, 29) timer events ( 29, 32) timers ( 28, 29) 20 14 27 17 19 13 20 22 D Data model - abstract client ( 28, 29) server ( 28, 33) Device addition/removal messages 30 34 37 20 subprotocol ( 30, 34) 38 E Examples 38 37 38 37 F 11 G 7 H Higher-layer triggered events client ( 28, 29) server ( 28, 33) I 42 42 42 8 Initialization client ( 28, 29) server ( 28, 33) 19 29 device IO sub-protocol ( 30, 34) 33 7 25 25 L Local events client ( 29, 32) 29 M Message processing client ( 28, 29) server ( 28, 33) Messages 18 12 12 12 N 8 O local events 32 36 8 P 42 42 PNP Device I/O subprotocol 30 introduction ( 9, 18) 34 18 PNP Device Info subprotocol 29 14