From 26cb1650bc0e956ec6da73978dbad9560915d68d Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Mon, 11 May 2015 14:14:50 +0000 Subject: [PATCH] [SPOOLSV] Add stubs for all RPC functions of the winspool interface. svn path=/branches/colins-printing-for-freedom/; revision=67665 --- .../printing/base/spoolsv/CMakeLists.txt | 2 + .../win32ss/printing/base/spoolsv/rpcserver.c | 17 +- .../win32ss/printing/base/spoolsv/rpcstubs.c | 687 ++++++++++++++++++ 3 files changed, 694 insertions(+), 12 deletions(-) create mode 100644 reactos/win32ss/printing/base/spoolsv/rpcstubs.c diff --git a/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt b/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt index 1eb98e74dba..ffe56079093 100644 --- a/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt +++ b/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt @@ -5,6 +5,7 @@ add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl) list(APPEND SOURCE main.c rpcserver.c + rpcstubs.c precomp.h ${CMAKE_CURRENT_BINARY_DIR}/winspool_s.c) @@ -12,5 +13,6 @@ add_executable(spoolsv ${SOURCE} spoolsv.rc) set_module_type(spoolsv win32cui UNICODE) target_link_libraries(spoolsv wine) add_importlibs(spoolsv advapi32 kernel32 msvcrt ntdll rpcrt4) +add_delay_importlibs(spoolsv spoolss) add_pch(spoolsv precomp.h SOURCE) add_cd_file(TARGET spoolsv DESTINATION reactos/system32 FOR all) diff --git a/reactos/win32ss/printing/base/spoolsv/rpcserver.c b/reactos/win32ss/printing/base/spoolsv/rpcserver.c index fad5100c3fc..6e57d7fecda 100644 --- a/reactos/win32ss/printing/base/spoolsv/rpcserver.c +++ b/reactos/win32ss/printing/base/spoolsv/rpcserver.c @@ -35,18 +35,6 @@ RpcThreadProc(LPVOID lpParameter) return 0; } -DWORD -_RpcEnumPrinters(DWORD Flags, WINSPOOL_HANDLE Name, DWORD Level, BYTE* pPrinterEnum, DWORD cbBuf, DWORD* pcbNeeded, DWORD* pcReturned) -{ - return 0; -} - -DWORD -_RpcOpenPrinter(WINSPOOL_HANDLE pPrinterName, WINSPOOL_PRINTER_HANDLE* phPrinter, WCHAR* pDatatype, WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer, DWORD AccessRequired) -{ - return 0; -} - void __RPC_FAR* __RPC_USER midl_user_allocate(SIZE_T len) { @@ -59,6 +47,11 @@ midl_user_free(void __RPC_FAR* ptr) HeapFree(GetProcessHeap(), 0, ptr); } +void __RPC_USER +WINSPOOL_GDI_HANDLE_rundown(WINSPOOL_GDI_HANDLE hGdiHandle) +{ +} + void __RPC_USER WINSPOOL_PRINTER_HANDLE_rundown(WINSPOOL_PRINTER_HANDLE hPrinter) { diff --git a/reactos/win32ss/printing/base/spoolsv/rpcstubs.c b/reactos/win32ss/printing/base/spoolsv/rpcstubs.c new file mode 100644 index 00000000000..cfcb6adb60d --- /dev/null +++ b/reactos/win32ss/printing/base/spoolsv/rpcstubs.c @@ -0,0 +1,687 @@ +/* + * PROJECT: ReactOS Print Spooler Service + * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation + * PURPOSE: Unimplemented RPC calls + * COPYRIGHT: Copyright 2015 Colin Finck + */ + +#include "precomp.h" + +DWORD +_RpcEnumPrinters(DWORD Flags, WINSPOOL_HANDLE Name, DWORD Level, BYTE* pPrinterEnum, DWORD cbBuf, DWORD* pcbNeeded, DWORD* pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcOpenPrinter(WINSPOOL_HANDLE pPrinterName, WINSPOOL_PRINTER_HANDLE* phPrinter, WCHAR* pDatatype, WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer, DWORD AccessRequired) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetJob(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD JobId, WINSPOOL_JOB_CONTAINER *pJobContainer, DWORD Command) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetJob(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD JobId, DWORD Level, BYTE *pJob, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumJobs(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, DWORD Level, BYTE *pJob, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrinter(WINSPOOL_HANDLE pName, WINSPOOL_PRINTER_CONTAINER *pPrinterContainer, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer, WINSPOOL_SECURITY_CONTAINER *pSecurityContainer, WINSPOOL_PRINTER_HANDLE *pHandle) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinter(WINSPOOL_PRINTER_HANDLE hPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, WINSPOOL_PRINTER_CONTAINER *pPrinterContainer, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer, WINSPOOL_SECURITY_CONTAINER *pSecurityContainer, DWORD Command) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Level, BYTE *pPrinter, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrinterDriver(WINSPOOL_HANDLE pName, WINSPOOL_DRIVER_CONTAINER *pDriverContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrinterDrivers(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, DWORD Level, BYTE *pDrivers, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinterDriver(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pEnvironment, DWORD Level, BYTE *pDriver, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinterDriverDirectory(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, DWORD Level, BYTE *pDriverDirectory, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterDriver(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pDriverName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrintProcessor(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pPathName, WCHAR *pPrintProcessorName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrintProcessors(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, DWORD Level, BYTE *pPrintProcessorInfo, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrintProcessorDirectory(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, DWORD Level, BYTE *pPrintProcessorDirectory, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcStartDocPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, WINSPOOL_DOC_INFO_CONTAINER *pDocInfoContainer, DWORD *pJobId) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcStartPagePrinter(WINSPOOL_PRINTER_HANDLE hPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcWritePrinter(WINSPOOL_PRINTER_HANDLE hPrinter, BYTE *pBuf, DWORD cbBuf, DWORD *pcWritten) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEndPagePrinter(WINSPOOL_PRINTER_HANDLE hPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAbortPrinter(WINSPOOL_PRINTER_HANDLE hPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcReadPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, BYTE *pBuf, DWORD cbBuf, DWORD *pcNoBytesRead) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEndDocPrinter(WINSPOOL_PRINTER_HANDLE hPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddJob(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Level, BYTE *pAddJob, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcScheduleJob(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD JobId) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinterData(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pValueName, DWORD *pType, BYTE *pData, DWORD nSize, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetPrinterData(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pValueName, DWORD Type, BYTE *pData, DWORD cbData) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcWaitForPrinterChange(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Flags, DWORD *pFlags) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcClosePrinter(WINSPOOL_PRINTER_HANDLE *phPrinter) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddForm(WINSPOOL_PRINTER_HANDLE hPrinter, WINSPOOL_FORM_CONTAINER *pFormInfoContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeleteForm(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pFormName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetForm(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pFormName, DWORD Level, BYTE *pForm, DWORD cbBuf, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetForm(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pFormName, WINSPOOL_FORM_CONTAINER *pFormInfoContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumForms(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Level, BYTE *pForm, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPorts(WINSPOOL_HANDLE pName, DWORD Level, BYTE *pPort, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumMonitors(WINSPOOL_HANDLE pName, DWORD Level, BYTE *pMonitor, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPort(WINSPOOL_HANDLE pName, ULONG_PTR hWnd, WCHAR *pMonitorName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcConfigurePort(WINSPOOL_HANDLE pName, ULONG_PTR hWnd, WCHAR *pPortName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePort(WINSPOOL_HANDLE pName, ULONG_PTR hWnd, WCHAR *pPortName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcCreatePrinterIC(WINSPOOL_PRINTER_HANDLE hPrinter, WINSPOOL_GDI_HANDLE *pHandle, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcPlayGdiScriptOnPrinterIC(WINSPOOL_GDI_HANDLE hPrinterIC, BYTE *pIn, DWORD cIn, BYTE *pOut, DWORD cOut, DWORD ul) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterIC(WINSPOOL_GDI_HANDLE *phPrinterIC) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrinterConnection(WINSPOOL_HANDLE pName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterConnection(WINSPOOL_HANDLE pName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcPrinterMessageBox(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Error, ULONG_PTR hWnd, WCHAR *pText, WCHAR *pCaption, DWORD dwType) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddMonitor(WINSPOOL_HANDLE pName, WINSPOOL_MONITOR_CONTAINER *pMonitorContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeleteMonitor(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pMonitorName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrintProcessor(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pPrintProcessorName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrintProvidor(WINSPOOL_HANDLE pName, WINSPOOL_PROVIDOR_CONTAINER *pProvidorContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrintProvidor(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pPrintProviderName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrintProcessorDatatypes(WINSPOOL_HANDLE pName, WCHAR *pPrintProcessorName, DWORD Level, BYTE *pDatatypes, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcResetPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pDatatype, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinterDriver2(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pEnvironment, DWORD Level, BYTE *pDriver, DWORD cbBuf, DWORD *pcbNeeded, DWORD dwClientMajorVersion, DWORD dwClientMinorVersion, DWORD *pdwServerMaxVersion, DWORD *pdwServerMinVersion) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcClientFindFirstPrinterChangeNotification() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcFindNextPrinterChangeNotification() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcFindClosePrinterChangeNotification() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRouterFindFirstPrinterChangeNotificationOld() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcReplyOpenPrinter(WINSPOOL_HANDLE pMachine, WINSPOOL_PRINTER_HANDLE *phPrinterNotify, DWORD dwPrinterRemote, DWORD dwType, DWORD cbBuffer, BYTE *pBuffer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRouterReplyPrinter(WINSPOOL_PRINTER_HANDLE hNotify, DWORD fdwFlags, DWORD cbBuffer, BYTE *pBuffer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcReplyClosePrinter(WINSPOOL_PRINTER_HANDLE *phNotify) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPortEx(WINSPOOL_HANDLE pName, WINSPOOL_PORT_CONTAINER *pPortContainer, WINSPOOL_PORT_VAR_CONTAINER *pPortVarContainer, WCHAR *pMonitorName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRemoteFindFirstPrinterChangeNotification(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, WCHAR *pszLocalMachine, DWORD dwPrinterLocal, DWORD cbBuffer, BYTE *pBuffer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSpoolerInit() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcResetPrinterEx() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRemoteFindFirstPrinterChangeNotificationEx(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, WCHAR *pszLocalMachine, DWORD dwPrinterLocal, WINSPOOL_V2_NOTIFY_OPTIONS *pOptions) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRouterReplyPrinterEx(WINSPOOL_PRINTER_HANDLE hNotify, DWORD dwColor, DWORD fdwFlags, DWORD *pdwResult, DWORD dwReplyType, WINSPOOL_V2_UREPLY_PRINTER Reply) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcRouterRefreshPrinterChangeNotification(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD dwColor, WINSPOOL_V2_NOTIFY_OPTIONS *pOptions, WINSPOOL_V2_NOTIFY_INFO **ppInfo) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetAllocFailCount() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcOpenPrinterEx(WINSPOOL_HANDLE pPrinterName, WINSPOOL_PRINTER_HANDLE *pHandle, WCHAR *pDatatype, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer, DWORD AccessRequired, WINSPOOL_SPLCLIENT_CONTAINER *pClientInfo) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrinterEx(WINSPOOL_HANDLE pName, WINSPOOL_PRINTER_CONTAINER *pPrinterContainer, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer, WINSPOOL_SECURITY_CONTAINER *pSecurityContainer, WINSPOOL_SPLCLIENT_CONTAINER *pClientInfo, WINSPOOL_PRINTER_HANDLE *pHandle) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetPort(WINSPOOL_HANDLE pName, WCHAR *pPortName, WINSPOOL_PORT_CONTAINER *pPortContainer) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrinterData(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD dwIndex, WCHAR *pValueName, DWORD cbValueName, DWORD *pcbValueName, DWORD *pType, BYTE *pData, DWORD cbData, DWORD *pcbData) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterData(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pValueName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcClusterSplOpen() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcClusterSplClose() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcClusterSplIsAlive() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSetPrinterDataEx(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName, const WCHAR *pValueName, DWORD Type, BYTE *pData, DWORD cbData) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetPrinterDataEx(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName, const WCHAR *pValueName, DWORD *pType, BYTE *pData, DWORD nSize, DWORD *pcbNeeded) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrinterDataEx(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName, BYTE *pEnumValues, DWORD cbEnumValues, DWORD *pcbEnumValues, DWORD *pnEnumValues) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPrinterKey(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName, WCHAR *pSubkey, DWORD cbSubkey, DWORD *pcbSubkey) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterDataEx(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName, const WCHAR *pValueName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterKey(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pKeyName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSeekPrinter() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePrinterDriverEx(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pDriverName, DWORD dwDeleteFlag, DWORD dwVersionNum) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPerMachineConnection(WINSPOOL_HANDLE pServer, const WCHAR *pPrinterName, const WCHAR *pPrintServer, const WCHAR *pProvider) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcDeletePerMachineConnection(WINSPOOL_HANDLE pServer, const WCHAR *pPrinterName) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcEnumPerMachineConnections(WINSPOOL_HANDLE pServer, BYTE *pPrinterEnum, DWORD cbBuf, DWORD *pcbNeeded, DWORD *pcReturned) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcXcvData(WINSPOOL_PRINTER_HANDLE hXcv, const WCHAR *pszDataName, BYTE *pInputData, DWORD cbInputData, BYTE *pOutputData, DWORD cbOutputData, DWORD *pcbOutputNeeded, DWORD *pdwStatus) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddPrinterDriverEx(WINSPOOL_HANDLE pName, WINSPOOL_DRIVER_CONTAINER *pDriverContainer, DWORD dwFileCopyFlags) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSplOpenPrinter() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcGetSpoolFileInfo() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcCommitSpoolData() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcCloseSpoolFileHandle() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcFlushPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, BYTE *pBuf, DWORD cbBuf, DWORD *pcWritten, DWORD cSleep) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcSendRecvBidiData(WINSPOOL_PRINTER_HANDLE hPrinter, const WCHAR *pAction, WINSPOOL_BIDI_REQUEST_CONTAINER *pReqData, WINSPOOL_BIDI_RESPONSE_CONTAINER **ppRespData) +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +} + +DWORD +_RpcAddDriverCatalog() +{ + UNIMPLEMENTED; + return ERROR_INVALID_FUNCTION; +}