Author: dchapyshev
Date: Wed Mar 4 18:24:06 2009
New Revision: 39866
URL:
http://svn.reactos.org/svn/reactos?rev=39866&view=rev
Log:
- Sync spoolss with Wine head
- Fix winspool stubs
Modified:
trunk/reactos/dll/win32/spoolss/router.c
trunk/reactos/dll/win32/spoolss/spoolss.spec
trunk/reactos/dll/win32/winspool/stubs.c
Modified: trunk/reactos/dll/win32/spoolss/router.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/spoolss/router.c…
==============================================================================
--- trunk/reactos/dll/win32/spoolss/router.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/spoolss/router.c [iso-8859-1] Wed Mar 4 18:24:06 2009
@@ -313,6 +313,122 @@
}
/******************************************************************
+ * AddMonitorW (spoolss.@)
+ *
+ * Install a Printmonitor
+ *
+ * PARAMS
+ * pName [I] Servername or NULL (local Computer)
+ * Level [I] Structure-Level (Must be 2)
+ * pMonitors [I] PTR to MONITOR_INFO_2
+ *
+ * RETURNS
+ * Success: TRUE
+ * Failure: FALSE
+ *
+ * NOTES
+ * All Files for the Monitor must already be copied to %winsysdir%
("%SystemRoot%\system32")
+ *
+ */
+BOOL WINAPI AddMonitorW(LPWSTR pName, DWORD Level, LPBYTE pMonitors)
+{
+ backend_t * pb;
+ DWORD res = ROUTER_UNKNOWN;
+
+ TRACE("(%s, %d, %p)\n", debugstr_w(pName), Level, pMonitors);
+
+ if (Level != 2) {
+ SetLastError(ERROR_INVALID_LEVEL);
+ return FALSE;
+ }
+
+ pb = backend_first(pName);
+ if (pb && pb->fpAddMonitor)
+ res = pb->fpAddMonitor(pName, Level, pMonitors);
+ else
+ {
+ SetLastError(ERROR_PROC_NOT_FOUND);
+ }
+
+ TRACE("got %u with %u\n", res, GetLastError());
+ return (res == ROUTER_SUCCESS);
+}
+
+/******************************************************************
+ * AddPrinterDriverExW (spoolss.@)
+ *
+ * Install a Printer Driver with the Option to upgrade / downgrade the Files
+ *
+ * PARAMS
+ * pName [I] Servername or NULL (local Computer)
+ * level [I] Level for the supplied DRIVER_INFO_*W struct
+ * pDriverInfo [I] PTR to DRIVER_INFO_*W struct with the Driver Parameter
+ * dwFileCopyFlags [I] How to Copy / Upgrade / Downgrade the needed Files
+ *
+ * RESULTS
+ * Success: TRUE
+ * Failure: FALSE
+ *
+ */
+BOOL WINAPI AddPrinterDriverExW(LPWSTR pName, DWORD level, LPBYTE pDriverInfo, DWORD
dwFileCopyFlags)
+{
+ backend_t * pb;
+ DWORD res = ROUTER_UNKNOWN;
+
+ TRACE("(%s, %d, %p, 0x%x)\n", debugstr_w(pName), level, pDriverInfo,
dwFileCopyFlags);
+
+ if (!pDriverInfo) {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ pb = backend_first(pName);
+ if (pb && pb->fpAddPrinterDriverEx)
+ res = pb->fpAddPrinterDriverEx(pName, level, pDriverInfo, dwFileCopyFlags);
+ else
+ {
+ SetLastError(ERROR_PROC_NOT_FOUND);
+ }
+
+ TRACE("got %u with %u\n", res, GetLastError());
+ return (res == ROUTER_SUCCESS);
+}
+
+/******************************************************************
+ * DeleteMonitorW (spoolss.@)
+ *
+ * Delete a specific Printmonitor from a Printing-Environment
+ *
+ * PARAMS
+ * pName [I] Servername or NULL (local Computer)
+ * pEnvironment [I] Printing-Environment of the Monitor or NULL (Default)
+ * pMonitorName [I] Name of the Monitor, that should be deleted
+ *
+ * RETURNS
+ * Success: TRUE
+ * Failure: FALSE
+ *
+ */
+BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName)
+{
+ backend_t * pb;
+ DWORD res = ROUTER_UNKNOWN;
+
+ TRACE("(%s, %s, %s)\n", debugstr_w(pName), debugstr_w(pEnvironment),
debugstr_w(pMonitorName));
+
+ pb = backend_first(pName);
+ if (pb && pb->fpDeleteMonitor)
+ res = pb->fpDeleteMonitor(pName, pEnvironment, pMonitorName);
+ else
+ {
+ SetLastError(ERROR_PROC_NOT_FOUND);
+ }
+
+ TRACE("got %u with %u\n", res, GetLastError());
+ return (res == ROUTER_SUCCESS);
+}
+
+/******************************************************************
* EnumMonitorsW (spoolss.@)
*
* Enumerate available Port-Monitors
@@ -399,3 +515,58 @@
return (res == ROUTER_SUCCESS);
}
+
+/******************************************************************
+ * GetPrinterDriverDirectoryW (spoolss.@)
+ *
+ * Return the PATH for the Printer-Drivers
+ *
+ * PARAMS
+ * pName [I] Servername or NULL (local Computer)
+ * pEnvironment [I] Printing-Environment or NULL (Default)
+ * Level [I] Structure-Level (must be 1)
+ * pDriverDirectory [O] PTR to Buffer that receives the Result
+ * cbBuf [I] Size of Buffer at pDriverDirectory
+ * pcbNeeded [O] PTR to DWORD that receives the size in Bytes used /
+ * required for pDriverDirectory
+ *
+ * RETURNS
+ * Success: TRUE and in pcbNeeded the Bytes used in pDriverDirectory
+ * Failure: FALSE and in pcbNeeded the Bytes required for pDriverDirectory,
+ * if cbBuf is too small
+ *
+ * Native Values returned in pDriverDirectory on Success:
+ *| NT(Windows NT x86): "%winsysdir%\\spool\\DRIVERS\\w32x86"
+ *| NT(Windows x64): "%winsysdir%\\spool\\DRIVERS\\x64"
+ *| NT(Windows 4.0): "%winsysdir%\\spool\\DRIVERS\\win40"
+ *| win9x(Windows 4.0): "%winsysdir%"
+ *
+ * "%winsysdir%" is the Value from GetSystemDirectoryW()
+ *
+ */
+BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf, LPDWORD pcbNeeded)
+{
+ backend_t * pb;
+ DWORD res = ROUTER_UNKNOWN;
+
+ TRACE("(%s, %s, %d, %p, %d, %p)\n", debugstr_w(pName),
+ debugstr_w(pEnvironment), Level, pDriverDirectory, cbBuf, pcbNeeded);
+
+ if (pcbNeeded) *pcbNeeded = 0;
+
+ pb = backend_first(pName);
+ if (pb && pb->fpGetPrinterDriverDirectory)
+ res = pb->fpGetPrinterDriverDirectory(pName, pEnvironment, Level,
+ pDriverDirectory, cbBuf, pcbNeeded);
+ else
+ {
+ SetLastError(ERROR_PROC_NOT_FOUND);
+ }
+
+ TRACE("got %u with %u (%u byte)\n",
+ res, GetLastError(), pcbNeeded ? *pcbNeeded : 0);
+
+ return (res == ROUTER_SUCCESS);
+
+}
Modified: trunk/reactos/dll/win32/spoolss/spoolss.spec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/spoolss/spoolss.…
==============================================================================
--- trunk/reactos/dll/win32/spoolss/spoolss.spec [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/spoolss/spoolss.spec [iso-8859-1] Wed Mar 4 18:24:06 2009
@@ -1,14 +1,14 @@
@ stub AbortPrinter
@ stub AddFormW
@ stub AddJobW
-@ stub AddMonitorW
+@ stdcall AddMonitorW(wstr long ptr)
@ stub AddPerMachineConnectionW
@ stub AddPortExW
@ stub AddPortW
@ stub AddPrintProcessorW
@ stub AddPrintProvidorW
@ stub AddPrinterConnectionW
-@ stub AddPrinterDriverExW
+@ stdcall AddPrinterDriverExW(wstr long ptr long)
@ stub AddPrinterDriverW
@ stub AddPrinterExW
@ stub AddPrinterW
@@ -25,7 +25,7 @@
@ stub CreatePrinterIC
@ stub DbgGetPointers
@ stub DeleteFormW
-@ stub DeleteMonitorW
+@ stdcall DeleteMonitorW(wstr wstr wstr)
@ stub DeletePerMachineConnectionW
@ stub DeletePortW
@ stub DeletePrintProcessorW
@@ -68,7 +68,7 @@
@ stub GetPrintProcessorDirectoryW
@ stub GetPrinterDataExW
@ stub GetPrinterDataW
-@ stub GetPrinterDriverDirectoryW
+@ stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr)
@ stub GetPrinterDriverExW
@ stub GetPrinterDriverW
@ stub GetPrinterW
Modified: trunk/reactos/dll/win32/winspool/stubs.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winspool/stubs.c…
==============================================================================
--- trunk/reactos/dll/win32/winspool/stubs.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/winspool/stubs.c [iso-8859-1] Wed Mar 4 18:24:06 2009
@@ -1068,9 +1068,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrinterDriverA(HANDLE Printer, LPSTR Environment, DWORD Level, PBYTE Buffer, DWORD
BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrinterDriverA(HANDLE Printer, LPSTR Environment, DWORD Level, LPBYTE Buffer, DWORD
BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrinterDriverA stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1082,9 +1082,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrinterDriverW(HANDLE Printer, LPWSTR Environment, DWORD Level, PBYTE Buffer, DWORD
BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrinterDriverW(HANDLE Printer, LPWSTR Environment, DWORD Level, LPBYTE Buffer, DWORD
BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrinterDriverW stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1096,9 +1096,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrinterDriverDirectoryA(LPSTR Name, LPSTR Environment, DWORD Level, PBYTE Buffer,
DWORD BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrinterDriverDirectoryA(LPSTR Name, LPSTR Environment, DWORD Level, LPBYTE Buffer,
DWORD BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrinterDriverDirectoryA stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1110,9 +1110,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrinterDriverDirectoryW(LPWSTR Name, LPWSTR Environment, DWORD Level, PBYTE Buffer,
DWORD BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrinterDriverDirectoryW(LPWSTR Name, LPWSTR Environment, DWORD Level, LPBYTE Buffer,
DWORD BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrinterDriverDirectoryW stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1124,9 +1124,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrintProcessorDirectoryA(LPSTR Name, LPSTR Environment, DWORD Level, PBYTE Buffer,
DWORD BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrintProcessorDirectoryA(LPSTR Name, LPSTR Environment, DWORD Level, LPBYTE Buffer,
DWORD BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrintProcessorDirectoryA stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1138,9 +1138,9 @@
/*
* @unimplemented
*/
-DWORD
-WINAPI
-GetPrintProcessorDirectoryW(LPWSTR Name, LPWSTR Environment, DWORD Level, PBYTE Buffer,
DWORD BufSize, PDWORD Needed)
+BOOL
+WINAPI
+GetPrintProcessorDirectoryW(LPWSTR Name, LPWSTR Environment, DWORD Level, LPBYTE Buffer,
DWORD BufSize, LPDWORD Needed)
{
OutputDebugStringW(L"winspool GetPrintProcessorDirectoryW stub called\n");
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);