2.6 Versioning, Capability Negotiation, and Extensibility

The Print Services system (PSS) evolved over multiple releases of Windows client and server products (Microsoft Implementations section 4). Each version of the Print Services system provides additional functionality, while maintaining interoperability with previous versions.<8>

The functionality in these versions is incremental. A third-party print server that interoperates with a Windows print client supports all the functionality for a given version and the versions that preceded it.

For example, if PSS 3.0 included a protocol that defines opnum operation numbers or numeric identifiers 1 through 10, and PSS 4.0 included a new protocol and an extension to the PSS 3.0 protocol that defines a new opnum 11, then Windows print clients require that the print server supports the new PSS 4.0 protocol and the opnum 11 extension to the PSS 3.0 protocol.

Support for some protocols is optional, as shown in the functional relationships of member protocols (section 2.1.2.3) and later in this section. An implementation can be fully functional in a typical Windows network without implementing the optional protocols.

The print client or the administrative client determines the print server's PSS version support by calling Print System Remote Protocol methods [MS-RPRN]:

  1. The print client calls the RpcOpenPrinter method on the print server by using the print server's name to obtain a handle.

  2. The print client calls the RpcGetPrinterData method on the print server by using the OSVersion key to obtain the print server's operating system version and maps the OSVersion of the print server to the supported PSS version.

  3. The print client calls the RpcClosePrinter method on the print server to close the print server handle.

In addition to following the process that was previously described to determine the capabilities of the print server, print clients also follow the processes that are described by the protocols of the Print Services system for negotiating capability support.

The following tables describe how the protocols in the Print Services system are supported by the different versions of the system. The Windows product releases that correspond to each version of the Print Services system are listed in the Product Behavior Appendix.<9>

Microsoft-defined protocols, standard protocols, and print payloads are described in the following tables.

PSS 1.0

Protocols supported by the print server

Print payloads supported by the print server

Protocols used by the print client

Print payloads used by the print client

Protocol notes

RAP, SMB, Line Printer Daemon Protocol, and CIFS

Raw

SMB and Line Printer Daemon Protocol

Raw

Line Printer Daemon Protocol (support optional): Print servers provide support for this protocol for interoperability with UNIX clients. Print clients use this protocol only if specifically configured to do so when SMB is blocked by a firewall.

PSS 2.0

Protocols supported by the print server

Print payloads supported by the print server

Protocols used by the print client

Print payloads used by the print client

Protocol notes

PSS 1.0 (RAP, SMB, Line Printer Daemon Protocol, and CIFS) plus Print System Remote Protocol

PSS 1.0 (Raw) plus EMFSPOOL

PSS 1.0 (SMB and Line Printer Daemon Protocol) plus Print System Remote Protocol

PSS 1.0 (Raw) plus EMFSPOOL

Line Printer Daemon Protocol (support optional): Print servers provide support for this protocol for interoperability with UNIX clients. Print clients support this protocol only if specifically configured to do so when the SMB protocol and the Print System Remote Protocol are blocked by a firewall.

SMB: Print clients use this protocol for printer driver file download operations or if Print System Remote Protocol is not available on a print server.

EMFSPOOL (support optional): Print clients can use this payload format only if the print server advertises support through the RPRN::RpcEnumPrintProcessorDatatypes method.

Print System Remote Protocol: This protocol is supported in different versions of Windows as indicated in Product Behavior Appendix.

PSS 3.0

Protocols supported by the print server

Print Payloads supported by the print server

Protocols used by the print client

Print payloads used by the print client

Protocol notes

PSS 2.0 (RAP, SMB, Line Printer Daemon Protocol, and Print System Remote Protocol) plus Web Point-and-Print Protocol, Internet Printing Protocol, Group Policy: Deployed Printer Connections Protocol Extension, LDAP (v3) and Group Policy: Core Protocol

PSS 2.0 (Raw and EMFSPOOL)

PSS 2.0 (SMB, Line Printer Daemon Protocol, and Print System Remote Protocol) plus Web Point-and-Print Protocol, Internet Printing Protocol, Group Policy: Deployed Printer Connections Protocol Extension, LDAP, and Group Policy: Core Protocol

PSS 2.0 (Raw, EMFSPOOL)

Line Printer Daemon Protocol (support optional): Print servers provide support for this protocol for interoperability with UNIX clients. Print clients support this protocol only if specifically configured to do so when the SMB protocol and the Print System Remote Protocol are blocked by a firewall.

Web Point-and-Print Protocol (support optional): Print servers support is this protocol to provide printer drivers for print clients connecting through Internet Printing Protocol. Print clients use this protocol to download printer drivers from a print server when using the Internet Printing Protocol to connect.

Internet Printing Protocol (support optional): Print servers provide support for this protocol to enable printing from print clients on the extranet via HTTP. Print clients use this protocol only if specifically requested to connect by using an HTTP printer connection, which is used when a firewall blocks the other printing protocols.

Group Policy: Deployed Printer Connections Protocol Extension (support optional): Support for this protocol by print servers and print clients was provided in PSS 3.0 by a downloadable utility.

SMB: Print clients use this protocol for printer driver file download operations or if the Print System Remote Protocol is not available on a server.

EMFSPOOL (support optional): Print clients can use this payload format only if the print server advertises support through the RPRN::RpcEnumPrintProcessorDatatypes method.

PSS 4.0

Protocols supported by the print server

Print payloads Supported by the print server

Protocols used by the print client

Print payloads used by the print client

Protocol notes

PSS 3.0 (RAP, SMB Version 1.0, SMB Versions 2 and 3, Line Printer Daemon Protocol, Print System Remote Protocol, Web Point-and-Print Protocol, Internet Printing Protocol, Group Policy: Deployed Printer Connections Protocol Extension) and Print System Asynchronous Notification Protocol, Print System Asynchronous Remote Protocol, LDAP (v3), Group Policy: Core Protocol

PSS 3.0 (Raw, EMFSPOOL), XML Paper Specification

PSS 3.0 (SMB, Line Printer Daemon Protocol, Print System Remote Protocol, Web Point-and-Print Protocol, Internet Printing Protocol, Group Policy: Deployed Printer Connections Protocol Extension, LDAP, Group Policy: Core Protocol) and Print System Asynchronous Notification Protocol, Print System Asynchronous Remote Protocol

PSS 3.0 (Raw, EMFSPOOL), XML Paper Specification

Line Printer Daemon Protocol (support optional): Print servers provide support for this protocol for interoperability with UNIX clients. Print clients use this protocol only if specifically configured to do so when the SMB protocol and the Print System Remote Protocol are blocked by a firewall.

Web Point-and-Print Protocol (support optional): Print servers support this protocol to provide printer drivers for clients connecting through the Internet Printing Protocol. Print clients use this protocol to download printer drivers from a print server when using the Internet Printing Protocol to connect.

Internet Printing Protocol (support optional): Print servers provide support for this protocol to enable printing from print clients on the extranet via HTTP. Print clients use this protocol only if specifically requested to connect through an HTTP printer connection, which is used when a firewall blocks the other printing protocols.

XML Paper Specification (support optional): Print servers support this payload format only with third-party components installed or with Terminal Server Easy Print installed.

SMB: Print clients use this protocol for driver file download operations, or if neither the Print System Remote Protocol nor the Print System Asynchronous Remote Protocol is available on a print server.

Print System Remote Protocol: Windows print clients use this protocol to find out whether the Print System Asynchronous Remote Protocol is available on the print server.<10> Clients check the server's OS build number, retrieved by using Print System Remote Protocol methods, and to confirm a printer's presence with a single RpcOpenPrinter/RpcClosePrinter sequence. The client subsequently uses Print System Asynchronous Remote Protocol methods.

Windows print clients also use the Print System Remote Protocol if the Print System Asynchronous Remote Protocol is unavailable on the print server.

EMFSPOOL: Print clients can use this payload format only if the print server advertises support with the RPRN::RpcEnumPrintProcessorDatatypes or PAR::RpcAsyncEnumPrintProcessorDatatypes method.

Vendor-specific extensions are supported as noted in section 1.8 of the member protocol specification Technical Documents (TDs).