From 794f62a466484f041f7bf3556c31f7c94a4b976d Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Wed, 24 Jun 2015 09:51:29 +0000 Subject: [PATCH 1/1] [SPOOLSV, WINSPOOL] Local Communication between winspool.drv and spoolsv.exe happens using the ncalrpc protocol. The ncacn_np endpoint is only available when sharing a printer. It's then used for receiving a remote call from win32spl.dll. Reference: http://www.hsc.fr/ressources/articles/win_net_srv/msrpc_spoolss.html This fixes e.g. testing a _RpcOpenPrinter call from our winspool.drv to a local printer under Windows. svn path=/branches/colins-printing-for-freedom/; revision=68248 --- reactos/include/reactos/idl/winspool.idl | 2 +- reactos/win32ss/printing/base/spoolsv/rpcserver.c | 4 ++-- reactos/win32ss/printing/base/winspool/main.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/reactos/include/reactos/idl/winspool.idl b/reactos/include/reactos/idl/winspool.idl index ea8d3cc8d5d..736b53262cf 100644 --- a/reactos/include/reactos/idl/winspool.idl +++ b/reactos/include/reactos/idl/winspool.idl @@ -841,7 +841,7 @@ WINSPOOL_V2_UREPLY_PRINTER; [ uuid(12345678-1234-ABCD-EF00-0123456789AB), version(1.0), - endpoint("ncacn_np:[\\pipe\\spoolss]"), + endpoint("ncalrpc:[spoolss]", "ncacn_np:[\\pipe\\spoolss]"), pointer_default(unique) ] diff --git a/reactos/win32ss/printing/base/spoolsv/rpcserver.c b/reactos/win32ss/printing/base/spoolsv/rpcserver.c index 869353d8c8a..d5f8c920578 100644 --- a/reactos/win32ss/printing/base/spoolsv/rpcserver.c +++ b/reactos/win32ss/printing/base/spoolsv/rpcserver.c @@ -8,11 +8,11 @@ #include "precomp.h" DWORD WINAPI -RpcThreadProc(LPVOID lpParameter) +LrpcThreadProc(LPVOID lpParameter) { RPC_STATUS Status; - Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\spoolss", NULL); + Status = RpcServerUseProtseqEpW(L"ncalrpc", 20, L"spoolss", NULL); if (Status != RPC_S_OK) { ERR("RpcServerUseProtseqEpW failed with status %ld!\n", Status); diff --git a/reactos/win32ss/printing/base/winspool/main.c b/reactos/win32ss/printing/base/winspool/main.c index 016d8075c29..624c17787a4 100644 --- a/reactos/win32ss/printing/base/winspool/main.c +++ b/reactos/win32ss/printing/base/winspool/main.c @@ -15,7 +15,7 @@ WINSPOOL_HANDLE_bind(WINSPOOL_HANDLE wszName) RPC_STATUS Status; // Get us a string binding handle from the supplied connection information - Status = RpcStringBindingComposeW(NULL, L"ncacn_np", wszName, L"\\pipe\\spoolss", NULL, &wszStringBinding); + Status = RpcStringBindingComposeW(NULL, L"ncalrpc", wszName, L"spoolss", NULL, &wszStringBinding); if (Status != RPC_S_OK) { ERR("RpcStringBindingComposeW failed with status %ld!\n", Status); -- 2.17.1