139 lines
4.5 KiB
Plaintext
139 lines
4.5 KiB
Plaintext
AUTHOR: MohsinA,
|
|
DATE: 12-Mar-97.
|
|
FILE: //KERNEL/RAZZLE3/src/sockets/tcpsvcs/lpd/readme
|
|
SYNOPSIS: line printing subsystem notes on usage/test/build.
|
|
|
|
=======================================================================
|
|
|
|
Build with CFLAGS=-DDBG and it will
|
|
Log to %windir%\system32\spool\lpd.log
|
|
|
|
Very Detailed logging:
|
|
If data filename has 'debug' string in its name.
|
|
If printer name has 'debug' string in it.
|
|
Or if any of these names are NULL.
|
|
|
|
=======================================================================
|
|
To stop %windir%\system32\lpdsvcs.dll
|
|
|
|
> tlist
|
|
153 tcpsvcs
|
|
|
|
That means process id 153, is tcp services, it controls
|
|
lpd, we can attach to it with
|
|
> ntsd -p 153
|
|
> q Quit will kill tcpsvcs, incl. lpd.
|
|
|
|
===========================================================================
|
|
To test new lpd:
|
|
|
|
> net stop "tcp/ip print server"
|
|
> del %windir%\system32\spool\*.log
|
|
> copy obj\i386\lpdsvc.dll %windir%\system32
|
|
> net start "tcp/ip print server"
|
|
> net start .. Shows all
|
|
|
|
===========================================================================
|
|
CREATE real or virtual printers to send jobs to - from lpd and spooler.
|
|
|
|
: Start, Control Panel, Printers, Add printer, My Computer,
|
|
Add port, LPR Port + New Port,
|
|
Type in "RemoteHostname" and "QueueName" (remote share),
|
|
Generic + Generic/Text Only, Keep Existing Driver,
|
|
Type in "PrinterName",
|
|
Shared, Test Page.
|
|
|
|
Eg. 157.55.206.12 Shares 1,2,3,4 All in printlab, virtual - paperless.
|
|
157.55.206.13
|
|
157.55.206.14
|
|
157.55.206.15
|
|
|
|
LPD => Spooler => LPRMON => tcpip.
|
|
^^^^^^^^^^^^^^^^ This is what you added.
|
|
|
|
Now try it out by sending a job.
|
|
|
|
> lpr -S localhost -P "PrinterName" testdebug.txt
|
|
|
|
Now see you job queuing up and printing, in the UI, and in lpq.
|
|
: Start, Control Panel, Printers, PrinterName
|
|
> lpq -S localhost -P "PrinterName"
|
|
|
|
Now see the debug log generated by lpd.
|
|
|
|
> vi %windir%\system32\lpd.log
|
|
|
|
===========================================================================
|
|
|
|
|
|
To test lprmon.dll
|
|
|
|
The spooler must be running to process the jobs given to it by LPD.
|
|
> net start spooler
|
|
|
|
The spooler loads lprmon.dll, if you want to test a new lprmon.dll
|
|
you need to
|
|
|
|
> net stop spooler
|
|
> copy tcpcmd\lprmon\monitor\obj\i386\lprmon.dll %windir%\system32
|
|
> copy tcpcmd\lprmon\lprhelp\obj\i386\lprhelp.dll %windir%\system32
|
|
> del %windir%\system32\spool\*.log
|
|
> net start spooler
|
|
|
|
=======================================================================
|
|
|
|
LPD listens on tcp: port 515 for print requests.
|
|
|
|
These request come from
|
|
> lpr -S servername_running_lpd -P printername -other_options filename
|
|
|
|
LPR opens a socket to the lpd server on remote port 515,
|
|
and sends the data file to LPD.
|
|
|
|
LPD spools the file and calls win32 OpenPrinter(), SetJob() etc
|
|
to send the data file to the Spooler.
|
|
|
|
=======================================================================
|
|
|
|
LPQ displays line printer queue status, it contacts LPD
|
|
over a tcp socket and gets the complete status as a string.
|
|
|
|
LPQ can also query tcpip printers to obtain status.
|
|
|
|
=======================================================================
|
|
// Donot change the message LPD_LOGO, lpq/lprhelp use this banner to
|
|
// identify NT lpd services on a mixed network.
|
|
// Because NT lpd doesn't impose the 721-721 port restrictions
|
|
// of RFC 1179.
|
|
Most lpd's don't impose this!
|
|
Turned off detection in sp3.
|
|
===========================================================================
|
|
Changed STRING_POSTSCRIPT_HEADER from "%!PS" to "%!"
|
|
to support older PS format detection.
|
|
|
|
MohsinA, 27-Mar-97.
|
|
===========================================================================
|
|
|
|
ReadDataEx: Overlapped io not so useful.
|
|
|
|
-D PROFILING added to see queue wait times.
|
|
|
|
Thread pooling under test, maximum threads created are defined by registry:
|
|
My Computer\HKEY_LOCAL_MACHINE\
|
|
System\\CurrentControlSet\\Services\\LPDSVC\\PARAMETERS\
|
|
\MaxConcurrentUsers -- Max threads, default is 50.
|
|
\MaxQueueLength -- Max outstanding jobs not yet processed
|
|
but accepted by lpd for printing.
|
|
default is 100.
|
|
|
|
|
|
MohsinA, 28-Apr-97.
|
|
|
|
===========================================================================
|
|
|
|
Put a recv timeout with select, otherwise bad/dead/dud clients never
|
|
reply and suck up a worker thread.
|
|
|
|
MohsinA, 02-May-97.
|
|
===========================================================================
|