From a294ad42e0cc16225974f1f6078187a542a46bfc Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Fri, 15 Jun 2012 12:53:52 +0100 Subject: [PATCH] winspool: Set the printer registry values before calling into the driver. --- dlls/winspool.drv/info.c | 45 +++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 512e11fcef4..362ff27f519 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -3029,21 +3029,31 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter) } set_devices_and_printerports(pi); + set_reg_DWORD(hkeyPrinter, AttributesW, pi->Attributes); set_reg_szW(hkeyPrinter, DatatypeW, pi->pDatatype); + set_reg_szW(hkeyPrinter, DescriptionW, pi->pComment); + set_reg_DWORD(hkeyPrinter, dnsTimeoutW, 0); + set_reg_szW(hkeyPrinter, LocationW, pi->pLocation); + set_reg_szW(hkeyPrinter, NameW, pi->pPrinterName); + set_reg_szW(hkeyPrinter, ParametersW, pi->pParameters); + set_reg_szW(hkeyPrinter, PortW, pi->pPortName); + set_reg_szW(hkeyPrinter, Print_ProcessorW, pi->pPrintProcessor); + set_reg_szW(hkeyPrinter, Printer_DriverW, pi->pDriverName); + set_reg_DWORD(hkeyPrinter, PriorityW, pi->Priority); + set_reg_szW(hkeyPrinter, Separator_FileW, pi->pSepFile); + set_reg_szW(hkeyPrinter, Share_NameW, pi->pShareName); + set_reg_DWORD(hkeyPrinter, StartTimeW, pi->StartTime); + set_reg_DWORD(hkeyPrinter, StatusW, pi->Status); + set_reg_DWORD(hkeyPrinter, txTimeoutW, 0); + set_reg_DWORD(hkeyPrinter, UntilTimeW, pi->UntilTime); - /* See if we can load the driver. We may need the devmode structure anyway - * - * FIXME: - * Note that DocumentPropertiesW will briefly try to open the printer we - * just create to find a DEVMODE struct (it will use the WINEPS default - * one in case it is not there, so we are ok). - */ size = DocumentPropertiesW(0, 0, pi->pPrinterName, NULL, NULL, 0); - if(size < 0) { + if (size < 0) + { FIXME("DocumentPropertiesW on printer %s fails\n", debugstr_w(pi->pPrinterName)); - size = sizeof(DEVMODEW); + size = sizeof(DEVMODEW); } if(pi->pDevMode) dm = pi->pDevMode; @@ -3067,23 +3077,6 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter) set_reg_devmode( hkeyPrinter, Default_DevModeW, dm ); if (!pi->pDevMode) HeapFree( GetProcessHeap(), 0, dm ); - set_reg_szW(hkeyPrinter, DescriptionW, pi->pComment); - set_reg_DWORD(hkeyPrinter, dnsTimeoutW, 0); - set_reg_szW(hkeyPrinter, LocationW, pi->pLocation); - set_reg_szW(hkeyPrinter, NameW, pi->pPrinterName); - set_reg_szW(hkeyPrinter, ParametersW, pi->pParameters); - - set_reg_szW(hkeyPrinter, PortW, pi->pPortName); - set_reg_szW(hkeyPrinter, Print_ProcessorW, pi->pPrintProcessor); - set_reg_szW(hkeyPrinter, Printer_DriverW, pi->pDriverName); - set_reg_DWORD(hkeyPrinter, PriorityW, pi->Priority); - set_reg_szW(hkeyPrinter, Separator_FileW, pi->pSepFile); - set_reg_szW(hkeyPrinter, Share_NameW, pi->pShareName); - set_reg_DWORD(hkeyPrinter, StartTimeW, pi->StartTime); - set_reg_DWORD(hkeyPrinter, StatusW, pi->Status); - set_reg_DWORD(hkeyPrinter, txTimeoutW, 0); - set_reg_DWORD(hkeyPrinter, UntilTimeW, pi->UntilTime); - RegCloseKey(hkeyPrinter); RegCloseKey(hkeyPrinters); if(!OpenPrinterW(pi->pPrinterName, &retval, NULL)) {