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-c43..., 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?r...
Modified: trunk/reactos/boot/bootdata/hivesys.inf URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivesys.inf?r...
Modified: trunk/reactos/win32ss/printing/base/spoolss/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/memory.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/monitors.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/ports.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Added: trunk/reactos/win32ss/printing/base/spoolss/printerdata.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/printers.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolss/spoolss.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/spoolsv/printerdata.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/spool...
Modified: trunk/reactos/win32ss/printing/base/winspool/printerdata.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/winsp...
Modified: trunk/reactos/win32ss/printing/base/winspool/printers.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/winsp...
Modified: trunk/reactos/win32ss/printing/base/winspool/printprocessors.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/winsp...
Modified: trunk/reactos/win32ss/printing/base/winspool/winspool.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/printing/base/winsp...
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/CMakeLis...
Added: trunk/rostests/apitests/winspool/GetPrinterData.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/winspool/GetPrint...
Modified: trunk/rostests/apitests/winspool/testlist.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/winspool/testlist...