From a2b150ee89f7d05ecc819801d01fb202e06b9ede Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Mon, 30 Sep 2002 04:58:55 +0000 Subject: This is an initial draft of printing internals. Not done (not really even started), and not in SGML. Plain ASCII right now, but I'll do some more work on it tomorrow. (This used to be commit d60afa48e3214a4fa4c0a937635c3acf2a4b4a65) --- docs/docbook/devdoc/printing.sgml | 73 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 docs/docbook/devdoc/printing.sgml diff --git a/docs/docbook/devdoc/printing.sgml b/docs/docbook/devdoc/printing.sgml new file mode 100644 index 0000000000..3cce7ab99c --- /dev/null +++ b/docs/docbook/devdoc/printing.sgml @@ -0,0 +1,73 @@ +!= +!= Samba Printing Internals +!= +!= Author : Gerald Carter +!= +!=================================================================== + +The purpose of this document is to provide some insight into +Samba's printing functionality and also to describe the semantics +of certain features of Windows client printing. + +Print Queue TDB's +------------------ + +* matching lanman jobids, spoolss jobids, & lpd jobids +* why ? +* caching time + + +ChangeID & Client Caching of Printer Information +------------------------------------------------ + +[To be filled in later] + + +Windows NT/2K Printer Change Notify +----------------------------------- + +When working with Windows NT+ clients, it is possible for a +print server to use RPC to send asynchronous change notification +events to clients for certain printer and print job attributes. +This can be useful when the client needs to know that a new +job has been added to the queue for a given printer or that the +driver for a printer has been changed. Note that this is done +entirely orthogonal to cache updates based on a new ChangeID for +a printer object. + +The basic set of RPC's used to implement change notification are + + * RemoteFindFirstPrinterChangeNotifyEx ( RFFPCN ) + * RemoteFindNextPrinterChangeNotifyEx ( RFNPCN ) + * FindClosePrinterChangeNotify( FCPCN ) + * ReplyOpenPrinter + * ReplyClosePrinter + * RouteRefreshPrinterChangeNotify ( RRPCN ) + +One additional RPC is available to a server, but is never used by the +Windows spooler service: + + * RouteReplyPrinter() + +The opnum for all of these RPC's are defined in include/rpc_spoolss.h + +Windows NT print servers use a bizarre method of sending print +notification event to clients. The process of registering a new change +notification handle is as follows. The 'C' is for client and the +'S' is for server. All error conditions have been eliminated. + +C: Obtain handle to printer or to the printer + server via the standard OpenPrinterEx() call. +S: Respond with a valid handle to object + +C: Send a RFFPCN request with the previously obtained + handle and either (a) + + + +* Back Channel +* Methods of sending an event +* Id numbers (print server handles, jobids, & printer handles ) +* event types ( jobs & printer attributes ) +* aggegating notifications + -- cgit