winspool: Set the printer registry values before calling into the driver.

oldstable
Huw Davies 2012-06-15 12:53:52 +01:00 committed by Alexandre Julliard
parent d31f61414c
commit a294ad42e0
1 changed files with 19 additions and 26 deletions

View File

@ -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)) {