Huw Davies : winspool: Set the printer registry values before calling into the driver.
Alexandre Julliard
julliard at winehq.org
Fri Jun 15 13:34:39 CDT 2012
Module: wine
Branch: master
Commit: a294ad42e0cc16225974f1f6078187a542a46bfc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a294ad42e0cc16225974f1f6078187a542a46bfc
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Jun 15 12:53:52 2012 +0100
winspool: Set the printer registry values before calling into the driver.
---
dlls/winspool.drv/info.c | 45 +++++++++++++++++++--------------------------
1 files changed, 19 insertions(+), 26 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 512e11f..362ff27 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)) {
More information about the wine-cvs
mailing list