Network Printing Considerations

The architecture of PM requires a printer driver during the print job creation process to deal with queries, such as DevQueryHardcopyCaps, and to provide the job properties dialog by way of DevPostDeviceModes. To do any printing across a network, a locally installed printer driver is required. In some cases, such as when the network server does not run PM, this is an advantage, in that all the conversion to printer-specific commands can be done on the requestor.

The printer object in the workplace provides seamless access to network printers; the user need only install the appropriate printer driver.

The application programmer also is helped. A network printer that is accessed by the user has a hidden shadow on the requestor. The job properties for the shadow printer object can be altered and are stored on the requestor. This enables the user to configure one or more variations on the original configuration without requiring intervention from a system administrator to create many network printer objects, each with a slightly different default job property configuration.

The shadow printer object is created on the requestor by creating a local queue and local device with no port connection. The application can enumerate these queues using SplEnumQueue, as before. The only difference is in the PRQINFO6 structure; there are two extra fields not in the PRQINFO3 structure. These two extra fields, named pszRemoteComputerName and pszRemoteQueueName contain the name of the remote server and the remote queue. The spooler uses these fields to automatically reroute print data, submitted by an application to the local shadow, to the appropriate network queue.

The printer object creates a local shadow only when the network printer object has been used or modified, because there could be a large number of network printer objects, and the spooler does not know which one the user wants to use. The local shadow of a network printer object is created in the following cases:


[Back: Print-to-File Considerations]
[Next: Drag/Drop Protocol Considerations]