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, 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 will be returned that can be used with RpcReadPrinter and RpcWritePrinter 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 and RpcWritePrinter to print directly to a port without intermediate spooling.
-
PORT_NAME is a port name, as specified in 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 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, as specified in 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 MAY not use the PRINTER_NAME_WITH_POSTFIX pattern and instead use only the PRINTER_NAME and PRINTER_NAME_EX patterns.<249>
An implementation MAY restrict the length of printer name strings. <250>