Microsoft



[MS-RDPEPC]: Remote Desktop Protocol: Print Virtual Channel ExtensionIntellectual Property Rights Notice for Open Specifications DocumentationTechnical Documentation. Microsoft publishes Open Specifications documentation (“this documentation”) for protocols, file formats, data portability, computer languages, and standards support. Additionally, overview documents cover inter-protocol relationships and interactions. Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you can make copies of it in order to develop implementations of the technologies that are described in this documentation and can distribute portions of it in your implementations that use these technologies or in your documentation as necessary to properly document the implementation. You can also distribute in your implementation, with or without modification, any schemas, IDLs, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications documentation. No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation. Patents. Microsoft has patents that might cover your implementations of the technologies described in the Open Specifications documentation. Neither this notice nor Microsoft's delivery of this documentation grants any licenses under those patents or any other Microsoft patents. However, a given Open Specifications document might be covered by the Microsoft Open Specifications Promise or the Microsoft Community Promise. If you would prefer a written license, or if the technologies described in this documentation are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting iplg@. License Programs. To see all of the protocols in scope under a specific license program and the associated patents, visit the Patent Map. Trademarks. The names of companies and products contained in this documentation might be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit trademarks. Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events that are depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than as specifically described above, whether by implication, estoppel, or otherwise. Tools. The Open Specifications documentation does not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments, you are free to take advantage of them. Certain Open Specifications documents are intended for use in conjunction with publicly available standards specifications and network programming art and, as such, assume that the reader either is familiar with the aforementioned material or has immediate access to it.Support. For questions and support, please contact dochelp@. Revision SummaryDateRevision HistoryRevision ClassComments7/20/20070.1MajorMCPP Milestone 5 Initial Availability9/28/20071.0MajorUpdated and revised the technical content.10/23/20071.1MinorClarified the meaning of the technical content.11/30/20071.2MinorClarified the meaning of the technical content.1/25/20081.2.1EditorialChanged language and formatting in the technical content.3/14/20081.2.2EditorialChanged language and formatting in the technical content.5/16/20081.2.3EditorialChanged language and formatting in the technical content.6/20/20081.3MinorClarified the meaning of the technical content.7/25/20081.4MinorClarified the meaning of the technical content.8/29/20081.4.1EditorialChanged language and formatting in the technical content.10/24/20081.5MinorClarified the meaning of the technical content.12/5/20081.6MinorClarified the meaning of the technical content.1/16/20091.6.1EditorialChanged language and formatting in the technical content.2/27/20091.6.2EditorialChanged language and formatting in the technical content.4/10/20091.6.3EditorialChanged language and formatting in the technical content.5/22/20091.7MinorClarified the meaning of the technical content.7/2/20091.7.1EditorialChanged language and formatting in the technical content.8/14/20091.7.2EditorialChanged language and formatting in the technical content.9/25/20091.8MinorClarified the meaning of the technical content.11/6/20092.0MajorUpdated and revised the technical content.12/18/20092.0.1EditorialChanged language and formatting in the technical content.1/29/20102.1MinorClarified the meaning of the technical content.3/12/20102.1.1EditorialChanged language and formatting in the technical content.4/23/20102.1.2EditorialChanged language and formatting in the technical content.6/4/20102.1.3EditorialChanged language and formatting in the technical content.7/16/20102.1.3NoneNo changes to the meaning, language, or formatting of the technical content.8/27/20103.0MajorUpdated and revised the technical content.10/8/20104.0MajorUpdated and revised the technical content.11/19/20104.0NoneNo changes to the meaning, language, or formatting of the technical content.1/7/20114.0NoneNo changes to the meaning, language, or formatting of the technical content.2/11/20114.0NoneNo changes to the meaning, language, or formatting of the technical content.3/25/20114.0NoneNo changes to the meaning, language, or formatting of the technical content.5/6/20114.0NoneNo changes to the meaning, language, or formatting of the technical content.6/17/20114.1MinorClarified the meaning of the technical content.9/23/20114.1NoneNo changes to the meaning, language, or formatting of the technical content.12/16/20115.0MajorUpdated and revised the technical content.3/30/20125.0NoneNo changes to the meaning, language, or formatting of the technical content.7/12/20125.0NoneNo changes to the meaning, language, or formatting of the technical content.10/25/20125.0NoneNo changes to the meaning, language, or formatting of the technical content.1/31/20135.0NoneNo changes to the meaning, language, or formatting of the technical content.8/8/20136.0MajorUpdated and revised the technical content.11/14/20136.0NoneNo changes to the meaning, language, or formatting of the technical content.2/13/20146.0NoneNo changes to the meaning, language, or formatting of the technical content.5/15/20146.0NoneNo changes to the meaning, language, or formatting of the technical content.6/30/20157.0MajorSignificantly changed the technical content.10/16/20157.0NoneNo changes to the meaning, language, or formatting of the technical content.7/14/20167.0NoneNo changes to the meaning, language, or formatting of the technical content.6/1/20178.0MajorSignificantly changed the technical content.9/15/20179.0MajorSignificantly changed the technical content.Table of ContentsTOC \o "1-9" \h \z1Introduction PAGEREF _Toc492420636 \h 61.1Glossary PAGEREF _Toc492420637 \h 61.2References PAGEREF _Toc492420638 \h 71.2.1Normative References PAGEREF _Toc492420639 \h 71.2.2Informative References PAGEREF _Toc492420640 \h 71.3Overview PAGEREF _Toc492420641 \h 71.3.1Purpose of Print Virtual Channel Extension PAGEREF _Toc492420642 \h 71.3.2Protocol Initialization PAGEREF _Toc492420643 \h 71.4Relationship to Other Protocols PAGEREF _Toc492420644 \h 81.5Prerequisites/Preconditions PAGEREF _Toc492420645 \h 81.6Applicability Statement PAGEREF _Toc492420646 \h 81.7Versioning and Capability Negotiation PAGEREF _Toc492420647 \h 81.8Vendor-Extensible Fields PAGEREF _Toc492420648 \h 81.9Standards Assignments PAGEREF _Toc492420649 \h 82Messages PAGEREF _Toc492420650 \h 92.1Transport PAGEREF _Toc492420651 \h 92.2Message Syntax PAGEREF _Toc492420652 \h 92.2.1Common Data Types PAGEREF _Toc492420653 \h 92.2.1.1Server Printer Cache Event (SERVER_PRINTER_CACHE_EVENT) PAGEREF _Toc492420654 \h 92.2.2Printer Redirection Messages PAGEREF _Toc492420655 \h 102.2.2.1Client Device List Announce Request (DR_PRN_DEVICE_ANNOUNCE) PAGEREF _Toc492420656 \h 102.2.2.2Server Printer Set XPS Mode (DR_PRN_USING_XPS) PAGEREF _Toc492420657 \h 122.2.2.3Add Printer Cachedata (DR_PRN_ADD_CACHEDATA) PAGEREF _Toc492420658 \h 122.2.2.4Update Printer Cachedata (DR_PRN_UPDATE_CACHEDATA) PAGEREF _Toc492420659 \h 142.2.2.5Delete Printer Cachedata (DR_PRN_DELETE_CACHEDATA) PAGEREF _Toc492420660 \h 142.2.2.6Rename Printer Cachedata (DR_PRN_RENAME_CACHEDATA) PAGEREF _Toc492420661 \h 152.2.2.7Server Create Request (DR_PRN_CREATE_REQ) PAGEREF _Toc492420662 \h 162.2.2.8Server Printer Close Request (DR_PRN_CLOSE_REQ) PAGEREF _Toc492420663 \h 172.2.2.9Server Printer Write Request (DR_PRN_WRITE_REQ) PAGEREF _Toc492420664 \h 172.2.2.10Client Printer Create Response (DR_PRN_CREATE_RSP) PAGEREF _Toc492420665 \h 172.2.2.11Client Printer Close Response (DR_PRN_CLOSE_RSP) PAGEREF _Toc492420666 \h 182.2.2.12Client Printer Write Response (DR_PRN_WRITE_RSP) PAGEREF _Toc492420667 \h 183Protocol Details PAGEREF _Toc492420668 \h 193.1Common Details PAGEREF _Toc492420669 \h 193.1.1Abstract Data Model PAGEREF _Toc492420670 \h 193.1.1.1Cached Printer Config Data PAGEREF _Toc492420671 \h 193.1.1.2XPS Mode PAGEREF _Toc492420672 \h 193.1.2Timers PAGEREF _Toc492420673 \h 193.1.3Initialization PAGEREF _Toc492420674 \h 193.1.4Higher-Layer Triggered Events PAGEREF _Toc492420675 \h 193.1.5Message Processing Events and Sequencing Rules PAGEREF _Toc492420676 \h 203.1.6Timer Events PAGEREF _Toc492420677 \h 203.1.7Other Local Events PAGEREF _Toc492420678 \h 203.2Client Details PAGEREF _Toc492420679 \h 203.2.1Abstract Data Model PAGEREF _Toc492420680 \h 203.2.2Timers PAGEREF _Toc492420681 \h 203.2.3Initialization PAGEREF _Toc492420682 \h 203.2.4Higher-Layer Triggered Events PAGEREF _Toc492420683 \h 203.2.5Message Processing Events and Sequencing Rules PAGEREF _Toc492420684 \h 203.2.5.1Printer Redirection Messages PAGEREF _Toc492420685 \h 203.2.5.1.1Sending a Client Device List Announce Request Message PAGEREF _Toc492420686 \h 203.2.5.1.2Processing a Printer Set XPS Mode Message PAGEREF _Toc492420687 \h 213.2.5.1.3Processing an Add Printer Cachedata Message PAGEREF _Toc492420688 \h 213.2.5.1.4Processing an Update Printer Cachedata Message PAGEREF _Toc492420689 \h 213.2.5.1.5Processing a Delete Printer Cachedata Message PAGEREF _Toc492420690 \h 213.2.5.1.6Processing a Rename Printer Cachedata Message PAGEREF _Toc492420691 \h 213.2.5.1.7Processing a Create Request Message PAGEREF _Toc492420692 \h 213.2.5.1.8Processing a Close Request Message PAGEREF _Toc492420693 \h 213.2.5.1.9Processing a Write Request Message PAGEREF _Toc492420694 \h 213.2.5.1.10Sending a Printer Create Response Message PAGEREF _Toc492420695 \h 213.2.5.1.11Sending a Printer Close Response Message PAGEREF _Toc492420696 \h 223.2.5.1.12Sending a Printer Write Response Message PAGEREF _Toc492420697 \h 223.2.6Timer Events PAGEREF _Toc492420698 \h 233.2.7Other Local Events PAGEREF _Toc492420699 \h 233.3Server Details PAGEREF _Toc492420700 \h 233.3.1Abstract Data Model PAGEREF _Toc492420701 \h 233.3.2Timers PAGEREF _Toc492420702 \h 233.3.3Initialization PAGEREF _Toc492420703 \h 233.3.4Higher-Layer Triggered Events PAGEREF _Toc492420704 \h 233.3.5Message Processing Events and Sequencing Rules PAGEREF _Toc492420705 \h 233.3.5.1Printer Redirection Messages PAGEREF _Toc492420706 \h 233.3.5.1.1Processing a Client Device List Announce Request Message PAGEREF _Toc492420707 \h 233.3.5.1.2Sending a Printer Set XPS Mode Message PAGEREF _Toc492420708 \h 243.3.5.1.3Sending an Add Printer Cachedata Message PAGEREF _Toc492420709 \h 243.3.5.1.4Sending an Update Printer Cachedata Message PAGEREF _Toc492420710 \h 243.3.5.1.5Sending Delete Printer Cachedata PAGEREF _Toc492420711 \h 243.3.5.1.6Sending a Rename Printer Cachedata Message PAGEREF _Toc492420712 \h 243.3.5.1.7Sending a Printer Create Request Message PAGEREF _Toc492420713 \h 243.3.5.1.8Sending a Printer Close Request Message PAGEREF _Toc492420714 \h 243.3.5.1.9Sending a Printer Write Request Message PAGEREF _Toc492420715 \h 243.3.5.1.10Processing a Printer Create Response Message PAGEREF _Toc492420716 \h 243.3.5.1.11Processing a Printer Close Response Message PAGEREF _Toc492420717 \h 253.3.5.1.12Processing a Printer Write Response Message PAGEREF _Toc492420718 \h 253.3.6Timer Events PAGEREF _Toc492420719 \h 253.3.7Other Local Events PAGEREF _Toc492420720 \h 254Protocol Examples PAGEREF _Toc492420721 \h 264.1Annotations for Printer Redirection PAGEREF _Toc492420722 \h 264.1.1Client Printer Device (DR_PRN_DEVICE_ANNOUNCE) PAGEREF _Toc492420723 \h 264.1.2Server Printer Set XPS Mode (DR_PRN_USING_XPS) PAGEREF _Toc492420724 \h 274.1.3Add Printer Cachedata (DR_PRN_ADD_CACHEDATA) PAGEREF _Toc492420725 \h 274.1.4Update Printer Cachedata (DR_PRN_UPDATE_CACHEDATA) PAGEREF _Toc492420726 \h 274.1.5Delete Printer Cachedata (DR_PRN_DELETE_CACHEDATA) PAGEREF _Toc492420727 \h 284.1.6Rename Printer Cachedata (DR_PRN_RENAME_CACHEDATA) PAGEREF _Toc492420728 \h 284.1.7Server Printer Create Request (DR_PRN_CREATE_REQ) PAGEREF _Toc492420729 \h 294.1.8Server Printer Close Request (DR_PRN_CLOSE_REQ) PAGEREF _Toc492420730 \h 294.1.9Server Printer Write Request (DR_PRN_WRITE_REQ) PAGEREF _Toc492420731 \h 294.1.10Client Printer Create Response (DR_PRN_CREATE_RSP) PAGEREF _Toc492420732 \h 304.1.11Client Printer Close Response (DR_PRN_CLOSE_RSP) PAGEREF _Toc492420733 \h 304.1.12Client Printer Write Response (DR_PRN_WRITE_RSP) PAGEREF _Toc492420734 \h 305Security PAGEREF _Toc492420735 \h 325.1Security Considerations for Implementers PAGEREF _Toc492420736 \h 325.2Index of Security Parameters PAGEREF _Toc492420737 \h 326Appendix A: Product Behavior PAGEREF _Toc492420738 \h 337Change Tracking PAGEREF _Toc492420739 \h 348Index PAGEREF _Toc492420740 \h 35Introduction XE "Introduction" XE "Introduction"This document specifies the Print Virtual Channel Extension to the Remote Desktop Protocol. This protocol is used to redirect printers from a terminal client to the terminal server. This allows the server access to printers physically connected to the client as if the devices were local to the server.Sections 1.5, 1.8, 1.9, 2, and 3 of this specification are normative. All other sections and examples in this specification are informative.Glossary XE "Glossary" This document uses the following terms:ASCII: The American Standard Code for Information Interchange (ASCII) is an 8-bit character-encoding scheme based on the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that work with text. ASCII refers to a single 8-bit ASCII character or an array of 8-bit ASCII characters with the high bit of each character set to zero.client: A computer on which the remote procedure call (RPC) client is executing.driver name: A name assigned by the vendor of a printer driver, typically this name is the same as the name of a printer model (or family) that is serviced by a particular driver.manual printer redirection: The terminal server client redirects printers that are not installed (that is, associated with a printer driver) on the client. For such redirection to work, the user must manually specify which printer driver to use.printer name: The term printer name is used to represent a user-assigned, arbitrary name given to a printer queue. This protocol uses the term "printer name" to identify a given printer queue.printer queue: A collection of printer drivers and printer ports that maintains a list of print jobs to the printer.PRN file: A type of file that contains a sequence of raw bytes that are understood by the printer hardware. The printer driver produces these files and sends them to the printer port for actual printing. In the case of terminal server printer redirection, this stream is captured on the terminal server for the redirected printers and then sent to the client hardware for printing in raw mode. The contents of this stream are opaque to the Print Virtual Channel Extension.remote device: A device that is attached to a remote (or client) machine, in contrast to a device physically attached to a machine.server: A computer on which the remote procedure call (RPC) server is executing.terminal client: A client of a terminal server. A terminal client program that runs on the client machine.terminal server: A computer on which terminal services is running.Unicode string: A Unicode 8-bit string is an ordered sequence of 8-bit units, a Unicode 16-bit string is an ordered sequence of 16-bit code units, and a Unicode 32-bit string is an ordered sequence of 32-bit code units. In some cases, it could be acceptable not to terminate with a terminating null character. Unless otherwise specified, all Unicode strings follow the UTF-16LE encoding scheme with no Byte Order Mark (BOM).XML Paper Specification (XPS): An XML-based document format. XML Paper Specification (XPS) specifies the set of conventions for the use of XML and other widely available technologies to describe the content and appearance of paginated documents. For more information, see [MSFT-XMLPAPER].XPS file: A type of file that contains XPS data. Such files contain all document elements as well as printer-specific rendering information.MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.References XE "References" Links to a document in the Microsoft Open Specifications library point to the correct section in the most recently published version of the referenced document. However, because individual documents in the library are not updated at the same time, the section numbers in the documents may not match. You can confirm the correct section numbering by checking the Errata. Normative References XE "References:normative" XE "Normative references" We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact dochelp@. We will assist you in finding the relevant information. [MS-ERREF] Microsoft Corporation, "Windows Error Codes".[MS-RDPEFS] Microsoft Corporation, "Remote Desktop Protocol: File System Virtual Channel Extension".[MS-RDPESP] Microsoft Corporation, "Remote Desktop Protocol: Serial and Parallel Port Virtual Channel Extension".[MS-RDPEXPS] Microsoft Corporation, "Remote Desktop Protocol: XML Paper Specification (XPS) Print Virtual Channel Extension".[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, References XE "References:informative" XE "Informative references" None.Overview XE "Overview (synopsis)" XE "Overview (synopsis)"The Print Virtual Channel Extension specifies the communication used to enable the redirection of printers between a terminal client and a terminal server. By redirecting printers from the terminal client to the terminal server, applications running on a server machine can access the remote devices as if they were local printers. Purpose of Print Virtual Channel Extension XE "Print Virtual Channel Extension"The Print Virtual Channel Extension enables printer redirection. It allows applications running a terminal server to access the printers attached to the terminal client. Protocol Initialization XE "RDPEFS - subprotocol within"This protocol relies for transportation of its packets on the Remote Desktop Protocol: File System Virtual Channel Extension as specified in [MS-RDPEFS]. It describes the format of messages for printer devices. This protocol is considered initialized after at least one printer device is advertised by the client, and after the "Server Device Announce Response" message that indicates successful initialization for that device is sent by the server as illustrated in the figure in section 1.3.1 of [MS-RDPEFS].Relationship to Other Protocols XE "Relationship to other protocols" XE "Relationship to other protocols"This protocol relies for transportation of its packets on the Remote Desktop Protocol: File System Virtual Channel Extension as specified in [MS-RDPEFS]. This protocol extends the File System Virtual Channel Extension to enable printer redirection.Prerequisites/Preconditions XE "Prerequisites" XE "Preconditions" XE "Preconditions" XE "Prerequisites"The Print Virtual Channel Extension operates only after the Remote Desktop Protocol: File System Virtual Channel Extension [MS-RDPEFS] transport is fully established and a printer device is advertised by the client. This protocol describes the messages for printer devices only.Applicability Statement XE "Applicability" XE "Applicability" The Print Virtual Channel Extension is designed to be run within the context of a Remote Desktop Protocol virtual channel established between a client and server. This protocol extension is applicable when applications running on the terminal server need to access the printers physically connected to a client machine.Versioning and Capability Negotiation XE "Versioning" XE "Capability negotiation" XE "Capability negotiation" XE "Versioning"This protocol relies on the Print Virtual Channel to perform basic versioning and capability negotiation. Vendor-Extensible Fields XE "Vendor-extensible fields" XE "Fields - vendor-extensible" XE "Fields - vendor-extensible" XE "Vendor-extensible fields"This protocol contains no vendor-extensible fields. Standards Assignments XE "Standards assignments" XE "Standards assignments"This protocol does not use any standards assignments. Messages XE "Messages:overview"This protocol shares messages and common data types that are specified in [MS-RDPEFS] section 2 of Remote Desktop Protocol: File System Virtual Channel Extension. This section describes the messages and data types used by the Print Virtual Channel Extension.Transport XE "Messages:transport" XE "Transport" XE "Transport" XE "Messages:transport"All messages MUST be transported over an established Remote Desktop Protocol device extensions channel (as specified in [MS-RDPEFS] section 2.1).The static virtual channel is considered terminated if the client and server are disconnected or if there are errors in processing the packet, as described in [MS-RDPEFS] section 3.1.5.2 "Processing Packet Errors".Message Syntax XE "Syntax" XE "Messages:syntax" The following sections contain Print Virtual Channel Extension message mon Data Types XE "Messages:Common Data Types" XE "Common Data Types message" XE "Data types" XE "Common data types" XE "Messages:data types"Printer redirection uses common data types defined and explained in the Remote Desktop Protocol: File System Virtual Channel Extension. The following are the data types that are specific to the Print Virtual Channel Extension.Server Printer Cache Event (SERVER_PRINTER_CACHE_EVENT) XE "SERVER_PRINTER_CACHE_EVENT packet"The Server Printer Cache Event is used to identify various server events associated with Printer Cached Config Data (section 3.1.1.1) in the messages sent from the server to the client.01234567891012345678920123456789301cachedatacachedata (4 bytes): A 32-bit unsigned integer value that MUST be set to one of the following values. ValueMeaningRDPDR_ADD_PRINTER_EVENT0x00000001Add printer cachedata event. RDPDR_UPDATE_PRINTER_EVENT0x00000002Update printer cachedata event.RDPDR_DELETE_PRINTER_EVENT0x00000003Delete printer cachedata event.RDPDR_RENAME_PRINTER_EVENT0x00000004Rename printer cachedata event.Printer Redirection Messages XE "Messages:printer redirection messages" XE "Printer redirection messages"Client Device List Announce Request (DR_PRN_DEVICE_ANNOUNCE) XE "DR_PRN_DEVICE_ANNOUNCE packet"This message is specified in [MS-RDPEFS] section 2.2.2.9 (Client Device List Announce Request). For each redirected printer, a DEVICE_ANNOUNCE header (as specified in [MS-RDPEFS] section 2.2.1.3) is generated by the client printer redirection extension followed by variable printer-specific data.01234567891012345678920123456789301DeviceTypeDeviceIdPreferredDosName...DeviceDataLengthFlagsCodePagePnPNameLenDriverNameLenPrintNameLenCachedFieldsLenPnPName (variable)...DriverName (variable)...PrinterName (variable)...CachedPrinterConfigData (variable)...DeviceType (4 bytes): This field is defined in [MS-RDPEFS] section 2.2.1.3. This field MUST be set to RDPDR_DTYP_PRINT.DeviceId (4 bytes): This field is defined in [MS-RDPEFS] section 2.2.1.3. The DeviceId field MUST be set to the unique device ID to identify this printer device. This field is later used to refer to the same printer device by both the client and the server.PreferredDosName (8 bytes): This field is defined in [MS-RDPEFS] section 2.2.1.3. The PreferredDosName field MUST be set to the port name on which the printer is installed. The first 3 characters MUST be "PRN" and the remainder MUST be digits.DeviceDataLength (4 bytes): This field is defined in [MS-RDPEFS] section 2.2.1.3. The DeviceDataLength field MUST be set to the length of data fields following the DeviceDataLength field.Flags (4 bytes): A 32-bit unsigned integer that indicates the properties of the client printer queue. This bit field MUST be a valid combination of any of the following values.ValueMeaningRDPDR_PRINTER_ANNOUNCE_FLAG_ASCII0x00000001The DriverName field MUST be in ASCII characters. If not set, it MUST be in Unicode.RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER0x00000002The printer is set as default. There MUST be only one printer with this flag set.RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER0x00000004This printer is from the network.RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER0x00000008This flag is set when the printer to be redirected is not a local or network printer but is a terminal server client printer. This can happen in nested TS sessions; that is, this can happen when a TS connection is made from within a TS session.RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT0x00000010This client/printer supports XML Paper Specification (XPS) format.CodePage (4 bytes): A 32-bit unsigned integer. Reserved for future use. This field MUST be set to 0.PnPNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the PnPName field, including its null terminator.DriverNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the DriverName field, including its null terminator.PrintNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the PrintName field, including its null terminator.CachedFieldsLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the CachedPrinterConfigData field.PnPName (variable): A null-terminated Unicode string. This field can be set to any valid Unicode string and MUST be ignored on receipt.DriverName (variable): An array of characters. The type of characters is determined by the RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII flag. If the flag is set, the DriverName field MUST be a null-terminated ASCII string; otherwise, it MUST be a null-terminated Unicode string. The DriverName field specifies the driver name used by the client for this printer. This name is used by the terminal server to determine the appropriate matching driver for the redirected printer, which is to be used on the server. HYPERLINK \l "Appendix_A_1" \o "Product behavior note 1" \h <1>PrinterName (variable): The PrinterName field is a null-terminated Unicode string. The client MUST specify the user-assigned printer name of the local printer in this field. This name is used by the server to generate the server-side redirected printer queue.CachedPrinterConfigData (variable): A variable-length array of bytes. This field is a binary large object (BLOB) of data that describes the cached printer configuration (see section 3.1.1.1).Server Printer Set XPS Mode (DR_PRN_USING_XPS) XE "DR_PRN_USING_XPS packet"This message is sent from server to client to set the device in XPS mode (see section 3.1.1.2).01234567891012345678920123456789301HeaderPrinterIdFlagsHeader (4 bytes): The common message header (as specified in [MS-RDPEFS] section 2.2.1.1). The Component field MUST be set to RDPDR_CTYP_PRN and the PacketId field MUST be set to PAKID_ PRN_USING_XPS.PrinterId (4 bytes): A 32-bit unsigned integer. This message is handled by the Print Virtual Channel Extension only if the PrinterId field matches the previously established DeviceId field for a printer device, see [MS-RDPEFS] section 3.1.1. Flags (4 bytes): A 32-bit unsigned integer. This field is unused. It can contain any value and MUST be ignored on receipt.Add Printer Cachedata (DR_PRN_ADD_CACHEDATA) XE "DR_PRN_ADD_CACHEDATA packet"This message is sent from the server to the client when a printer queue is created manually on the redirected port (port redirection is explained in [MS-RDPESP]) on the server. 01234567891012345678920123456789301HeaderEventIdPortDosName...PnPNameLenDriverNameLenPrintNameLenCachedFieldsLenPnPName (variable)...DriverName (variable)...PrinterName (variable)...CachedPrinterConfigData (variable)...Header (4 bytes): The common message header (as specified in [MS-RDPEFS] section 2.2.1.1). The Component field MUST be set to RDPDR_CTYP_PRN and the PacketId field MUST be set to PAKID_PRN_CACHE_DATA.EventId (4 bytes): A SERVER_PRINTER_CACHE_EVENT (section 2.2.1.1) packet. The cachedata field MUST be set to RDPDR_ADD_PRINTER_EVENT (0x00000001).PortDosName (8 bytes): A string of ASCII characters with a maximum length of 8 characters that represent the name of the device as it appears on the client. If this field is not be null-terminated, then the PortDosName string is equal to all 8 characters.PnPNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the PnPName field, including its null terminator. DriverNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the DriverName field, including its null terminator. PrintNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the PrintName field, including its null terminator.CachedFieldsLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the CachedPrinterConfigData field.PnPName (variable): A null-terminated Unicode string. This field can be set to any valid Unicode string and MUST be ignored on receipt.DriverName (variable): A null-terminated Unicode string. This string specifies the printer driver name that is associated with the printer configuration data.PrinterName (variable): A null-terminated Unicode string that specifies the client printer, which was sent for this configuration data message.CachedPrinterConfigData (variable): A variable-length array of bytes. This field is a BLOB of data that describes the cached printer configuration (see section 3.1.1.1).Update Printer Cachedata (DR_PRN_UPDATE_CACHEDATA) XE "DR_PRN_UPDATE_CACHEDATA packet"01234567891012345678920123456789301HeaderEventIdPrinterNameLenConfigDataLenPrinterName (variable)...CachedPrinterConfigData (variable)...Header (4 bytes): The common message header (as specified in [MS-RDPEFS] section 2.2.1.1). The Component field MUST be set to RDPDR_CTYP_PRN and the PacketId field MUST be set to PAKID_PRN_CACHE_DATA. EventId (4 bytes): A SERVER_PRINTER_CACHE_EVENT (section 2.2.1.1) event. The cachedata field MUST be set to RDPDR_UPDATE_PRINTER_EVENT (0x00000002).PrinterNameLen (4 bytes): A 32-bit unsigned integer specifying the number of bytes in the PrinterName field, including its null terminator.ConfigDataLen (4 bytes): A 32-bit unsigned integer specifying the number of bytes in the CachedPrinterConfigData field.PrinterName (variable): A null-terminated Unicode string that specifies the printer, for which the updated printer configuration data is sent.CachedPrinterConfigData (variable): A variable-length array of bytes. This field is a BLOB of data that describes the cached printer configuration (see section 3.1.1.1).Delete Printer Cachedata (DR_PRN_DELETE_CACHEDATA) XE "DR_PRN_DELETE_CACHEDATA packet"This message is sent by the server when a manually created printer on the redirected port is deleted.01234567891012345678920123456789301HeaderEventIdPrinterNameLenPrinterName (variable)...Header (4 bytes): The common message header (as specified in [MS-RDPEFS] section 2.2.1.1). The Component field MUST be set to RDPDR_CTYP_PRN and the PacketId field MUST be set to PAKID_PRN_CACHE_DATA.EventId (4 bytes): A SERVER_PRINTER_CACHE_EVENT (section 2.2.1.1) event. The cachedata field MUST be set to RDPDR_DELETE_PRINTER_EVENT (0x00000003).PrinterNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the PrinterName field, including its null terminator. PrinterName (variable): A null-terminated Unicode string that specifies the printer that was deleted.Rename Printer Cachedata (DR_PRN_RENAME_CACHEDATA) XE "DR_PRN_RENAME_CACHEDATA packet"This message is sent by the server when the user renames a redirected printer. 01234567891012345678920123456789301HeaderEventIdOldPrinterNameLenNewPrinterNameLenOldPrinterName (variable)...NewPrinterName (variable)...Header (4 bytes): The common message header (as specified in [MS-RDPEFS] section 2.2.1.1). The Component field MUST be set to RDPDR_CTYP_PRN and the PacketId field MUST be set to PAKID_PRN_CACHE_DATA.EventId (4 bytes): A SERVER_PRINTER_CACHE_EVENT (section 2.2.1.1) event. The cachedata field MUST be set to RDPDR_RENAME_PRINTER_EVENT (0x00000004).OldPrinterNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the OldPrinterName field, including its null terminator.NewPrinterNameLen (4 bytes): A 32-bit unsigned integer that specifies the number of bytes in the NewPrinterName field, including its null terminator.OldPrinterName (variable): A null-terminated Unicode string that specifies the printer name before the rename operation. NewPrinterName (variable): A null-terminated Unicode string that specifies the printer name after the rename operation.Server Create Request (DR_PRN_CREATE_REQ) XE "DR_PRN_CREATE_REQ packet"This message is sent by the server to request the opening of the client printer queue and to prepare for receiving print data. 01234567891012345678920123456789301DeviceIoRequest (24 bytes)......DesiredAccessAllocationSize...FileAttributesSharedAccessDispositionCreateOptionsPathLengthDeviceIoRequest (24 bytes): A DR_DEVICE_IOREQUEST header (as specified in [MS-RDPEFS] section 2.2.1.4).The MajorFunction in this header MUST be set to IRP_MJ_CREATE.This message is handled by the Print Virtual Channel Extension only if the DeviceId field matches the previously established DeviceId for a printer device, see [MS-RDPEFS] section 3.1.1.DesiredAccess (4 bytes): A 32-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt.AllocationSize (8 bytes): A 64-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt.FileAttributes (4 bytes): A 32-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt.SharedAccess (4 bytes): A 32-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt. Disposition (4 bytes): A 32-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt.CreateOptions (4 bytes): A 32-bit unsigned integer. Unused. This field can contain any value and MUST be ignored on receipt.PathLength (4 bytes): A 32-bit unsigned integer. This field MUST be set to 0 for the printer devices.Server Printer Close Request (DR_PRN_CLOSE_REQ) XE "DR_PRN_CLOSE_REQ packet"This message is sent by the server to request the closing of the printer queue that was previously created by a DR_PRN_CREATE_REQ (section 2.2.2.7).01234567891012345678920123456789301DeviceCloseRequest (56 bytes)......DeviceCloseRequest (56 bytes): A DR_CLOSE_REQ message (as specified in [MS-RDPEFS] section 2.2.1.4.2). This request closes a printer opened by DR_PRN_CREATE_REQ (section 2.2.2.7).Server Printer Write Request (DR_PRN_WRITE_REQ) XE "DR_PRN_WRITE_REQ packet"This message is sent from the server to send the print data to the client printer.01234567891012345678920123456789301DeviceWriteRequest (variable)...DeviceWriteRequest (variable): A DR_WRITE_REQ request (as specified in [MS-RDPEFS] section 2.2.1.4.4). The Offset field of this request is unused and reserved for future use. The Offset field can contain any value and MUST be ignored on receipt.The WriteData field of the request could be either in PRN file or XPS file format. Client Printer Create Response (DR_PRN_CREATE_RSP) XE "DR_PRN_CREATE_RSP packet"The client responds to the DR_PRN_CREATE_REQ with this message.01234567891012345678920123456789301DeviceIoReply (16 bytes)......FileIdDeviceIoReply (16 bytes): A DR_DEVICE_IOCOMPLETION header (as specified in [MS-RDPEFS] section 2.2.1.5). The CompletionId field of this header MUST match the CompletionId of a Device I/O Request message that had the MajorFunction field set to IRP_MJ_CREATE.FileId (4 bytes): A 32-bit unsigned integer that specifies a unique ID that identifies the created file object. The ID MUST be reused after sending a Device Close Response (as specified in [MS-RDPEFS] section 2.2.1.5.2).Client Printer Close Response (DR_PRN_CLOSE_RSP) XE "DR_PRN_CLOSE_RSP packet"The client responds to the DR_PRN_CLOSE_REQ with this message.01234567891012345678920123456789301DeviceIoReply (16 bytes)......PaddingDeviceIoReply (16 bytes): A DR_DEVICE_IOCOMPLETION header (as specified in [MS-RDPEFS] section 2.2.1.5). The CompletionId field of this header MUST match the CompletionId of a Device I/O Request message that had the MajorFunction field set to IRP_MJ_CLOSE.Padding (4 bytes): An array of 4 bytes. This field is reserved for future use.Client Printer Write Response (DR_PRN_WRITE_RSP) XE "DR_PRN_WRITE_RSP packet"The client responds to the DR_PRN_WRITE_REQ with this message.01234567891012345678920123456789301DeviceWriteRsp (21 bytes).........DeviceWriteRsp (21 bytes): A DR_WRITE_RSP request (as specified in [MS-RDPEFS] section 2.2.1.5.4). The Length field of this response is equal to the Length field of the Write Request (as specified in [MS-RDPEFS] section 2.2.3.3.4).Protocol Details XE "Protocol Details:overview" The following sections specify protocol details, including abstract data models and message processing rules. Common DetailsAbstract Data Model XE "Data model - abstract:client" XE "Abstract data model:client" XE "Client:abstract data model" XE "Data model - abstract:server" XE "Abstract data model:server" XE "Server:abstract data model"This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The organization is provided to explain how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.The Remote Desktop Protocol: Print Virtual Channel Extension follows the abstract data model specified in [MS-RDPEFS] section 3.1.1. The following abstract entities are specific to this protocol.Cached Printer Config Data XE "Cached printer config data"Printer drivers store default printing preferences for each printer. The format of these preferences is driver-specific. For the redirected printers, when a user modifies printing preferences on the server side, these modified printing preferences are sent back to the client and are cached there. When such a printer is redirected again, this cached data is sent by the client to the server along with other printer information.The cached configuration information SHOULD be treated as an opaque data BLOB by the client. The client SHOULD treat the printer name and data BLOB pairs as records in a database. The server sends packets to the client to add, rename, delete or update the printer name or the data BLOB of an existing record.XPS Mode XE "XPS mode"When a client redirects printers, it adds a special flag (RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT) if the client can handle the XPS format for the given printer. For these printers, the server MAY HYPERLINK \l "Appendix_A_2" \o "Product behavior note 2" \h <2> choose to use either the XPS format or the printer driver-specific format. The server MUST notify the client with the message DR_PRN_USING_XPS?(section?2.2.2.2) if it chooses to use the XPS format. When this type of message is received, the client marks the printer in XPS mode. Redirection of XPS data using the Remote Desktop Protocol: XML Paper Specification (XPS) Print Virtual Channel Extension is described in [MS-RDPEXPS].Timers XE "Timers:server" XE "Server:timers" XE "Timers:client" XE "Client:timers"No common timers are used.Initialization XE "Initialization:client" XE "Client:initialization" XE "Initialization:server" XE "Server:initialization"The Print Virtual Channel Extension protocol MUST be initialized before the printer can be redirected.Higher-Layer Triggered Events XE "Triggered events - higher-layer:server" XE "Higher-layer triggered events:server" XE "Server:higher-layer triggered events" XE "Triggered events - higher-layer:client" XE "Higher-layer triggered events:client" XE "Client:higher-layer triggered events"No higher-layer triggered events are used.Message Processing Events and Sequencing Rules XE "Sequencing rules:client" XE "Message processing:client" XE "Client:message processing" XE "Client:sequencing rules" XE "Sequencing rules:server" XE "Message processing:server" XE "Server:sequencing rules" XE "Server:message processing"The common message processing events and rules that are described in [MS-RDPEFS] section 3.1.5 apply to this protocol. For client-specific and server-specific message processing, see sections 3.2.5 and 3.3.5.Timer Events XE "Timer events:client" XE "Client:timer events" XE "Timer events:server" XE "Server:timer events"No common timer events are used. Other Local Events XE "Local events:server" XE "Server:local events" XE "Local events:client" XE "Client:local events"There are no common local events.Client DetailsAbstract Data Model XE "Client:abstract data model" XE "Abstract data model:client" XE "Data model - abstract:client" XE "Data model - abstract:client" XE "Abstract data model:client" XE "Client:abstract data model"The abstract data model is specified in section 3.1.1.Timers XE "Client:timers" XE "Timers:client" XE "Timers:client" XE "Client:timers"No timers are used.Initialization XE "Client:initialization" XE "Initialization:client" XE "Initialization:client" XE "Client:initialization"Initialization is specified in section 3.1.3. Higher-Layer Triggered Events XE "Client:higher-layer triggered events" XE "Higher-layer triggered events:client" XE "Triggered events - higher-layer:client" XE "Triggered events - higher-layer:client" XE "Higher-layer triggered events:client" XE "Client:higher-layer triggered events"No client higher-layer triggered events are used.Message Processing Events and Sequencing Rules XE "Sequencing rules:client" XE "Message processing:client" XE "Client:sequencing rules" XE "Client:message processing"Printer Redirection Messages XE "Printer redirection messages - client" XE "Client:printer redirection messages"Sending a Client Device List Announce Request Message XE "Sending message:client device list announce request"After the Remote Desktop Protocol: File System Virtual Channel Extension completes its initialization, the client MUST send a DR_CORE_DEVICELIST_ANNOUNCE_REQ message to the server with information for various devices. This message is specified in [MS-RDPEFS] section 2.2.2.9. The Print Virtual Channel Extension prepares the printer device information that goes into this packet. The printer-specific structure is specified in section 2.2.2.1. The printer redirection extension enumerates the printer queues and manually configured printers (manual printer redirection) and determines the devices to be redirected. For each printer, the client collects the following information and prepares DR_PRN_DEVICE_ANNOUNCE (section 2.2.2.1) packet. This packet contains the following:The name of the printer queue assigned by the user.The name of the printer driver assigned by the driver manufacturer.Various flags associated with the printer.Printer cache data, if this data exists. See section 3.1.1.1.Processing a Printer Set XPS Mode Message XE "Processing message:printer set XPS mode"This message MUST be received only for the printers that were marked with RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT. When a server chooses to use an XPS driver for the redirected printer, it notifies the client using this message. The client MUST then mark the printer to be in XPS mode (see section 3.1.1.2). When printer data arrives for these printers, it MUST be treated as an XPS file and not a PRN file. For other printers, the I/O data MUST be treated as a PRN file.Processing an Add Printer Cachedata Message XE "Processing message:add printer cachedata"This message is received when a printer queue is manually installed on the server on the client's redirected port. The name of the port is stored in the PortDosName field. The client SHOULD store this manual printer configuration in its persistent storage, and it MUST use this configuration to redirect the printer the next time the client connects to the same server. Processing an Update Printer Cachedata Message XE "Processing message:update printer cachedata"This message is received when the configuration information of a redirected printer queue is updated on the server. The client MUST store the updated CachedPrinterConfigData field (see section 3.1.1.1), and it MUST use it when redirecting the printer next time. Processing a Delete Printer Cachedata Message XE "Processing message:delete printer cachedata"This message is received when a redirected printer queue is deleted by the server. The client MUST delete the cached configuration data previously stored for this printer.Processing a Rename Printer Cachedata Message XE "Processing message:rename printer cachedata"This message is received when the user renames the redirected printer on the server. The client MUST modify its local cached data for this printer to reflect this change, and the client MUST rename the local printer queue.Processing a Create Request Message XE "Processing message:create request"When the server starts a print job on a redirected printer, before sending the actual printing data it sends a create request. The client MUST prepare the printer specified by the DeviceId field to receive the printer output. Processing a Close Request Message XE "Processing message:close request"When the server finishes sending a print job to a redirected printer, it sends a close request. The client MUST end the printing process initiated when the create request was made.Processing a Write Request Message XE "Processing message:write request"Multiple write requests are received along with the printing data. These write requests are sent between create and close requests. The client MUST send the data associated with the write requests to the corresponding printer queue. The format of this data could be either printer driver-specific (non-XPS mode) or XPS format (XPS mode). Sending a Printer Create Response Message XE "Sending message:printer create response"The client MUST fill out the various members of the DR_DEVICE_IOCOMPLETION message (as specified in [MS-RDPEFS] section 2.2.1.5) as shown here.For the RDPDR_HEADER:The Component field MUST be set to RDPDR_CTYP_CORE.The PacketId field MUST be set to PAKID_CORE_DEVICE_IOCOMPLETION.For the DR_DEVICE_IOCOMPLETION header:The CompletionId field MUST be set to match the CompletionId field from the corresponding I/O request (section 3.2.5.1.7).The DeviceId field MUST be set to match the corresponding DeviceId field from the I/O request.The IoStatus field MUST be set to the NTSTATUS value indicating the result of the operation. NTSTATUS codes are specified in [MS-ERREF] section 2.3.Sending a Printer Close Response Message XE "Sending message:printer close response"The client MUST fill out the various members of the DR_DEVICE_IOCOMPLETION message (as specified in [MS-RDPEFS] section 2.2.1.5) as shown here.For the RDPDR_HEADER:The Component field MUST be set to RDPDR_CTYP_CORE. The PacketId field MUST be set to PAKID_CORE_DEVICE_IOCOMPLETION.For the DR_DEVICE_IOCOMPLETION header:The CompletionId field MUST be set to match the CompletionId field from the corresponding I/O request (section 3.2.5.1.8).The DeviceId MUST be set to match the corresponding DeviceId from the I/O request.The IoStatus field MUST be set to the NTSTATUS value indicating the result of the operation. NTSTATUS codes are specified in [MS-ERREF] section 2.3.Sending a Printer Write Response Message XE "Sending message:printer write response"The client MUST fill out the various members of the DR_DEVICE_IOCOMPLETION message (as specified in [MS-RDPEFS] section 2.2.1.5) as shown here.For the RDPDR_HEADER:The Component field MUST be set to RDPDR_CTYP_CORE.The PacketId field MUST be set to PAKID_CORE_DEVICE_IOCOMPLETION.For the DR_DEVICE_IOCOMPLETION header:The CompletionId field MUST be set to match the CompletionId field from the corresponding I/O request (section 3.2.5.1.9).The DeviceId field MUST be set to match the corresponding DeviceId field from the I/O request.The IoStatus field MUST be set to the NTSTATUS value indicating the result of the operation.The client MUST set the Length field of DR_WRITE_RSP (see [MS-RDPEFS] section 2.2.1.5.4) to the bytes written successfully to the printer device. NTSTATUS codes are specified in [MS-ERREF] section 2.3.Timer Events XE "Client:timer events" XE "Timer events:client" XE "Timer events:client" XE "Client:timer events"No timer events are used.Other Local Events XE "Client:other local events" XE "Other local events:client" XE "Local events:client" XE "Client:local events"There are no other local events.Server DetailsAbstract Data Model XE "Server:abstract data model" XE "Abstract data model:server" XE "Data model - abstract:server" XE "Data model - abstract:server" XE "Abstract data model:server" XE "Server:abstract data model"The abstract data model is specified in section 3.1.1.Timers XE "Server:timers" XE "Timers:server" XE "Timers:server" XE "Server:timers"No timers are used.Initialization XE "Server:initialization" XE "Initialization:server" XE "Initialization:server" XE "Server:initialization"Initialization is specified in section 3.1.3. Higher-Layer Triggered Events XE "Server:higher-layer triggered events" XE "Higher-layer triggered events:server" XE "Triggered events - higher-layer:server" XE "Triggered events - higher-layer:server" XE "Higher-layer triggered events:server" XE "Server:higher-layer triggered events"The server sends various messages to the client in response to the following application and user-driven events:When a printer is installed manually for the redirected port, the server sends an add printer cachedata message to the client (see section 3.3.5.1.3).When the user modifies the redirected printer queue configuration, the server sends an update printer cachedata message to the client (see section 3.3.5.1.4).When the user deletes the redirected printer queue, the server sends a delete printer cachedata message to the client (see section 3.3.5.1.5).When the user renames the redirected printer queue, the server sends a rename printer cachedata message to the client (see section 3.3.5.1.6). When an application running on the server opens the redirected printer queue for printing, the server sends a printer create request to the client (see section 3.3.5.1.7).When an application running on the server closes the redirected printer queue, the server sends a printer close request to the client (see section 3.3.5.1.8).When an application running on the server sends data to the redirected printer queue for printing, the server sends printer write requests to the client (see section 3.3.5.1.9).Message Processing Events and Sequencing Rules XE "Sequencing rules:server" XE "Message processing:server" XE "Server:sequencing rules" XE "Server:message processing"Printer Redirection Messages XE "Printer redirection messages - server" XE "Server:printer redirection messages"Processing a Client Device List Announce Request Message XE "Processing message:client device list announce request"After receiving a Client Device List Announce Request?(section?2.2.2.1), the server creates a printer queue to represent each client-side printer device. The server MUST use the appropriate driver for this redirected printer queue. The server MAY use a pseudo driver that produces XPS-format output if the RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT flag is supplied for the device. If this flag is not supplied, the server MAY use the DriverName field specified in this message to choose the appropriate printer driver on the server. If this message contains a CachedPrinterConfigData field, the server MUST use the information contained to configure the instance of the printer queue. The server MAY use the PrinterName field specified in the message to generate the name for the redirected printer queue.Sending a Printer Set XPS Mode Message XE "Sending message:printer set XPS mode"If the client printer supports XPS format, it indicates this support using the RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT flag when redirecting this printer (see section 2.2.2.1). For these redirected printers, the server can choose to send print job output in XPS format. HYPERLINK \l "Appendix_A_3" \o "Product behavior note 3" \h <3> If the server chooses to send print data in XPS format, the server MUST send this message to the client prior to sending any data in the write request messages (section 2.2.2.1). Sending an Add Printer Cachedata Message XE "Sending message:add printer cachedata"When a user manually installs a printer driver for the redirected port, the server collects the configuration data for such a printer queue and sends it to the client using this message.Sending an Update Printer Cachedata Message XE "Sending message:update printer cachedata"When a user modifies the configuration data, such as the printing preferences for the redirected printer queue, the server sends this message along with the configuration data to inform the client.Sending Delete Printer Cachedata XE "Sending message:delete printer cachedata"When a user deletes the printer queue, the server sends this message to the client.Sending a Rename Printer Cachedata Message XE "Sending message:rename printer cachedata"When a user manually renames the redirected printer queue, the server sends this message to the client specifying old and new printer names.Sending a Printer Create Request Message XE "Sending message:add printer create request"When a server application starts printing to the redirected printer queue, the server MUST send this message to the client before sending any printer data so that the client can prepare for receiving printer data.Sending a Printer Close Request Message XE "Sending message:printer close request"When the server application is done with a printing job, the server MUST send this message to the client.Sending a Printer Write Request Message XE "Sending message:sending printer write request"As a server application prints to the redirected printer queue, the server MUST send the printer job data to the client. A print job can be distributed over multiple write requests. This message MUST be sent only after the DR_PRN_CREATE_RSP?(section?2.2.2.10) message is received.Processing a Printer Create Response Message XE "Processing message:printer create response"The server MUST inspect the result of the printer create operation and abort/fail the printer operation if the create request failed.Processing a Printer Close Response Message XE "Processing message:printer close response"The server MUST ignore this message after validating it according to the rules specified in [MS-RDPEFS] section 3.1.5.2.Processing a Printer Write Response Message XE "Processing message:printer write response"The server MUST inspect the amount of data written and send the next packet of data if there are any packets remaining.Timer Events XE "Server:timer events" XE "Timer events:server" XE "Timer events:server" XE "Server:timer events"There are no timer events used. Other Local Events XE "Server:other local events" XE "Other local events:server" XE "Local events:server" XE "Server:local events"There are no other local events.Protocol Examples XE "Examples"Annotations for Printer Redirection XE "Annotations - printer redirection" XE "Printer redirection- annotations"Client Printer Device (DR_PRN_DEVICE_ANNOUNCE) XE "DR_PRN_DEVICE_ANNOUNCE" XE "Client printer:device (DR_PRN_DEVICE_ANNOUNCE)"The client sends this message to the server to indicate the list of printers that it wants to redirect.Channel Name = RDPDR, 264, Client to server00000000 72 44 41 44 03 00 00 00 04 00 00 00 04 00 00 00 00000010 50 52 4e 34 00 00 00 00 50 00 00 00 10 00 00 00 00000020 00 00 00 00 00 00 00 00 1c 00 00 00 1c 00 00 00 00000030 00 00 00 00 41 00 70 00 6f 00 6c 00 6c 00 6f 00 00000040 20 00 50 00 2d 00 31 00 32 00 30 00 30 00 00 00 00000050 41 00 70 00 6f 00 6c 00 6c 00 6f 00 20 00 50 00 00000060 2d 00 31 00 32 00 30 00 30 00 00 00 04 00 00 00 00000070 03 00 00 00 50 52 4e 33 00 00 00 00 74 00 00 00 00000080 12 00 00 00 00 00 00 00 00 00 00 00 2e 00 00 00 00000090 2e 00 00 00 00 00 00 00 43 00 61 00 6e 00 6f 00 000000a0 6e 00 20 00 42 00 75 00 62 00 62 00 6c 00 65 00 000000b0 2d 00 4a 00 65 00 74 00 20 00 42 00 4a 00 2d 00 000000c0 33 00 30 00 00 00 43 00 61 00 6e 00 6f 00 6e 00 000000d0 20 00 42 00 75 00 62 00 62 00 6c 00 65 00 2d 00 000000e0 4a 00 65 00 74 00 20 00 42 00 4a 00 2d 00 33 00 000000f0 30 00 00 00 02 00 00 00 02 00 00 00 4c 50 54 31 00000100 00 00 00 00 00 00 00 00 72 44 -> RDPDR_CTYP_CORE = 0x447241 44 -> PAKID_CORE_DEVICELIST_ANNOUNCE = 0x444103 00 00 00 -> DeviceCount = 0x0000000304 00 00 00 -> DeviceType (RDPDR_DTYP_PRINT) = 0x0000000404 00 00 00 -> DeviceId = 0x0000000450 52 4e 34 00 00 00 00 -> PreferredDosName (8 characters)50 00 00 00 -> DeviceDataLength = 0x0000005010 00 00 00 -> Flags (RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT) = 0x0000001000 00 00 00 -> CodePage = 0x0000000000 00 00 00 -> PnpNameLen = 0x000000001c 00 00 00 -> DriverNameLen = 0x0000001c1c 00 00 00 -> PrinterNameLen = 0x0000001c00 00 00 00 -> CachedFieldsLen = 0x0000000041 00 70 00 6f 00 6c 00 6c 00 6f 00 20 00 50 00 2d 00 31 00 32 00 30 00 30 00 00 00 -> DriverName (28 bytes)41 00 70 00 6f 00 6c 00 6c 00 6f 00 20 00 50 00 2d 00 31 00 32 00 30 00 30 00 00 00 -> PrinterName (28 bytes)04 00 00 00 -> DeviceType (RDPDR_DTYP_PRINT) = 0x0000000403 00 00 00 -> DeviceId = 0x0000000350 52 4e 33 00 00 00 00 -> PreferredDosName (8 characters)74 00 00 00 -> DeviceDataLength = 0x0000007412 00 00 00 -> Flags (RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER | RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT) = 0x0000001200 00 00 00 -> CodePage = 0x0000000000 00 00 00 -> PnpNameLen = 0x000000002e 00 00 00 -> DriverNameLen = 0x0000002e2e 00 00 00 -> PrinterNameLen = 0x0000002e00 00 00 00 -> CachedFieldsLen = 0x0000000043 00 61 00 6e 00 6f 00 6e 00 20 00 42 00 75 00 62 00 62 00 6c 00 65 00 2d 00 4a 00 65 00 74 00 20 00 42 00 4a 00 2d 00 33 00 30 00 00 00 -> DriverName (46 bytes)43 00 61 00 6e 00 6f 00 6e 00 20 00 42 00 75 00 62 00 62 00 6c 00 65 00 2d 00 4a 00 65 00 74 00 20 00 42 00 4a 00 2d 00 33 00 30 00 00 00 -> PrinterName (46 bytes)02 00 00 00 -> DeviceType (RDPDR_DTYP_PARALLEL) = 0x0000000202 00 00 00 -> DeviceId = 0x000000024c 50 54 31 00 00 00 00 -> PreferredDosName (8 characters)00 00 00 00 -> DeviceDataLength = 0x00000000Server Printer Set XPS Mode (DR_PRN_USING_XPS) XE "DR_PRN_USING_XPS" XE "Server printer:set XPS Mode (DR_PRN_USING_XPS)"When the server decides to use the XPS format for the output, it sends this message to prepare the client.Channel Name = RDPDR, 12, Server to client00000000 52 50 43 55 01 00 00 00 f8 5b fa 7f52 50 -> RDPDR_CTYP_PRN = 0x505243 55 -> PAKID_PRN_USING_XPS = 0x554301 00 00 00 -> PrinterId = 0x00000001f8 5b fa 7f -> Flags = 0x7ffa5bf8Add Printer Cachedata (DR_PRN_ADD_CACHEDATA) XE "DR_PRN_ADD_CACHEDATA" XE "Add printer cachedata (DR_PRN_ADD_CACHEDATA)"When a printer is manually installed on the redirected port, the server sends this message to allow the client an opportunity to cache the configuration.Channel Name = RDPDR, 116, Server to client 00000000 52 50 43 50 01 00 00 00 43 4f 4d 32 00 00 3a 00 00000010 00 00 00 00 2a 00 00 00 2a 00 00 00 00 00 00 00 00000020 42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 00000030 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 00000040 20 00 55 00 53 00 42 00 00 00 42 00 72 00 6f 00 00000050 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 00000060 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 00000070 42 00 00 00 52 50 -> RDPDR_CTYP_PRN = 0x505243 50 -> PAKID_PRN_CACHE_DATA = 0x504301 00 00 00 -> RDPDR_ADD_PRINTER_EVENT = 0x0000000143 4f 4d 32 00 00 3a 00-> PortDosName (64 bits)00 00 00 00 -> PnPNameLen = 0x000000002a 00 00 00 -> DriverNameLen = 0x0000002a2a 00 00 00 -> PrintNameLen = 0x0000002a00 00 00 00 -> CachedFieldsLen = 0x0000000042 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 00 00 -> DriverName (variable - 42 bytes) = "Brother DCP-1000 USB"42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 00 00 -> PrinterName (variable - 42 bytes) = "Brother DCP-1000 USB"Update Printer Cachedata (DR_PRN_UPDATE_CACHEDATA) XE "DR_PRN_UPDATE_CACHEDATA" XE "Update printer cachedata (DR_PRN_UPDATE_CACHEDATA)"When printing preferences or other configuration settings are modified on the server for a redirected printer, the server notifies the client with the configuration data.Channel Name = RDPDR, 16330, Server to client00000000 52 50 43 50 02 00 00 00 2a 00 00 00 90 3f 00 00 00000010 42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 00000020 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 00000030 20 00 55 00 53 00 42 00 00 00 48 00 00 00 00 00 00000040 00 00 94 20 00 00 00 00 00 00 37 00 00 00 00 00 52 50 -> RDPDR_CTYP_PRN = 0x505243 50 -> PAKID_PRN_CACHE_DATA = 0x504302 00 00 00 -> RDPDR_UPDATE_PRINTER_EVENT = 0x000000022a 00 00 00 -> PrinterNameLen = 0x0000002a90 3f 00 00 -> ConfigDataLen = 0x000039e442 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 00 00 -> PrinterName (42 bytes) = "Brother DCP-1000 USB"48 00 00 00 00 00 ... -> ConfigData (variable)Delete Printer Cachedata (DR_PRN_DELETE_CACHEDATA) XE "DR_PRN_DELETE_CACHEDATA" XE "Delete printer cachedata (DR_PRN_DELETE_CACHEDATA)"The redirected printer was deleted manually.Channel Name = RDPDR, 54, Server to client 00000000 52 50 43 50 03 00 00 00 2a 00 00 00 42 00 72 00 00000010 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 00000020 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 00000030 53 00 42 00 00 00 52 50 -> RDPDR_CTYP_PRN = 0x505243 50 -> PAKID_PRN_CACHE_DATA = 0x504303 00 00 00 -> RDPDR_DELETE_PRINTER_EVENT = 0x000000032a 00 00 00 -> PrinterNameLen = 0x0000002a42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 00 00 -> PrinterName (42 bytes) = "Brother DCP-1000 USB"Rename Printer Cachedata (DR_PRN_RENAME_CACHEDATA) XE "DR_PRN_RENAME_CACHEDATA" XE "Rename printer cachedata (DR_PRN_RENAME_CACHEDATA)"The redirected printer was renamed.Channel Name = RDPDR, 120, Server to client 00000000 52 50 43 50 04 00 00 00 2a 00 00 00 3e 00 00 00 00000010 42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 00000020 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 00000030 20 00 55 00 53 00 42 00 00 00 42 00 72 00 6f 00 00000040 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 00000050 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 00000060 42 00 20 00 28 00 72 00 65 00 6e 00 61 00 6d 00 00000070 65 00 64 00 29 00 00 00 52 50 -> RDPDR_CTYP_PRN = 0x505243 50 -> PAKID_PRN_CACHE_DATA = 0x504304 00 00 00 -> RDPDR_RENAME_PRINTER_EVENT = 0x000000042a 00 00 00 -> OldPrinterNameLen = 0x0000002a3e 00 00 00 -> NewPrinterNameLen = 0x0000003e42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 00 00 -> OldPrinterName (42 bytes) = "Brother DCP-1000 USB"42 00 72 00 6f 00 74 00 68 00 65 00 72 00 20 00 44 00 43 00 50 00 2d 00 31 00 30 00 30 00 30 00 20 00 55 00 53 00 42 00 20 00 28 00 72 00 65 00 6e 00 61 00 6d 00 65 00 64 00 29 00 00 00 -> NewPrinterName (62 bytes) = "Brother DCP-1000 USB (renamed)"Server Printer Create Request (DR_PRN_CREATE_REQ) XE "DR_PRN_CREATE_REQ" XE "Server printer:create Request (DR_PRN_CREATE_REQ)"The server sends a create request before starting a print job.Channel Name = RDPDR, 56, Server to client00000000 72 44 52 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 00 00 00 00 00 00 00 00 9f 01 12 00 00 00 00 00 00000020 00 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 00000030 40 00 00 00 00 00 00 0072 44 -> RDPDR_CTYP_CORE = 0x447252 49 -> PAKID_CORE_DEVICE_IOREQUEST = 0x495202 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> FileId = 0x0000000000 00 00 00 -> CompletionId = 0x0000000000 00 00 00 -> MajorFunction (IRP_MJ_CREATE) = 0x0000000000 00 00 00 -> MinorFunction = 0x000000009f 01 12 00 -> DesiredAccess = 0x0012019f00 00 00 00 00 00 00 00 -> AllocationSize (8 bytes)00 00 00 00 -> FileAttributes = 0x0000000003 00 00 00 -> SharedAccess = 0x0000000301 00 00 00 -> Disposition = 0x0000000140 00 00 00 -> CreateOptions = 0x0000000400 00 00 00 -> PathLength = 0x00000000Server Printer Close Request (DR_PRN_CLOSE_REQ) XE "DR_PRN_CLOSE_REQ" XE "Server printer:close request (DR_PRN_CLOSE_REQ)"The server sends a close message when it finishes sending a print job.Channel Name = RDPDR, 56, Server to client 00000000 72 44 52 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030 00 00 00 00 00 00 00 0072 44 -> RDPDR_CTYP_CORE = 0x447252 49 -> PAKID_CORE_DEVICE_IOREQUEST = 0x495202 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> FileId = 0x0000000000 00 00 00 -> CompletionId = 0x0000000002 00 00 00 -> MajorFunction (IRP_MJ_CLOSE) = 0x0000000200 00 00 00 -> MinorFunction = 0x0000000000 00 ...... -> Padding (32 bytes)Server Printer Write Request (DR_PRN_WRITE_REQ) XE "DR_PRN_WRITE_REQ" XE "Server printer write request (DR_PRN_WRITE_REQ)"The server sends multiple write requests to send the print job to the client.Channel Name = RDPDR, 65592, Server to client00000000 72 44 52 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 04 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000030 00 00 00 00 00 00 00 00 .........72 44 -> RDPDR_CTYP_CORE = 0x447252 49 -> PAKID_CORE_DEVICE_IOREQUEST = 0x495202 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> FileId = 0x0000000000 00 00 00 -> CompletionId = 0x0000000004 00 00 00 -> MajorFunction (IRP_MJ_WRITE) = 0x0000000400 00 00 00 -> MinorFunction = 0x0000000000 00 01 00 -> Length = 0x0001000000 00 00 00 00 00 00 00 -> Offset (8 bytes)00 00 .... -> Padding (20 bytes)(skipped)Client Printer Create Response (DR_PRN_CREATE_RSP) XE "DR_PRN_CREATE_RSP" XE "Client printer create response (DR_PRN_CREATE_RSP)"The client responds to the create request from the server.Channel Name = RDPDR, 20, Client to server00000000 72 44 43 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 00 00 00 0072 44 -> RDPDR_CTYP_CORE = 0x447243 49 -> PAKID_CORE_DEVICE_IOCOMPLETION = 0x494302 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> CompletionId = 0x0000000000 00 00 00 -> IoStatus = 0x0000000000 00 00 00 -> FileId = 0x00000000Client Printer Close Response (DR_PRN_CLOSE_RSP) XE "DR_PRN_CLOSE_RSP" XE "Client printer:close response (DR_PRN_CLOSE_RSP)"The client responds to the close request.Channel Name = RDPDR, 20, Client to server00000000 72 44 43 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 00 00 00 0072 44 -> RDPDR_CTYP_CORE = 0x447243 49 -> PAKID_CORE_DEVICE_IOCOMPLETION = 0x494302 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> CompletionId = 0x0000000000 00 00 00 -> IoStatus = 0x0000000000 00 00 00 -> Padding = 0x00000000Client Printer Write Response (DR_PRN_WRITE_RSP) XE "DR_PRN_WRITE_RSP" XE "Client printer:write response (DR_PRN_WRITE_RSP)"The client responds to the write request.Channel Name = RDPDR, 21, Client to server00000000 72 44 43 49 02 00 00 00 00 00 00 00 00 00 00 00 00000010 00 00 01 00 0072 44 -> RDPDR_CTYP_CORE = 0x447243 49 -> PAKID_CORE_DEVICE_IOCOMPLETION = 0x494302 00 00 00 -> DeviceId = 0x0000000200 00 00 00 -> CompletionId = 0x0000000000 00 00 00 -> IoStatus = 0x0000000000 00 01 00 -> Length = 0x00010000SecuritySecurity Considerations for Implementers XE "Security:implementer considerations" XE "Implementer - security considerations" XE "Implementer - security considerations" XE "Security:implementer considerations"There are no security considerations for Print Virtual Channel Extension.Index of Security Parameters XE "Security:parameter index" XE "Index of security parameters" XE "Parameters - security index" XE "Parameters - security index" XE "Index of security parameters" XE "Security:parameter index"There are no security parameters in the Remote Desktop Protocol: Print Virtual Channel Extension.Appendix A: Product Behavior XE "Product behavior" The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.Windows 2000 operating systemWindows XP operating systemWindows Server 2003 operating systemWindows Vista operating systemWindows Server 2008 operating systemWindows 7 operating systemWindows Server 2008 R2 operating systemWindows 8 operating systemWindows Server 2012 operating systemWindows 8.1 operating systemWindows Server 2012 R2 operating systemWindows 10 operating systemWindows Server 2016 operating systemWindows Server operating systemExceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription. HYPERLINK \l "Appendix_A_Target_1" \h <1> Section 2.2.2.1: Applicable Windows Server releases look at the driver name specified by the client and perform an exact string comparison to find the matching printer driver on the server. The matching printer driver might not be available on the server for various reasons. If the matching printer driver is not available, the server cannot reliably load an appropriate printer driver, and it fails to redirect the printer. This is an early design limitation, which was fixed for Windows Server 2008. For printer redirection in applicable Windows Server releases (this is not supported in Windows Server 2003), XPS-based drivers are recommended. When a client supports the XPS format (that is, the RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT flag is set in the Client Device List Announce Request?(section?2.2.2.1) message), Windows implementations use the terminal server–specific XPS-capable printer driver and ignore the DriverName field. HYPERLINK \l "Appendix_A_Target_2" \h <2> Section 3.1.1.2: XPS Mode is not supported for Windows 2000, Windows XP, and Windows Server 2003. HYPERLINK \l "Appendix_A_Target_3" \h <3> Section 3.3.5.1.2: Windows has the option of using XPS format or not, based on group policy that instructs the implementation to use the XPS format or a matching printer driver.Change Tracking XE "Change tracking" XE "Tracking changes" This section identifies changes that were made to this document since the last release. Changes are classified as Major, Minor, or None. The revision class Major means that the technical content in the document was significantly revised. Major changes affect protocol interoperability or implementation. Examples of major changes are:A document revision that incorporates changes to interoperability requirements.A document revision that captures changes to protocol functionality.The revision class Minor means that the meaning of the technical content was clarified. Minor changes do not affect protocol interoperability or implementation. Examples of minor changes are updates to clarify ambiguity at the sentence, paragraph, or table level.The revision class None means that no new technical changes were introduced. Minor editorial and formatting changes may have been made, but the relevant technical content is identical to the last released version.The changes made to this document are listed in the following table. For more information, please contact dochelp@.SectionDescriptionRevision class6 Appendix A: Product BehaviorAdded Windows Server operating system to the list of applicable products.MajorIndexAAbstract data model client (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.2.1 PAGEREF section_0fb06f5a298b4657aed98d61057b83ab20) server (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.3.1 PAGEREF section_006a9925ed674228a16d4217ed96827323)Add printer cachedata (DR_PRN_ADD_CACHEDATA) PAGEREF section_a14df2f8a3be4870ae20bdc7239fb58827Annotations - printer redirection PAGEREF section_e588e1c2eb71487b976de8a50c37163626Applicability PAGEREF section_a6a28365135f4a4abe074b251fbd03bf8CCached printer config data PAGEREF section_15c3212e9a6a4e6cbf8a667664ac71d619Capability negotiation PAGEREF section_e5726d6ec3064b64ab10a5b4274aba608Change tracking PAGEREF section_d5f84ab2d3624be58332746440a9d32534Client abstract data model (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.2.1 PAGEREF section_0fb06f5a298b4657aed98d61057b83ab20) higher-layer triggered events (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.2.4 PAGEREF section_c66823ecfc7f4b33baa5f64ac9ad930120) initialization (section 3.1.3 PAGEREF section_69421280e4c44a7a8fdf1847131aa06419, section 3.2.3 PAGEREF section_b8830b9ae9e14232beedc0293bbbe3e820) local events (section 3.1.7 PAGEREF section_60ee391ab8984d6e8a14ad7c5a148fa220, section 3.2.7 PAGEREF section_5c964ee7a6594516ab228688e53f199223) message processing (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.2.5 PAGEREF section_92350ed6e76a41a2bc1cff2d1221d7f120) other local events PAGEREF section_5c964ee7a6594516ab228688e53f199223 printer redirection messages PAGEREF section_faeb29433c054f11a617ec9006ed466620 sequencing rules (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.2.5 PAGEREF section_92350ed6e76a41a2bc1cff2d1221d7f120) timer events (section 3.1.6 PAGEREF section_8a68b5e7b51a4cd292557fb73a9c4b6e20, section 3.2.6 PAGEREF section_afd347060fc24a5a81870e200dae3bae23) timers (section 3.1.2 PAGEREF section_7597d6e8691f43308b5f4b77e0a3a33519, section 3.2.2 PAGEREF section_9eed4e1ffe2d4ce3bf4d152da4c4bedd20)Client printer close response (DR_PRN_CLOSE_RSP) PAGEREF section_a174cf03e3c8475d806cab1f9d36e13530 device (DR_PRN_DEVICE_ANNOUNCE) PAGEREF section_fd9157031dac4e6d994ddd6f18df5db226 write response (DR_PRN_WRITE_RSP) PAGEREF section_a6758c9ab9bc4546a97b59a255a28bc830Client printer create response (DR_PRN_CREATE_RSP) PAGEREF section_a4010301b24f443c8b99708b99f69e7830Common data types PAGEREF section_4651cf1606844155b414e3ff8e30a3f69Common Data Types message PAGEREF section_4651cf1606844155b414e3ff8e30a3f69DData model - abstract client (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.2.1 PAGEREF section_0fb06f5a298b4657aed98d61057b83ab20) server (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.3.1 PAGEREF section_006a9925ed674228a16d4217ed96827323)Data types PAGEREF section_4651cf1606844155b414e3ff8e30a3f69Delete printer cachedata (DR_PRN_DELETE_CACHEDATA) PAGEREF section_f0a27526f412440ab39df33e38ee964628DR_PRN_ADD_CACHEDATA PAGEREF section_a14df2f8a3be4870ae20bdc7239fb58827DR_PRN_ADD_CACHEDATA packet PAGEREF section_7fccae60f077433b9dee9bad4238bf4012DR_PRN_CLOSE_REQ PAGEREF section_84300a5c72f64474888bc6a8af33aaf529DR_PRN_CLOSE_REQ packet PAGEREF section_0c88fc6c395c44a2abdb279988d3e3d517DR_PRN_CLOSE_RSP PAGEREF section_a174cf03e3c8475d806cab1f9d36e13530DR_PRN_CLOSE_RSP packet PAGEREF section_7022f738a4ca44c68fa84880a3688c6a18DR_PRN_CREATE_REQ PAGEREF section_268beef1d7594628bbfe4e9e9b844d3029DR_PRN_CREATE_REQ packet PAGEREF section_7f28e93f3f5649b4a00e6f02bf6ac56916DR_PRN_CREATE_RSP PAGEREF section_a4010301b24f443c8b99708b99f69e7830DR_PRN_CREATE_RSP packet PAGEREF section_2654f0b506944d4d997f1e9bf2e1caeb17DR_PRN_DELETE_CACHEDATA PAGEREF section_f0a27526f412440ab39df33e38ee964628DR_PRN_DELETE_CACHEDATA packet PAGEREF section_705dfa46e80e435ba62fd4c9dae4358a14DR_PRN_DEVICE_ANNOUNCE PAGEREF section_fd9157031dac4e6d994ddd6f18df5db226DR_PRN_DEVICE_ANNOUNCE packet PAGEREF section_993fd26fb31b452490ec3efb59445f2a10DR_PRN_RENAME_CACHEDATA PAGEREF section_b9837cabc3f04a359a2bbd64638bd19428DR_PRN_RENAME_CACHEDATA packet PAGEREF section_b19b0b5ac83946a9bfaa23af6dd9607515DR_PRN_UPDATE_CACHEDATA PAGEREF section_6449ef7bc2e846dba963c14ea967b75f27DR_PRN_UPDATE_CACHEDATA packet PAGEREF section_1cd1023b01734b5daf011b5a650755ad14DR_PRN_USING_XPS PAGEREF section_1f1beef3893447f08db4181dcb91c0bd27DR_PRN_USING_XPS packet PAGEREF section_f1789a66bcd04df3bfc26e7330d6314512DR_PRN_WRITE_REQ PAGEREF section_04550a8e2c2b4f80adbe63d20712083f29DR_PRN_WRITE_REQ packet PAGEREF section_59f0ce70d32c4fd4a325b5d3a49dfed817DR_PRN_WRITE_RSP PAGEREF section_a6758c9ab9bc4546a97b59a255a28bc830DR_PRN_WRITE_RSP packet PAGEREF section_53b8e4595b31446288238ddb87ff6c1218EExamples PAGEREF section_c87f9c7d393c4d63b11db1738a85fcd026FFields - vendor-extensible PAGEREF section_f9b06f7bbb8b4d0bb7f42f868ec812da8GGlossary PAGEREF section_5c1a6d51ea7346c7a9c960c9b09f04f06HHigher-layer triggered events client (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.2.4 PAGEREF section_c66823ecfc7f4b33baa5f64ac9ad930120) server (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.3.4 PAGEREF section_6d800b0d253b4ca4a263f293e99216a323)IImplementer - security considerations PAGEREF section_cecfff4b87f448088e4a0263d583fdae32Index of security parameters PAGEREF section_3e3549ea9b4d41b490532266b050daf432Informative references PAGEREF section_1a544cf0a8f24874857dae14f75bdecf7Initialization client (section 3.1.3 PAGEREF section_69421280e4c44a7a8fdf1847131aa06419, section 3.2.3 PAGEREF section_b8830b9ae9e14232beedc0293bbbe3e820) server (section 3.1.3 PAGEREF section_69421280e4c44a7a8fdf1847131aa06419, section 3.3.3 PAGEREF section_a520ef152459432db60d31b8f432a3d023)Introduction PAGEREF section_209ee58ec47845a49c9395651343cae86LLocal events client (section 3.1.7 PAGEREF section_60ee391ab8984d6e8a14ad7c5a148fa220, section 3.2.7 PAGEREF section_5c964ee7a6594516ab228688e53f199223) server (section 3.1.7 PAGEREF section_60ee391ab8984d6e8a14ad7c5a148fa220, section 3.3.7 PAGEREF section_d3dfe68a795c46af9b16b2f5728eee0025)MMessage processing client (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.2.5 PAGEREF section_92350ed6e76a41a2bc1cff2d1221d7f120) server (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.3.5 PAGEREF section_bd4bfbb8cd4541879be816cecd79370b23)Messages Common Data Types PAGEREF section_4651cf1606844155b414e3ff8e30a3f69 data types PAGEREF section_4651cf1606844155b414e3ff8e30a3f69 overview PAGEREF section_08744460c2af43e7910792fdc29a51599 printer redirection messages PAGEREF section_0f7a6ab4c0074b609b9ffd766b9ca33a10 syntax PAGEREF section_da40ac22129b4471853a6a50baa456a99 transport PAGEREF section_c93552c51b3f4d359f5ae18a1e00cbbc9NNormative references PAGEREF section_23777c9da73f482dabe8700d21de13287OOther local events client PAGEREF section_5c964ee7a6594516ab228688e53f199223 server PAGEREF section_d3dfe68a795c46af9b16b2f5728eee0025Overview (synopsis) PAGEREF section_78b8b60982f94e679df75adfa997bb517PParameters - security index PAGEREF section_3e3549ea9b4d41b490532266b050daf432Preconditions PAGEREF section_5a7388b5e1654cf889079df6daf0cad18Prerequisites PAGEREF section_5a7388b5e1654cf889079df6daf0cad18Print Virtual Channel Extension PAGEREF section_13248b6f2ae9458891d5a3da20944efd7Printer redirection- annotations PAGEREF section_e588e1c2eb71487b976de8a50c37163626Printer redirection messages PAGEREF section_0f7a6ab4c0074b609b9ffd766b9ca33a10Printer redirection messages - client PAGEREF section_faeb29433c054f11a617ec9006ed466620Printer redirection messages - server PAGEREF section_18ace8d87de74105910bbd7a4e902c4c23Processing message add printer cachedata PAGEREF section_22ddc46021f94d068686de1715ccb7ee21 client device list announce request PAGEREF section_f43dc48464b24cef8db2e64ee15941fc23 close request PAGEREF section_3878da6e1a0f4aaba2861bcc763e8e6821 create request PAGEREF section_4d01e8d9eb294871a216b67c5892097e21 delete printer cachedata PAGEREF section_a9017bf6c1a4447db4b24ce21cf4ee3821 printer close response PAGEREF section_276459027c7d4b86bd59313299af1d1925 printer create response PAGEREF section_79cfce04b88a4ea883bf00442be5316124 printer set XPS mode PAGEREF section_8f0c910a7cb24b5bbca56fccd973b38921 printer write response PAGEREF section_55f53deafca540ac853bd89b85dfa9ea25 rename printer cachedata PAGEREF section_bd33b0cd54704218ac9ce601206e2e4621 update printer cachedata PAGEREF section_0a5bd690c2ef4f16be378cb1ed65979921 write request PAGEREF section_60d57456c47849eab7d3326b00787a4d21Product behavior PAGEREF section_cdea75a3af954683a29d460467338e2f33Protocol Details overview PAGEREF section_5d8e267eb8ae428381453fb296219e9819RRDPEFS - subprotocol within PAGEREF section_4ea7d4debfc64d1f98cf80c5a2c6ba107References PAGEREF section_fbaa736ff95d440ca2c672b2805cad0d7 informative PAGEREF section_1a544cf0a8f24874857dae14f75bdecf7 normative PAGEREF section_23777c9da73f482dabe8700d21de13287Relationship to other protocols PAGEREF section_addae59c22d24e9e8b9798cf8817657f8Rename printer cachedata (DR_PRN_RENAME_CACHEDATA) PAGEREF section_b9837cabc3f04a359a2bbd64638bd19428SSecurity implementer considerations PAGEREF section_cecfff4b87f448088e4a0263d583fdae32 parameter index PAGEREF section_3e3549ea9b4d41b490532266b050daf432Sending message add printer cachedata PAGEREF section_ebbe8ac760aa4576882e080c9474674f24 add printer create request PAGEREF section_4eb96761e2cb42b8aa00e03cf21bf8a824 client device list announce request PAGEREF section_28803d68fe534684b1564f7abe8ea37820 delete printer cachedata PAGEREF section_0806c8104ee3410e873749245824fa0324 printer close request PAGEREF section_13f222669c1b44ec9a4f36cd1265b9d424 printer close response PAGEREF section_8ed953b327e846869cb6fd304c23fbe522 printer create response PAGEREF section_f4ea23ffd5434a81b934005260d3a3a621 printer set XPS mode PAGEREF section_aa9aeafc4e054aa5b25ca700277e83f124 printer write response PAGEREF section_2f045ef41e94414182daace3f715b5ba22 rename printer cachedata PAGEREF section_b901befe394f406292777894025ecdb224 sending printer write request PAGEREF section_21c0f603c3c842fa83eb0802885d909424 update printer cachedata PAGEREF section_748a52a5541849e6ba5cfef096888e3624Sequencing rules client (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.2.5 PAGEREF section_92350ed6e76a41a2bc1cff2d1221d7f120) server (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.3.5 PAGEREF section_bd4bfbb8cd4541879be816cecd79370b23)Server abstract data model (section 3.1.1 PAGEREF section_644084de485a4226bf14866debfd195719, section 3.3.1 PAGEREF section_006a9925ed674228a16d4217ed96827323) higher-layer triggered events (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.3.4 PAGEREF section_6d800b0d253b4ca4a263f293e99216a323) initialization (section 3.1.3 PAGEREF section_69421280e4c44a7a8fdf1847131aa06419, section 3.3.3 PAGEREF section_a520ef152459432db60d31b8f432a3d023) local events (section 3.1.7 PAGEREF section_60ee391ab8984d6e8a14ad7c5a148fa220, section 3.3.7 PAGEREF section_d3dfe68a795c46af9b16b2f5728eee0025) message processing (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.3.5 PAGEREF section_bd4bfbb8cd4541879be816cecd79370b23) other local events PAGEREF section_d3dfe68a795c46af9b16b2f5728eee0025 printer redirection messages PAGEREF section_18ace8d87de74105910bbd7a4e902c4c23 sequencing rules (section 3.1.5 PAGEREF section_c630d9b67daf4cf8a1e73328a7911dda20, section 3.3.5 PAGEREF section_bd4bfbb8cd4541879be816cecd79370b23) timer events (section 3.1.6 PAGEREF section_8a68b5e7b51a4cd292557fb73a9c4b6e20, section 3.3.6 PAGEREF section_4b5421e6fafb434c884af5a0fc47366425) timers (section 3.1.2 PAGEREF section_7597d6e8691f43308b5f4b77e0a3a33519, section 3.3.2 PAGEREF section_65be5b6040ca4ad5b2d99a4d2e2b482423)Server printer close request (DR_PRN_CLOSE_REQ) PAGEREF section_84300a5c72f64474888bc6a8af33aaf529 create Request (DR_PRN_CREATE_REQ) PAGEREF section_268beef1d7594628bbfe4e9e9b844d3029 set XPS Mode (DR_PRN_USING_XPS) PAGEREF section_1f1beef3893447f08db4181dcb91c0bd27Server printer write request (DR_PRN_WRITE_REQ) PAGEREF section_04550a8e2c2b4f80adbe63d20712083f29SERVER_PRINTER_CACHE_EVENT packet PAGEREF section_2a9f09fe86b14cff9aa725d97823b9dc9Standards assignments PAGEREF section_0c9a471bd73d4fa7b53a73b92300aeba8Syntax PAGEREF section_da40ac22129b4471853a6a50baa456a99TTimer events client (section 3.1.6 PAGEREF section_8a68b5e7b51a4cd292557fb73a9c4b6e20, section 3.2.6 PAGEREF section_afd347060fc24a5a81870e200dae3bae23) server (section 3.1.6 PAGEREF section_8a68b5e7b51a4cd292557fb73a9c4b6e20, section 3.3.6 PAGEREF section_4b5421e6fafb434c884af5a0fc47366425)Timers client (section 3.1.2 PAGEREF section_7597d6e8691f43308b5f4b77e0a3a33519, section 3.2.2 PAGEREF section_9eed4e1ffe2d4ce3bf4d152da4c4bedd20) server (section 3.1.2 PAGEREF section_7597d6e8691f43308b5f4b77e0a3a33519, section 3.3.2 PAGEREF section_65be5b6040ca4ad5b2d99a4d2e2b482423)Tracking changes PAGEREF section_d5f84ab2d3624be58332746440a9d32534Transport PAGEREF section_c93552c51b3f4d359f5ae18a1e00cbbc9Triggered events - higher-layer client (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.2.4 PAGEREF section_c66823ecfc7f4b33baa5f64ac9ad930120) server (section 3.1.4 PAGEREF section_9f1cb09e52724ca3ad2ba56ae0bf0fd819, section 3.3.4 PAGEREF section_6d800b0d253b4ca4a263f293e99216a323)UUpdate printer cachedata (DR_PRN_UPDATE_CACHEDATA) PAGEREF section_6449ef7bc2e846dba963c14ea967b75f27VVendor-extensible fields PAGEREF section_f9b06f7bbb8b4d0bb7f42f868ec812da8Versioning PAGEREF section_e5726d6ec3064b64ab10a5b4274aba608XXPS mode PAGEREF section_f97d26e7d8624cca8ec998d3c69e271719 ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download