Huw Davies : winspool: Implement SetPrinterW for level 9.
Alexandre Julliard
julliard at winehq.org
Thu Apr 5 12:31:47 CDT 2012
Module: wine
Branch: master
Commit: 79aac9fabce638cc9676b6e128018b7b364f6504
URL: http://source.winehq.org/git/wine.git/?a=commit;h=79aac9fabce638cc9676b6e128018b7b364f6504
Author: Huw Davies <huw at codeweavers.com>
Date: Thu Apr 5 13:25:51 2012 +0100
winspool: Implement SetPrinterW for level 9.
---
dlls/winspool.drv/info.c | 51 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 41 insertions(+), 10 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 72fa8f0..a5b065c 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -2243,16 +2243,6 @@ BOOL WINAPI DeletePortW (LPWSTR pName, HWND hWnd, LPWSTR pPortName)
}
/******************************************************************************
- * SetPrinterW [WINSPOOL.@]
- */
-BOOL WINAPI SetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD Command)
-{
- FIXME("(%p, %d, %p, %d): stub\n", hPrinter, Level, pPrinter, Command);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-/******************************************************************************
* WritePrinter [WINSPOOL.@]
*/
BOOL WINAPI WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten)
@@ -2869,6 +2859,47 @@ BOOL WINAPI SetPrinterA( HANDLE printer, DWORD level, LPBYTE data, DWORD command
return ret;
}
+static BOOL set_printer_9( HKEY key, const PRINTER_INFO_9W *pi )
+{
+ if (!pi->pDevMode) return FALSE;
+
+ set_reg_devmode( key, Default_DevModeW, pi->pDevMode );
+ return TRUE;
+}
+
+/******************************************************************************
+ * SetPrinterW [WINSPOOL.@]
+ */
+BOOL WINAPI SetPrinterW( HANDLE printer, DWORD level, LPBYTE data, DWORD command )
+{
+ HKEY key;
+ BOOL ret = FALSE;
+
+ TRACE( "(%p, %d, %p, %d)\n", printer, level, data, command );
+
+ if (command != 0) FIXME( "Ignoring command %d\n", command );
+
+ if (WINSPOOL_GetOpenedPrinterRegKey( printer, &key ))
+ return FALSE;
+
+ switch (level)
+ {
+ case 9:
+ {
+ PRINTER_INFO_9W *pi = (PRINTER_INFO_9W *)data;
+ ret = set_printer_9( key, pi );
+ break;
+ }
+
+ default:
+ FIXME( "Unimplemented level %d\n", level );
+ SetLastError( ERROR_INVALID_LEVEL );
+ }
+
+ RegCloseKey( key );
+ return ret;
+}
+
/*****************************************************************************
* SetJobA [WINSPOOL.@]
*/
More information about the wine-cvs
mailing list