windows-nt/Source/XPSP1/NT/net/tcpip/services/lpd
2020-09-26 16:20:57 +08:00
..
_lpr_and_lpd_component_description.htm Add source files 2020-09-26 16:20:57 +08:00
debug.c Add source files 2020-09-26 16:20:57 +08:00
debug.h Add source files 2020-09-26 16:20:57 +08:00
init.c Add source files 2020-09-26 16:20:57 +08:00
job.c Add source files 2020-09-26 16:20:57 +08:00
log.c Add source files 2020-09-26 16:20:57 +08:00
lpd.h Add source files 2020-09-26 16:20:57 +08:00
lpd.rc Add source files 2020-09-26 16:20:57 +08:00
lpdextrn.h Add source files 2020-09-26 16:20:57 +08:00
lpdmsg.mc Add source files 2020-09-26 16:20:57 +08:00
lpdstruc-x.c Add source files 2020-09-26 16:20:57 +08:00
lpdstruc-x.h Add source files 2020-09-26 16:20:57 +08:00
lpdstruc.h Add source files 2020-09-26 16:20:57 +08:00
lpdsvc.def Add source files 2020-09-26 16:20:57 +08:00
lprlpd_{083f96b7-f24b-4357-8990-d10543e247fc}.sld Add source files 2020-09-26 16:20:57 +08:00
makefile Add source files 2020-09-26 16:20:57 +08:00
parse.c Add source files 2020-09-26 16:20:57 +08:00
print.c Add source files 2020-09-26 16:20:57 +08:00
process.c Add source files 2020-09-26 16:20:57 +08:00
readme Add source files 2020-09-26 16:20:57 +08:00
service.c Add source files 2020-09-26 16:20:57 +08:00
sockets.c Add source files 2020-09-26 16:20:57 +08:00
sources Add source files 2020-09-26 16:20:57 +08:00
trace.c Add source files 2020-09-26 16:20:57 +08:00
trace.h Add source files 2020-09-26 16:20:57 +08:00

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.
===========================================================================