2.2.4.14 Printer Names

A Printer Name is a string that contains the name of a facility for output. It MUST uniquely identify a destination that is local or on a print server. The string MUST NOT be empty.

In RpcOpenPrinter and RpcOpenPrinterEx parameters (sections 3.1.4.2.2 and 3.1.4.2.14), all instances of printer names MUST follow either the PRINTER_NAME or PRINTER_NAME_EX pattern. In any other context, printer names MUST follow the PRINTER_NAME pattern.

The PRINTER_NAME pattern is defined as follows

 UNICODE_NOCOMMA_NOBACKSLASH = <Any UTF-16LE character except "," 
     and "\">
  
 UNICODE_NOBACKSLASH = <Any UTF-16LE character, except "\">
  
 PRINTER_NAME = (SERVER_NAME LOCAL_PRINTER_NAME) |
     (WEB_PRINT_SERVER "/" "printers" "/" LOCAL_PRINTER_NAME "/" 
     ".printer")
  
 WEB_PRINT_SERVER = "http: " "//" host [":" port]
  
 LOCAL_PRINTER_NAME = 1#UNICODE_NOCOMMA_NOBACKSLASH

where:

  • SERVER_NAME is defined in section 2.2.4.16.

  • WEB_PRINT_SERVER specifies the address of the web print server.

  • LOCAL_PRINTER_NAME is a string specifying the local printer name or share name of the printer. Printer names MUST NOT contain the characters ',' and '\'.

Basic notational conventions are specified in [RFC2616] section 2, and the terms host and port are defined in [RFC3986] section 3.2.2.

The PRINTER_NAME_EX pattern extends the PRINTER_NAME pattern and is defined as follows:

 PRINTER_NAME_EX = PRINTER_NAME_EX1 | PRINTER_NAME_EX2 |
     PRINTER_NAME_EX3 | PRINTER_NAME_EX4 | PRINTER_NAME_EX5
  
 PRINTER_NAME_EX1 = SERVER_NAME LOCAL_PRINTER_NAME "," #" "
     "Job " #" " JOB_IDENTIFIER 
  
 JOB_IDENTIFIER = MUST be between 1 and 2,147,483,648, inclusive.
  
 PRINTER_NAME_EX2 = SERVER_NAME LOCAL_PORT_NAME "," #" " "Port"
  
 PORT_NAME = 1#UNICODE_NOCOMMA
  
 PRINTER_NAME_EX3 = SERVER_NAME_NE "\," #" " "XcvPort "
     PORT_NAME
  
 PORT_NAME = 1#UNICODE_NOCOMMA
  
 PRINTER_NAME_EX4 = SERVER_NAME_NE "\," #" " "XcvMonitor "
     PORT_MONITOR_NAME
  
 PORT_MONITOR_NAME = 1#UNICODE_NOBACKSLASH
  
 PRINTER_NAME_EX5 = SERVER_NAME_NE

where:

  • SERVER_NAME_NE is defined in section 2.2.4.16

  • PRINTER_NAME_EX1 specifies the print job identified by JOB_IDENTIFIER on the printer specified with PrinterName.

    When the PRINTER_NAME_EX1 form is used as the name parameter with RpcOpenPrinter or RpcOpenPrinterEx, a job object is returned that can be used with RpcReadPrinter and RpcWritePrinter (sections 3.1.4.9.6 and 3.1.4.9.3) to read and write job content.

  • JOB_IDENTIFIER specifies a server-wide unique decimal identifier for the print job.

  • PRINTER_NAME_EX2 specifies the name of the port to be opened.

    When the PRINTER_NAME_EX2 form is used as the name parameter with RpcOpenPrinter or RpcOpenPrinterEx, a port object is returned that can be used with RpcStartDocPrinter (section 3.1.4.9.1) and RpcWritePrinter to print directly to a port without intermediate spooling.

  • PORT_NAME is a port name (section 2.2.4.10).

  • PRINTER_NAME_EX3 specifies the name of the port to be opened.

    When the PRINTER_NAME_EX3 form is used as the name parameter with RpcOpenPrinter or RpcOpenPrinterEx, a port object is returned that can be used with RpcXcvData (section 3.1.4.6.5) to communicate directly with a port.

  • PRINTER_NAME_EX4 specifies the name of the port monitor to be opened.

    When this form is used as the name parameter with RpcOpenPrinter or RpcOpenPrinterEx, a port monitor object is returned that can be used with RpcXcvData to communicate directly with a port monitor.

  • PORT_MONITOR_NAME is a monitor name (section 2.2.4.8).

  • PRINTER_NAME_EX5 specifies the print server to be opened.

The PRINTER_NAME_WITH_POSTFIX pattern extends the PRINTER_NAME and PRINTER_NAME_EX patterns and is defined as follows:

 PRINTER_NAME_WITH_POSTFIX = PRINTER_NAME_PREFIX "," PRINTER_NAME_POSTFIX

where:

  • PRINTER_NAME_PREFIX is the PRINTER_NAME or PRINTER_NAME_EX pattern.

  • PRINTER_NAME_POSTFIX is an implementation-defined string.

An implementation can use just the PRINTER_NAME and PRINTER_NAME_EX patterns instead of the PRINTER_NAME_WITH_POSTFIX pattern.<210>

An implementation MAY restrict the length of printer name strings.<211>