Author: cfinck
Date: Mon Jun 19 14:18:19 2017
New Revision: 75125
URL:
http://svn.reactos.org/svn/reactos?rev=75125&view=rev
Log:
[PRINTING]
- Implement GetPrinterDataA, GetPrinterDataExA, GetPrinterDataExW, GetPrinterDataW,
SetPrinterDataA, SetPrinterDataExA, SetPrinterDataExW, SetPrinterDataW.
They support all features for Print Server and Printer Handles (minus security checks!)
I've also added tests for them.
- Store Printer data in SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers
instead of SYSTEM\CurrentControlSet\Control\Print\Printers and create a registry symlink
from the former path to the new one just like Windows does.
According to
https://social.technet.microsoft.com/Forums/windowsserver/en-US/a683ab54-c4…,
this is needed when having >900 printers to work around a size limit of the SYSTEM
registry hive. And if Windows has both locations, we need both for compatibility anyway.
- Add several settings which are queried by the new Printer Data APIs when working with
Print Server Handles.
- Store the job directory in the Windows-compatible "DefaultSpoolDirectory"
setting and make use of it.
- Revert the ASSERTs in LocalEnumPrinters again to let us verify the NULL pointer
exceptions in localspl_apitest (thanks Serge! CORE-13433)
- Translate ERROR_INVALID_NAME to ERROR_INVALID_PRINTER_NAME in all cases in OpenPrinterW
(thanks Victor! CORE-13412)
- Make EnumMonitorsW and EnumPortsW in spoolss more robust against failing Print
Monitors.
- Remove the wrong !phPrinter check in OpenPrinterW to make Print Server Handles work for
real.
- Fix error handling when memory allocation fails: HeapAlloc doesn't set last error,
so it's just wrong to query or return it.
One more item done from
https://reactos.org/wiki/Printing !
This is all still a big Work-in-Progress, with many subtle bugs deep down in ReactOS, for
which I need to open additional tickets. But I didn't want to make this commit even
bigger..
Added:
trunk/reactos/win32ss/printing/base/spoolss/printerdata.c (with props)
trunk/reactos/win32ss/printing/providers/localspl/printerdata.c (with props)
trunk/rostests/apitests/winspool/GetPrinterData.c (with props)
Modified:
trunk/reactos/boot/bootdata/hivesft.inf
trunk/reactos/boot/bootdata/hivesys.inf
trunk/reactos/win32ss/printing/base/spoolss/CMakeLists.txt
trunk/reactos/win32ss/printing/base/spoolss/main.c
trunk/reactos/win32ss/printing/base/spoolss/memory.c
trunk/reactos/win32ss/printing/base/spoolss/monitors.c
trunk/reactos/win32ss/printing/base/spoolss/ports.c
trunk/reactos/win32ss/printing/base/spoolss/printers.c
trunk/reactos/win32ss/printing/base/spoolss/spoolss.spec
trunk/reactos/win32ss/printing/base/spoolsv/printerdata.c
trunk/reactos/win32ss/printing/base/winspool/printerdata.c
trunk/reactos/win32ss/printing/base/winspool/printers.c
trunk/reactos/win32ss/printing/base/winspool/printprocessors.c
trunk/reactos/win32ss/printing/base/winspool/winspool.spec
trunk/reactos/win32ss/printing/providers/localspl/CMakeLists.txt
trunk/reactos/win32ss/printing/providers/localspl/jobs.c
trunk/reactos/win32ss/printing/providers/localspl/main.c
trunk/reactos/win32ss/printing/providers/localspl/monitors.c
trunk/reactos/win32ss/printing/providers/localspl/ports.c
trunk/reactos/win32ss/printing/providers/localspl/precomp.h
trunk/reactos/win32ss/printing/providers/localspl/printers.c
trunk/reactos/win32ss/printing/providers/localspl/printingthread.c
trunk/reactos/win32ss/printing/providers/localspl/printprocessors.c
trunk/reactos/win32ss/printing/providers/localspl/tools.c
trunk/rostests/apitests/winspool/CMakeLists.txt
trunk/rostests/apitests/winspool/testlist.c
[This mail would be too long, it was shortened to contain the URLs only.]
Modified: trunk/reactos/boot/bootdata/hivesft.inf
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesft.inf?…
Modified: trunk/reactos/boot/bootdata/hivesys.inf
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys.inf?…
Modified: trunk/reactos/win32ss/printing/base/spoolss/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/memory.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/monitors.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/ports.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Added: trunk/reactos/win32ss/printing/base/spoolss/printerdata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/printers.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolss/spoolss.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/spoolsv/printerdata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spoo…
Modified: trunk/reactos/win32ss/printing/base/winspool/printerdata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/wins…
Modified: trunk/reactos/win32ss/printing/base/winspool/printers.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/wins…
Modified: trunk/reactos/win32ss/printing/base/winspool/printprocessors.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/wins…
Modified: trunk/reactos/win32ss/printing/base/winspool/winspool.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/wins…
Modified: trunk/reactos/win32ss/printing/providers/localspl/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/jobs.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/monitors.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/ports.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Added: trunk/reactos/win32ss/printing/providers/localspl/printerdata.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/printers.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/printingthread.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/printprocessors.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/reactos/win32ss/printing/providers/localspl/tools.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/providers…
Modified: trunk/rostests/apitests/winspool/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/winspool/CMakeLi…
Added: trunk/rostests/apitests/winspool/GetPrinterData.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/winspool/GetPrin…
Modified: trunk/rostests/apitests/winspool/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/winspool/testlis…