[PRINTING]
authorColin Finck <colin@reactos.org>
Mon, 19 Jun 2017 14:18:19 +0000 (14:18 +0000)
committerColin Finck <colin@reactos.org>
Mon, 19 Jun 2017 14:18:19 +0000 (14:18 +0000)
commita82d7577b3cb835b5241e7b0fea3130bc6d78cd6
tree749dc75750270a5dedd855079ff7c33f26921d68
parent483bdaa4052bc4c375be371ae341824e3f66523d
[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-c43c-4ebe-af8f-1f7a65af2a51, 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..

svn path=/trunk/; revision=75125
29 files changed:
reactos/boot/bootdata/hivesft.inf
reactos/boot/bootdata/hivesys.inf
reactos/win32ss/printing/base/spoolss/CMakeLists.txt
reactos/win32ss/printing/base/spoolss/main.c
reactos/win32ss/printing/base/spoolss/memory.c
reactos/win32ss/printing/base/spoolss/monitors.c
reactos/win32ss/printing/base/spoolss/ports.c
reactos/win32ss/printing/base/spoolss/printerdata.c [new file with mode: 0644]
reactos/win32ss/printing/base/spoolss/printers.c
reactos/win32ss/printing/base/spoolss/spoolss.spec
reactos/win32ss/printing/base/spoolsv/printerdata.c
reactos/win32ss/printing/base/winspool/printerdata.c
reactos/win32ss/printing/base/winspool/printers.c
reactos/win32ss/printing/base/winspool/printprocessors.c
reactos/win32ss/printing/base/winspool/winspool.spec
reactos/win32ss/printing/providers/localspl/CMakeLists.txt
reactos/win32ss/printing/providers/localspl/jobs.c
reactos/win32ss/printing/providers/localspl/main.c
reactos/win32ss/printing/providers/localspl/monitors.c
reactos/win32ss/printing/providers/localspl/ports.c
reactos/win32ss/printing/providers/localspl/precomp.h
reactos/win32ss/printing/providers/localspl/printerdata.c [new file with mode: 0644]
reactos/win32ss/printing/providers/localspl/printers.c
reactos/win32ss/printing/providers/localspl/printingthread.c
reactos/win32ss/printing/providers/localspl/printprocessors.c
reactos/win32ss/printing/providers/localspl/tools.c
rostests/apitests/winspool/CMakeLists.txt
rostests/apitests/winspool/GetPrinterData.c [new file with mode: 0644]
rostests/apitests/winspool/testlist.c