Module: wine Branch: master Commit: 7508a5d4b2d5246ea9c19afd734274d12ca4b5bc URL: http://source.winehq.org/git/wine.git/?a=commit;h=7508a5d4b2d5246ea9c19afd73...
Author: André Hentschel nerv@dawncrow.de Date: Thu May 10 20:08:57 2012 +0200
winspool: Implement SetPrinterW for level 2.
---
dlls/winspool.drv/info.c | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 33caaad..614cfa2 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -748,6 +748,11 @@ PRINTCAP_LoadPrinters(void) { return hadprinter; }
+static inline DWORD set_reg_DWORD(HKEY hkey, LPCSTR keyname, const DWORD value) +{ + return RegSetValueExA(hkey, keyname, 0, REG_DWORD, (const BYTE*)&value, sizeof(value)); +} + static inline DWORD set_reg_szW(HKEY hkey, const WCHAR *keyname, const WCHAR *value) { if (value) @@ -2874,6 +2879,30 @@ BOOL WINAPI SetPrinterA( HANDLE printer, DWORD level, LPBYTE data, DWORD command return ret; }
+static void set_printer_2( HKEY key, const PRINTER_INFO_2W *pi ) +{ + set_reg_szW( key, NameW, pi->pPrinterName ); + set_reg_szW( key, Share_NameW, pi->pShareName ); + set_reg_szW( key, PortW, pi->pPortName ); + set_reg_szW( key, Printer_DriverW, pi->pDriverName ); + set_reg_szW( key, DescriptionW, pi->pComment ); + set_reg_szW( key, LocationW, pi->pLocation ); + + if (pi->pDevMode) + set_reg_devmode( key, Default_DevModeW, pi->pDevMode ); + + set_reg_szW( key, Separator_FileW, pi->pSepFile ); + set_reg_szW( key, Print_ProcessorW, pi->pPrintProcessor ); + set_reg_szW( key, DatatypeW, pi->pDatatype ); + set_reg_szW( key, ParametersW, pi->pParameters ); + + set_reg_DWORD( key, "Attributes", pi->Attributes ); + set_reg_DWORD( key, "Priority", pi->Priority ); + set_reg_DWORD( key, "Default Priority", pi->DefaultPriority ); + set_reg_DWORD( key, "StartTime", pi->StartTime ); + set_reg_DWORD( key, "UntilTime", pi->UntilTime ); +} + static BOOL set_printer_9( HKEY key, const PRINTER_INFO_9W *pi ) { if (!pi->pDevMode) return FALSE; @@ -2899,6 +2928,14 @@ BOOL WINAPI SetPrinterW( HANDLE printer, DWORD level, LPBYTE data, DWORD command
switch (level) { + case 2: + { + PRINTER_INFO_2W *pi2 = (PRINTER_INFO_2W *)data; + set_printer_2( key, pi2 ); + ret = TRUE; + break; + } + case 9: { PRINTER_INFO_9W *pi = (PRINTER_INFO_9W *)data;