Author: cfinck Date: Wed May 6 12:47:20 2015 New Revision: 67576 URL: http://svn.reactos.org/svn/reactos?rev=67576&view=rev Log: - Add the first bits of the winspool/spoolsv/spoolss interface in a WIDL-compatible format. References: - https://git.samba.org/?p=samba.git;a=blob;f=librpc/idl/spoolss.idl;hb=618af83d1bd07b12a9acc88b0d2111cab7a8bb2b - https://msdn.microsoft.com/en-us/library/cc244649.aspx - Replace our stubbed spoolsv by a new basic implementation that already creates a thread to serve RPC requests. - Add stubbed versions of localmon, localspl, spoolss, winprint, winspool matching the exports of the Windows Server 2003 DLLs. localmon and winprint are part of localspl in Windows Server 2003. I took the freedom of putting these distinct components into separate DLLs (as it's done for localmon in NT4 and for winprint in Win7). - Implement some stubs myself to fix the build (e.g. comdlg32 uses some functions). - Implement OpenPrinterA and OpenPrinterW in winspool. This is just ANSI-to-Unicode conversion and a RPC call. - Remove the Wine-imported ntprint, this one also needs a complete rewrite once we're at this point.
Added: branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c (with props) branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h (with props) Removed: branches/colins-printing-for-freedom/reactos/dll/win32/ntprint/ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.c Modified: branches/colins-printing-for-freedom/reactos/dll/win32/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/base/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.rc branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/CMakeLists.txt Modified: branches/colins-printing-for-freedom/reactos/dll/win32/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/dll/win32/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/dll/win32/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/dll/win32/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -135,7 +135,6 @@ add_subdirectory(ntdsapi) add_subdirectory(ntlanman) add_subdirectory(ntmarta) -add_subdirectory(ntprint) add_subdirectory(objsel) add_subdirectory(odbc32) add_subdirectory(odbccp32) Added: branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl (added) +++ branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,48 @@ +/* + * PROJECT: ReactOS Spooler API + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: WIDL-compatible interface definition for the Spooler API + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include <ms-dtyp.idl> + +typedef [context_handle] void* WINSPOOL_PRINTER_HANDLE; +typedef [handle, string, unique] WCHAR* WINSPOOL_HANDLE; + +typedef struct _DEVMODE_CONTAINER +{ + DWORD cbBuf; + BYTE* pDevMode; +} +WINSPOOL_DEVMODE_CONTAINER; + + +[ + uuid(12345678-1234-ABCD-EF00-0123456789AB), + version(1.0), + endpoint("ncacn_np:[\\pipe\\spoolss]"), + pointer_default(unique) +] + +interface winspool { + /* Function 0 */ + DWORD _RpcEnumPrinters( + [in] DWORD Flags, + [in] WINSPOOL_HANDLE Name, + [in] DWORD Level, + [out] BYTE* pPrinterEnum, + [in] DWORD cbBuf, + [out] DWORD* pcbNeeded, + [out] DWORD* pcReturned + ); + + /* Function 1 */ + DWORD _RpcOpenPrinter( + [in] WINSPOOL_HANDLE pPrinterName, + [out] WINSPOOL_PRINTER_HANDLE* phPrinter, + [in, string, unique] WCHAR* pDatatype, + [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer, + [in] DWORD AccessRequired + ); +} Propchange: branches/colins-printing-for-freedom/reactos/include/reactos/idl/winspool.idl ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1,5 +1,5 @@ add_subdirectory(base) #add_subdirectory(drivers) add_subdirectory(monitors) -#add_subdirectory(processors) -#add_subdirectory(providers) +add_subdirectory(processors) +add_subdirectory(providers) Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1,4 +1,4 @@ #add_subdirectory(printui) -#add_subdirectory(spoolss) +add_subdirectory(spoolss) add_subdirectory(spoolsv) -#add_subdirectory(winspool) +add_subdirectory(winspool) Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,18 @@ + +spec2def(spoolss spoolss.spec ADD_IMPORTLIB) + +list(APPEND SOURCE + main.c + precomp.h) + +add_library(spoolss SHARED + ${SOURCE} + spoolss.rc + ${CMAKE_CURRENT_BINARY_DIR}/spoolss_stubs.c + ${CMAKE_CURRENT_BINARY_DIR}/spoolss.def) + +set_module_type(spoolss win32dll UNICODE) +target_link_libraries(spoolss wine) +add_importlibs(spoolss kernel32 msvcrt ntdll) +add_pch(spoolss precomp.h SOURCE) +add_cd_file(TARGET spoolss DESTINATION reactos/system32 FOR all) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,86 @@ +/* + * PROJECT: ReactOS Spooler Router + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +BOOL WINAPI +ClosePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +EndDocPrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +EndPagePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +EnumPrintersW(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +InitializeRouter(HANDLE SpoolerStatusHandle) +{ + return FALSE; +} + +BOOL WINAPI +OpenPrinterW(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault) +{ + return FALSE; +} + +DWORD WINAPI +StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo) +{ + return 0; +} + +BOOL WINAPI +StartPagePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten) +{ + return FALSE; +} + +BOOL WINAPI +XcvDataW(HANDLE hXcv, PCWSTR pszDataName, PBYTE pInputData, DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded, PDWORD pdwStatus) +{ + return FALSE; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,20 @@ +/* + * PROJECT: ReactOS Spooler Router + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <wingdi.h> +#include <winspool.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(spoolss); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Spooler Router" +#define REACTOS_STR_INTERNAL_NAME "spoolss" +#define REACTOS_STR_ORIGINAL_FILENAME "spoolss.dll" +#include <reactos/version.rc> Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,178 @@ +@ stub AbortPrinter +@ stub AddDriverCatalog +@ stub AddFormW +@ stub AddJobW +@ stub AddMonitorW +@ stub AddPerMachineConnectionW +@ stub AddPortExW +@ stub AddPortW +@ stub AddPrinterConnectionW +@ stub AddPrinterDriverExW +@ stub AddPrinterDriverW +@ stub AddPrinterExW +@ stub AddPrinterW +@ stub AddPrintProcessorW +@ stub AddPrintProvidorW +@ stub AdjustPointers +@ stub AdjustPointersInStructuresArray +@ stub AlignKMPtr +@ stub AlignRpcPtr +@ stub AllocSplStr +@ stub AllowRemoteCalls +@ stub AppendPrinterNotifyInfoData +@ stub bGetDevModePerUser +@ stub bSetDevModePerUser +@ stub BuildOtherNamesFromMachineName +@ stub CacheAddName +@ stub CacheCreateAndAddNode +@ stub CacheCreateAndAddNodeWithIPAddresses +@ stub CacheDeleteNode +@ stub CacheIsNameCluster +@ stub CacheIsNameInNodeList +@ stub CallDrvDevModeConversion +@ stub CallRouterFindFirstPrinterChangeNotification +@ stub CheckLocalCall +@ stdcall ClosePrinter(long) +@ stub ClusterSplClose +@ stub ClusterSplIsAlive +@ stub ClusterSplOpen +@ stub ConfigurePortW +@ stub CreatePrinterIC +@ stub DbgGetPointers +@ stub DeleteFormW +@ stub DeleteMonitorW +@ stub DeletePerMachineConnectionW +@ stub DeletePortW +@ stub DeletePrinter +@ stub DeletePrinterConnectionW +@ stub DeletePrinterDataExW +@ stub DeletePrinterDataW +@ stub DeletePrinterDriverExW +@ stub DeletePrinterDriverW +@ stub DeletePrinterIC +@ stub DeletePrinterKeyW +@ stub DeletePrintProcessorW +@ stub DeletePrintProvidorW +@ stub DllAllocSplMem +@ stub DllFreeSplMem +@ stub DllFreeSplStr +@ stdcall EndDocPrinter(long) +@ stdcall EndPagePrinter(long) +@ stub EnumFormsW +@ stub EnumJobsW +@ stub EnumMonitorsW +@ stub EnumPerMachineConnectionsW +@ stub EnumPortsW +@ stub EnumPrinterDataExW +@ stub EnumPrinterDataW +@ stub EnumPrinterDriversW +@ stub EnumPrinterKeyW +@ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) +@ stub EnumPrintProcessorDatatypesW +@ stub EnumPrintProcessorsW +@ stub FindClosePrinterChangeNotification +@ stub FlushPrinter +@ stub FormatPrinterForRegistryKey +@ stub FormatRegistryKeyForPrinter +@ stub FreeOtherNames +@ stub GetClientUserHandle +@ stub GetFormW +@ stub GetJobAttributes +@ stub GetJobW +@ stub GetNetworkId +@ stub GetPrinterDataExW +@ stub GetPrinterDataW +@ stub GetPrinterDriverDirectoryW +@ stub GetPrinterDriverExW +@ stdcall GetPrinterDriverW(long wstr long ptr long ptr) +@ stdcall GetPrinterW(long long ptr long ptr) +@ stdcall GetPrintProcessorDirectoryW(wstr wstr long ptr long ptr) +@ stub GetServerPolicy +@ stub GetShrinkedSize +@ stub ImpersonatePrinterClient +@ stdcall InitializeRouter(long) +@ stub IsNamedPipeRpcCall +@ stub LoadDriver +@ stub LoadDriverFiletoConvertDevmode +@ stub LoadDriverWithVersion +@ stub LogWmiTraceEvent +@ stub MarshallDownStructure +@ stub MarshallDownStructuresArray +@ stub MarshallUpStructure +@ stub MarshallUpStructuresArray +@ stub MIDL_user_allocate1 +@ stub MIDL_user_free1 +@ stub OldGetPrinterDriverW +@ stub OpenPrinterExW +@ stub OpenPrinterPortW +@ stdcall OpenPrinterW(wstr ptr ptr) +@ stub PackStrings +@ stub PartialReplyPrinterChangeNotification +@ stub PlayGdiScriptOnPrinterIC +@ stub PrinterHandleRundown +@ stub PrinterMessageBoxW +@ stub ProvidorFindClosePrinterChangeNotification +@ stub ProvidorFindFirstPrinterChangeNotification +@ stub pszDbgAllocMsgA +@ stub ReadPrinter +@ stub ReallocSplMem +@ stub ReallocSplStr +@ stub RemoteFindFirstPrinterChangeNotification +@ stub ReplyClosePrinter +@ stub ReplyOpenPrinter +@ stub ReplyPrinterChangeNotification +@ stub ResetPrinterW +@ stub RevertToPrinterSelf +@ stub RouterAllocBidiMem +@ stub RouterAllocBidiResponseContainer +@ stub RouterAllocPrinterNotifyInfo +@ stub RouterFindFirstPrinterChangeNotification +@ stub RouterFindNextPrinterChangeNotification +@ stub RouterFreeBidiMem +@ stub RouterFreePrinterNotifyInfo +@ stub RouterRefreshPrinterChangeNotification +@ stub RouterReplyPrinter +@ stub ScheduleJob +@ stub SeekPrinter +@ stub SendRecvBidiData +@ stub SetAllocFailCount +@ stub SetFormW +@ stub SetJobW +@ stub SetPortW +@ stub SetPrinterDataExW +@ stub SetPrinterDataW +@ stub SetPrinterW +@ stub SplCloseSpoolFileHandle +@ stub SplCommitSpoolData +@ stub SplDriverUnloadComplete +@ stub SplGetSpoolFileInfo +@ stub SplInitializeWinSpoolDrv +@ stub SplIsSessionZero +@ stub SplIsUpgrade +@ stub SplPowerEvent +@ stub SplProcessPnPEvent +@ stub SplPromptUIInUsersSession +@ stub SplReadPrinter +@ stub SplRegisterForDeviceEvents +@ stub SplShutDownRouter +@ stub SplUnregisterForDeviceEvents +@ stub SpoolerFindClosePrinterChangeNotification +@ stub SpoolerFindFirstPrinterChangeNotification +@ stub SpoolerFindNextPrinterChangeNotification +@ stub SpoolerFreePrinterNotifyInfo +@ stub SpoolerHasInitialized +@ stub SpoolerInit +@ stdcall StartDocPrinterW(long long ptr) +@ stdcall StartPagePrinter(long) +@ stub UndoAlignKMPtr +@ stub UndoAlignRpcPtr +@ stub UnloadDriver +@ stub UnloadDriverFile +@ stub UpdateBufferSize +@ stub UpdatePrinterRegAll +@ stub UpdatePrinterRegUser +@ stub vDbgLogError +@ stub WaitForPrinterChange +@ stub WaitForSpoolerInitialization +@ stdcall WritePrinter(long ptr long ptr) +@ stdcall XcvDataW(long wstr ptr long ptr long ptr ptr) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1,6 +1,16 @@ -add_executable(spoolsv spoolsv.c spoolsv.rc) +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl) +add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl) + +list(APPEND SOURCE + main.c + rpcserver.c + precomp.h + ${CMAKE_CURRENT_BINARY_DIR}/winspool_s.c) + +add_executable(spoolsv ${SOURCE} spoolsv.rc) +set_module_type(spoolsv win32cui UNICODE) target_link_libraries(spoolsv wine) -set_module_type(spoolsv win32cui UNICODE) -add_importlibs(spoolsv advapi32 msvcrt kernel32 ntdll) +add_importlibs(spoolsv advapi32 kernel32 msvcrt ntdll rpcrt4) +add_pch(spoolsv precomp.h SOURCE) add_cd_file(TARGET spoolsv DESTINATION reactos/system32 FOR all) Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,92 @@ +/* + * PROJECT: ReactOS Print Spooler Service + * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +SERVICE_STATUS_HANDLE hServiceStatus; +SERVICE_STATUS ServiceStatus; +WCHAR wszServiceName[] = L"Spooler"; + +static void +_UpdateServiceStatus(DWORD dwNewStatus, DWORD dwCheckPoint) +{ + ServiceStatus.dwCheckPoint = dwCheckPoint; + ServiceStatus.dwCurrentState = dwNewStatus; + SetServiceStatus(hServiceStatus, &ServiceStatus); +} + +static DWORD WINAPI +_ServiceControlHandlerEx(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) +{ + switch (dwControl) + { + case SERVICE_CONTROL_SHUTDOWN: + case SERVICE_CONTROL_STOP: + _UpdateServiceStatus(SERVICE_STOP_PENDING, 1); + RpcMgmtStopServerListening(NULL); + _UpdateServiceStatus(SERVICE_STOPPED, 0); + return NO_ERROR; + + case SERVICE_CONTROL_INTERROGATE: + return NO_ERROR; + + default: + return ERROR_CALL_NOT_IMPLEMENTED; + } +} + +static VOID WINAPI +_ServiceMain(DWORD dwArgc, LPWSTR* lpszArgv) +{ + HANDLE hThread; + + UNREFERENCED_PARAMETER(dwArgc); + UNREFERENCED_PARAMETER(lpszArgv); + + // Register our service for control + hServiceStatus = RegisterServiceCtrlHandlerExW(wszServiceName, _ServiceControlHandlerEx, NULL); + + // Report initial SERVICE_START_PENDING status + ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + ServiceStatus.dwServiceSpecificExitCode = 0; + ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + ServiceStatus.dwWaitHint = 4000; + ServiceStatus.dwWin32ExitCode = NO_ERROR; + _UpdateServiceStatus(SERVICE_START_PENDING, 0); + + // Create a thread for serving RPC requests + hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RpcThreadProc, NULL, 0, NULL); + + if (hThread) + { + // We don't need the thread handle. Keeping it open blocks the thread from terminating. + CloseHandle(hThread); + _UpdateServiceStatus(SERVICE_RUNNING, 0); + } + else + { + ERR("CreateThread failed with error %u!\n", GetLastError()); + _UpdateServiceStatus(SERVICE_STOPPED, 0); + } +} + +int +wmain(int argc, WCHAR* argv[]) +{ + SERVICE_TABLE_ENTRYW ServiceTable[] = + { + {wszServiceName, _ServiceMain}, + {NULL, NULL} + }; + + UNREFERENCED_PARAMETER(argc); + UNREFERENCED_PARAMETER(argv); + + StartServiceCtrlDispatcherW(ServiceTable); + + return 0; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ +/* + * PROJECT: ReactOS Print Spooler Service + * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winsvc.h> +#include <winspool_s.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(spoolsv); + +// rpcserver.c +extern DWORD WINAPI RpcThreadProc(LPVOID lpParameter); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,65 @@ +/* + * PROJECT: ReactOS Print Spooler Service + * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation + * PURPOSE: RPC Server Thread + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +DWORD WINAPI +RpcThreadProc(LPVOID lpParameter) +{ + RPC_STATUS Status; + + Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\spoolss", NULL); + if (Status != RPC_S_OK) + { + ERR("RpcServerUseProtseqEpW failed with status %u!\n", Status); + return 0; + } + + Status = RpcServerRegisterIf(winspool_v1_0_s_ifspec, NULL, NULL); + if (Status != RPC_S_OK) + { + ERR("RpcServerRegisterIf failed with status %u!\n", Status); + return 0; + } + + Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, 0); + if (Status != RPC_S_OK) + { + ERR("RpcServerListen() failed with status %u!\n", Status); + } + + 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) +{ + return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); +} + +void __RPC_USER +midl_user_free(void __RPC_FAR* ptr) +{ + HeapFree(GetProcessHeap(), 0, ptr); +} + +void __RPC_USER +WINSPOOL_PRINTER_HANDLE_rundown(WINSPOOL_PRINTER_HANDLE hPrinter) +{ +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/rpcserver.c ------------------------------------------------------------------------------ svn:eol-style = native Removed: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.c?rev=67575 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.c (removed) @@ -1,129 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: services/spoolsv/spoolsv.c - * PURPOSE: Printer spooler - * PROGRAMMER: Eric Kohl - */ - -/* INCLUDES *****************************************************************/ - -#include <windef.h> -#include <winsvc.h> -#include <wine/debug.h> - -WINE_DEFAULT_DEBUG_CHANNEL(spoolsv); - - -/* GLOBALS ******************************************************************/ - -static VOID CALLBACK ServiceMain(DWORD argc, LPWSTR *argv); -static WCHAR ServiceName[] = L"Spooler"; -static SERVICE_TABLE_ENTRYW ServiceTable[] = -{ - {ServiceName, ServiceMain}, - {NULL, NULL} -}; - -SERVICE_STATUS_HANDLE ServiceStatusHandle; -SERVICE_STATUS ServiceStatus; - - -/* FUNCTIONS *****************************************************************/ - -static VOID -UpdateServiceStatus(DWORD dwState) -{ - ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - ServiceStatus.dwCurrentState = dwState; - - if (dwState == SERVICE_RUNNING) - ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; - else - ServiceStatus.dwControlsAccepted = 0; - - ServiceStatus.dwWin32ExitCode = 0; - ServiceStatus.dwServiceSpecificExitCode = 0; - ServiceStatus.dwCheckPoint = 0; - - if (dwState == SERVICE_START_PENDING || - dwState == SERVICE_STOP_PENDING) - ServiceStatus.dwWaitHint = 10000; - else - ServiceStatus.dwWaitHint = 0; - - SetServiceStatus(ServiceStatusHandle, - &ServiceStatus); -} - - -static DWORD WINAPI -ServiceControlHandler(DWORD dwControl, - DWORD dwEventType, - LPVOID lpEventData, - LPVOID lpContext) -{ - TRACE("ServiceControlHandler() called\n"); - - switch (dwControl) - { - case SERVICE_CONTROL_STOP: - TRACE(" SERVICE_CONTROL_STOP received\n"); - UpdateServiceStatus(SERVICE_STOPPED); - return ERROR_SUCCESS; - - case SERVICE_CONTROL_INTERROGATE: - TRACE(" SERVICE_CONTROL_INTERROGATE received\n"); - SetServiceStatus(ServiceStatusHandle, - &ServiceStatus); - return ERROR_SUCCESS; - - case SERVICE_CONTROL_SHUTDOWN: - TRACE(" SERVICE_CONTROL_SHUTDOWN received\n"); - UpdateServiceStatus(SERVICE_STOPPED); - return ERROR_SUCCESS; - - default : - TRACE(" Control %lu received\n"); - return ERROR_CALL_NOT_IMPLEMENTED; - } -} - - -static VOID CALLBACK -ServiceMain(DWORD argc, LPWSTR *argv) -{ - UNREFERENCED_PARAMETER(argc); - UNREFERENCED_PARAMETER(argv); - - TRACE("ServiceMain() called\n"); - - ServiceStatusHandle = RegisterServiceCtrlHandlerExW(ServiceName, - ServiceControlHandler, - NULL); - - TRACE("Calling SetServiceStatus()\n"); - UpdateServiceStatus(SERVICE_RUNNING); - TRACE("SetServiceStatus() called\n"); - - - TRACE("ServiceMain() done\n"); -} - - -int -wmain(int argc, WCHAR *argv[]) -{ - UNREFERENCED_PARAMETER(argc); - UNREFERENCED_PARAMETER(argv); - - TRACE("Spoolsv: main() started\n"); - - StartServiceCtrlDispatcher(ServiceTable); - - TRACE("Spoolsv: main() done\n"); - - return 0; -} - -/* EOF */ Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.rc?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.rc [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolsv/spoolsv.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1,4 +1,4 @@ -#define REACTOS_STR_FILE_DESCRIPTION "Spooler-Service" -#define REACTOS_STR_INTERNAL_NAME "Spoolsv" -#define REACTOS_STR_ORIGINAL_FILENAME "Spoolsv.exe" +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Print Spooler Service" +#define REACTOS_STR_INTERNAL_NAME "spoolsv" +#define REACTOS_STR_ORIGINAL_FILENAME "spoolsv.exe" #include <reactos/version.rc> Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ + +include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl) +add_rpc_files(client ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl) +spec2def(winspool winspool.spec ADD_IMPORTLIB) + +list(APPEND SOURCE + main.c + precomp.h + ${CMAKE_CURRENT_BINARY_DIR}/winspool_c.c) + +add_library(winspool SHARED + ${SOURCE} + winspool.rc + ${CMAKE_CURRENT_BINARY_DIR}/winspool_stubs.c + ${CMAKE_CURRENT_BINARY_DIR}/winspool.def) + +set_target_properties(winspool PROPERTIES SUFFIX ".drv") +set_module_type(winspool win32dll UNICODE) +target_link_libraries(winspool wine) +add_importlibs(winspool kernel32 msvcrt ntdll rpcrt4) +add_pch(winspool precomp.h SOURCE) +add_cd_file(TARGET winspool DESTINATION reactos/system32 FOR all) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,297 @@ +/* + * PROJECT: ReactOS Spooler API + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +handle_t __RPC_USER +WINSPOOL_HANDLE_bind(WINSPOOL_HANDLE wszName) +{ + handle_t hBinding; + PWSTR wszStringBinding; + RPC_STATUS Status; + + // Get us a string binding handle from the supplied connection information + Status = RpcStringBindingComposeW(NULL, L"ncacn_np", wszStringBinding, L"\\pipe\\spoolss", NULL, &wszStringBinding); + if (Status != RPC_S_OK) + { + ERR("RpcStringBindingComposeW failed with status %u!\n", Status); + return NULL; + } + + // Get a handle_t binding handle from the string binding handle + Status = RpcBindingFromStringBindingW(wszStringBinding, &hBinding); + if (Status != RPC_S_OK) + { + ERR("RpcBindingFromStringBindingW failed with status %u!\n", Status); + return NULL; + } + + // Free the string binding handle + Status = RpcStringFreeW(&wszStringBinding); + if (Status != RPC_S_OK) + { + ERR("RpcStringFreeW failed with status %u!\n", Status); + return NULL; + } + + return hBinding; +} + +void __RPC_USER +WINSPOOL_HANDLE_unbind(WINSPOOL_HANDLE wszName, handle_t hBinding) +{ + RPC_STATUS Status; + + Status = RpcBindingFree(&hBinding); + if (Status != RPC_S_OK) + { + ERR("RpcBindingFree failed with status %u!\n", Status); + } +} + +void __RPC_FAR* __RPC_USER +midl_user_allocate(SIZE_T len) +{ + return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); +} + +void __RPC_USER +midl_user_free(void __RPC_FAR* ptr) +{ + HeapFree(GetProcessHeap(), 0, ptr); +} + +BOOL WINAPI +ClosePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +DWORD WINAPI +DeviceCapabilitiesA(LPCSTR pDevice, LPCSTR pPort, WORD fwCapability, LPSTR pOutput, const DEVMODEA* pDevMode) +{ + return 0; +} + +DWORD WINAPI +DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort, WORD fwCapability, LPWSTR pOutput, const DEVMODEW* pDevMode) +{ + return 0; +} + +LONG WINAPI +DocumentPropertiesA(HWND hWnd, HANDLE hPrinter, LPSTR pDeviceName, PDEVMODEA pDevModeOutput, PDEVMODEA pDevModeInput, DWORD fMode) +{ + return 0; +} + +LONG WINAPI +DocumentPropertiesW(HWND hWnd, HANDLE hPrinter, LPWSTR pDeviceName, PDEVMODEW pDevModeOutput, PDEVMODEW pDevModeInput, DWORD fMode) +{ + return 0; +} + +BOOL WINAPI +EndDocPrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +EndPagePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +EnumPrintersA(DWORD Flags, LPSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned) +{ + return FALSE; +} + +BOOL WINAPI +EnumPrintersW(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned) +{ + return FALSE; +} + +BOOL WINAPI +GetDefaultPrinterA(LPSTR pszBuffer, LPDWORD pcchBuffer) +{ + return FALSE; +} + +BOOL WINAPI +GetDefaultPrinterW(LPWSTR pszBuffer, LPDWORD pcchBuffer) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterA(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +GetPrintProcessorDirectoryW(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded) +{ + return FALSE; +} + +BOOL WINAPI +OpenPrinterA(LPSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSA pDefault) +{ + BOOL ReturnValue = FALSE; + DEVMODEW wDevMode; + PWSTR pwszPrinterName = NULL; + PWSTR pwszDatatype = NULL; + PRINTER_DEFAULTSW wDefault = { 0 }; + size_t StringLength; + + if (pPrinterName) + { + // Convert pPrinterName to a Unicode string pwszPrinterName + StringLength = strlen(pPrinterName) + 1; + + pwszPrinterName = HeapAlloc(GetProcessHeap(), 0, StringLength * sizeof(WCHAR)); + if (!pwszPrinterName) + { + ERR("HeapAlloc failed for pwszPrinterName with last error %u!\n", GetLastError()); + goto Cleanup; + } + + MultiByteToWideChar(CP_ACP, 0, pPrinterName, -1, pwszPrinterName, StringLength); + } + + if (pDefault) + { + wDefault.DesiredAccess = pDefault->DesiredAccess; + + if (pDefault->pDatatype) + { + // Convert pDefault->pDatatype to a Unicode string pwszDatatype that later becomes wDefault.pDatatype + StringLength = strlen(pDefault->pDatatype) + 1; + + pwszDatatype = HeapAlloc(GetProcessHeap(), 0, StringLength * sizeof(WCHAR)); + if (!pwszDatatype) + { + ERR("HeapAlloc failed for pwszDatatype with last error %u!\n", GetLastError()); + goto Cleanup; + } + + MultiByteToWideChar(CP_ACP, 0, pDefault->pDatatype, -1, pwszDatatype, StringLength); + wDefault.pDatatype = pwszDatatype; + } + + if (pDefault->pDevMode) + { + // Fixed size strings, so no additional memory needs to be allocated + MultiByteToWideChar(CP_ACP, 0, pDefault->pDevMode->dmDeviceName, -1, wDevMode.dmDeviceName, sizeof(wDevMode.dmDeviceName) / sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, pDefault->pDevMode->dmFormName, -1, wDevMode.dmFormName, sizeof(wDevMode.dmFormName) / sizeof(WCHAR)); + + // Use CopyMemory to copy over several structure values in one step + CopyMemory(&wDevMode.dmSpecVersion, &pDefault->pDevMode->dmSpecVersion, (ULONG_PTR)&wDevMode.dmCollate - (ULONG_PTR)&wDevMode.dmSpecVersion); + CopyMemory(&wDevMode.dmLogPixels, &pDefault->pDevMode->dmLogPixels, (ULONG_PTR)&wDevMode.dmPanningHeight - (ULONG_PTR)&wDevMode.dmLogPixels); + + wDefault.pDevMode = &wDevMode; + } + } + + ReturnValue = OpenPrinterW(pwszPrinterName, phPrinter, &wDefault); + +Cleanup: + if (pwszPrinterName) + HeapFree(GetProcessHeap(), 0, pwszPrinterName); + + if (pwszDatatype) + HeapFree(GetProcessHeap(), 0, pwszDatatype); + + return ReturnValue; +} + +BOOL WINAPI +OpenPrinterW(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault) +{ + BOOL ReturnValue = FALSE; + DWORD ErrorCode; + PWSTR pDatatype = NULL; + WINSPOOL_DEVMODE_CONTAINER DevModeContainer; + WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer = NULL; + ACCESS_MASK AccessRequired = 0; + + // Prepare the additional parameters in the format required by _RpcOpenPrinter + if (pDefault) + { + pDatatype = pDefault->pDatatype; + DevModeContainer.cbBuf = sizeof(DEVMODEW); + DevModeContainer.pDevMode = (BYTE*)pDefault->pDevMode; + pDevModeContainer = &DevModeContainer; + AccessRequired = pDefault->DesiredAccess; + } + + // Do the RPC call + RpcTryExcept + { + ErrorCode = _RpcOpenPrinter(pPrinterName, phPrinter, pDatatype, pDevModeContainer, AccessRequired); + if (ErrorCode) + { + ERR("_RpcOpenPrinter failed with error %u!\n", ErrorCode); + } + + ReturnValue = (ErrorCode == ERROR_SUCCESS); + } + RpcExcept(EXCEPTION_EXECUTE_HANDLER) + { + ERR("_RpcOpenPrinter failed with exception code %u!\n", RpcExceptionCode()); + } + RpcEndExcept; + + return ReturnValue; +} + +DWORD WINAPI +StartDocPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo) +{ + return 0; +} + +BOOL WINAPI +StartPagePrinter(HANDLE hPrinter) +{ + return FALSE; +} + +BOOL WINAPI +WritePrinter(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten) +{ + return FALSE; +} + +BOOL WINAPI +XcvDataW(HANDLE hXcv, PCWSTR pszDataName, PBYTE pInputData, DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded, PDWORD pdwStatus) +{ + return FALSE; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ +/* + * PROJECT: ReactOS Print Spooler API + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <wingdi.h> +#include <winreg.h> +#include <winspool.h> +#include <winspool_c.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(winspool); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Spooler API" +#define REACTOS_STR_INTERNAL_NAME "winspool" +#define REACTOS_STR_ORIGINAL_FILENAME "winspool.drv" +#include <reactos/version.rc> Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,169 @@ +@ stub AbortPrinter +@ stub AddFormA +@ stub AddFormW +@ stub AddJobA +@ stub AddJobW +@ stub AddMonitorA +@ stub AddMonitorW +@ stub AddPortA +@ stub AddPortExA +@ stub AddPortExW +@ stub AddPortW +@ stub AddPrinterA +@ stub AddPrinterConnectionA +@ stub AddPrinterConnectionW +@ stub AddPrinterDriverA +@ stub AddPrinterDriverExA +@ stub AddPrinterDriverExW +@ stub AddPrinterDriverW +@ stub AddPrinterW +@ stub AddPrintProcessorA +@ stub AddPrintProcessorW +@ stub AddPrintProvidorA +@ stub AddPrintProvidorW +@ stub AdvancedDocumentPropertiesA +@ stub AdvancedDocumentPropertiesW +@ stub ADVANCEDSETUPDIALOG +@ stub AdvancedSetupDialog +@ stdcall ClosePrinter(long) +@ stub CloseSpoolFileHandle +@ stub CommitSpoolData +@ stub ConfigurePortA +@ stub ConfigurePortW +@ stub ConnectToPrinterDlg +@ stub ConvertAnsiDevModeToUnicodeDevmode +@ stub ConvertUnicodeDevModeToAnsiDevmode +@ stub CreatePrinterIC +@ stub DeleteFormA +@ stub DeleteFormW +@ stub DeleteMonitorA +@ stub DeleteMonitorW +@ stub DeletePortA +@ stub DeletePortW +@ stub DeletePrinter +@ stub DeletePrinterConnectionA +@ stub DeletePrinterConnectionW +@ stub DeletePrinterDataA +@ stub DeletePrinterDataExA +@ stub DeletePrinterDataExW +@ stub DeletePrinterDataW +@ stub DeletePrinterDriverA +@ stub DeletePrinterDriverExA +@ stub DeletePrinterDriverExW +@ stub DeletePrinterDriverW +@ stub DeletePrinterIC +@ stub DeletePrinterKeyA +@ stub DeletePrinterKeyW +@ stub DeletePrintProcessorA +@ stub DeletePrintProcessorW +@ stub DeletePrintProvidorA +@ stub DeletePrintProvidorW +@ stub DEVICECAPABILITIES +@ stub DeviceCapabilities +@ stdcall DeviceCapabilitiesA(str str long ptr ptr) +@ stdcall DeviceCapabilitiesW(wstr wstr long ptr ptr) +@ stub DEVICEMODE +@ stub DeviceMode +@ stub DevicePropertySheets +@ stub DevQueryPrint +@ stub DevQueryPrintEx +@ stub DocumentEvent +@ stdcall DocumentPropertiesA(long long ptr ptr ptr long) +@ stdcall DocumentPropertiesW(long long ptr ptr ptr long) +@ stub DocumentPropertySheets +@ stdcall EndDocPrinter(long) +@ stdcall EndPagePrinter(long) +@ stub EnumFormsA +@ stub EnumFormsW +@ stub EnumJobsA +@ stub EnumJobsW +@ stub EnumMonitorsA +@ stub EnumMonitorsW +@ stub EnumPortsA +@ stub EnumPortsW +@ stub EnumPrinterDataA +@ stub EnumPrinterDataExA +@ stub EnumPrinterDataExW +@ stub EnumPrinterDataW +@ stub EnumPrinterDriversA +@ stub EnumPrinterDriversW +@ stub EnumPrinterKeyA +@ stub EnumPrinterKeyW +@ stdcall EnumPrintersA(long ptr long ptr long ptr ptr) +@ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) +@ stub EnumPrintProcessorDatatypesA +@ stub EnumPrintProcessorDatatypesW +@ stub EnumPrintProcessorsA +@ stub EnumPrintProcessorsW +@ stub EXTDEVICEMODE +@ stub ExtDeviceMode +@ stub FindClosePrinterChangeNotification +@ stub FindFirstPrinterChangeNotification +@ stub FindNextPrinterChangeNotification +@ stub FlushPrinter +@ stub FreePrinterNotifyInfo +@ stdcall GetDefaultPrinterA(ptr ptr) +@ stdcall GetDefaultPrinterW(ptr ptr) +@ stub GetFormA +@ stub GetFormW +@ stub GetJobA +@ stub GetJobW +@ stdcall GetPrinterA(long long ptr long ptr) +@ stub GetPrinterDataA +@ stub GetPrinterDataExA +@ stub GetPrinterDataExW +@ stub GetPrinterDataW +@ stdcall GetPrinterDriverA(long str long ptr long ptr) +@ stub GetPrinterDriverDirectoryA +@ stub GetPrinterDriverDirectoryW +@ stdcall GetPrinterDriverW(long wstr long ptr long ptr) +@ stdcall GetPrinterW(long long ptr long ptr) +@ stub GetPrintProcessorDirectoryA +@ stdcall GetPrintProcessorDirectoryW(wstr wstr long ptr long ptr) +@ stub GetSpoolFileHandle +@ stub IsValidDevmodeA +@ stub IsValidDevmodeW +@ stdcall OpenPrinterA(str ptr ptr) +@ stdcall OpenPrinterW(wstr ptr ptr) +@ stub PerfClose +@ stub PerfCollect +@ stub PerfOpen +@ stub PlayGdiScriptOnPrinterIC +@ stub PrinterMessageBoxA +@ stub PrinterMessageBoxW +@ stub PrinterProperties +@ stub QueryColorProfile +@ stub QueryRemoteFonts +@ stub QuerySpoolMode +@ stub ReadPrinter +@ stub ResetPrinterA +@ stub ResetPrinterW +@ stub ScheduleJob +@ stub SeekPrinter +@ stub SetAllocFailCount +@ stub SetDefaultPrinterA +@ stub SetDefaultPrinterW +@ stub SetFormA +@ stub SetFormW +@ stub SetJobA +@ stub SetJobW +@ stub SetPortA +@ stub SetPortW +@ stub SetPrinterA +@ stub SetPrinterDataA +@ stub SetPrinterDataExA +@ stub SetPrinterDataExW +@ stub SetPrinterDataW +@ stub SetPrinterW +@ stub SplDriverUnloadComplete +@ stub SpoolerDevQueryPrintW +@ stub SpoolerInit +@ stub SpoolerPrinterEvent +@ stub StartDocDlgA +@ stub StartDocDlgW +@ stub StartDocPrinterA +@ stdcall StartDocPrinterW(long long ptr) +@ stdcall StartPagePrinter(long) +@ stub WaitForPrinterChange +@ stdcall WritePrinter(long ptr long ptr) +@ stdcall XcvDataW(long wstr ptr long ptr long ptr ptr) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1 +1,20 @@ + add_subdirectory(ui) + +spec2def(localmon localmon.spec ADD_IMPORTLIB) + +list(APPEND SOURCE + main.c + precomp.h) + +add_library(localmon SHARED + ${SOURCE} + localmon.rc + ${CMAKE_CURRENT_BINARY_DIR}/localmon_stubs.c + ${CMAKE_CURRENT_BINARY_DIR}/localmon.def) + +set_module_type(localmon win32dll UNICODE) +target_link_libraries(localmon wine) +add_importlibs(localmon kernel32 msvcrt ntdll) +add_pch(localmon precomp.h SOURCE) +add_cd_file(TARGET localmon DESTINATION reactos/system32 FOR all) Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Local Spooler Port Monitor" +#define REACTOS_STR_INTERNAL_NAME "localmon" +#define REACTOS_STR_ORIGINAL_FILENAME "localmon.dll" +#include <reactos/version.rc> Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1 @@ +@ stdcall InitializePrintMonitor2(ptr ptr) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/localmon.spec ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,14 @@ +/* + * PROJECT: ReactOS Local Spooler Port Monitor + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +LPMONITOR2 WINAPI +InitializePrintMonitor2(PMONITORINIT pMonitorInit, PHANDLE phMonitor) +{ + return NULL; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ +/* + * PROJECT: ReactOS Local Spooler Port Monitor + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <wingdi.h> +#include <winreg.h> +#include <winspool.h> +#include <winsplp.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(localmon); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/monitors/localmon/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1 +1 @@ -#add_subdirectory(winprint) +add_subdirectory(winprint) Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,18 @@ + +spec2def(winprint winprint.spec ADD_IMPORTLIB) + +list(APPEND SOURCE + main.c + precomp.h) + +add_library(winprint SHARED + ${SOURCE} + winprint.rc + ${CMAKE_CURRENT_BINARY_DIR}/winprint_stubs.c + ${CMAKE_CURRENT_BINARY_DIR}/winprint.def) + +set_module_type(winprint win32dll UNICODE) +target_link_libraries(winprint wine) +add_importlibs(winprint kernel32 msvcrt ntdll) +add_pch(winprint precomp.h SOURCE) +add_cd_file(TARGET winprint DESTINATION reactos/system32/spool/prtprocs/w32x86 FOR all) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,9 @@ +/* + * PROJECT: ReactOS Standard Print Processor + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ +/* + * PROJECT: ReactOS Standard Print Processor + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <wingdi.h> +#include <winreg.h> +#include <winspool.h> +#include <winsplp.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(winprint); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Standard Print Processor" +#define REACTOS_STR_INTERNAL_NAME "winprint" +#define REACTOS_STR_ORIGINAL_FILENAME "winprint.dll" +#include <reactos/version.rc> Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,6 @@ +@ stub ClosePrintProcessor +@ stub ControlPrintProcessor +@ stub EnumPrintProcessorDatatypesW +@ stub GetPrintProcessorCapabilities +@ stub OpenPrintProcessor +@ stub PrintDocumentOnPrintProcessor Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/processors/winprint/winprint.spec ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/CMakeLists.txt?rev=67576&r1=67575&r2=67576&view=diff ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -1,3 +1,3 @@ #add_subdirectory(inetpp) -#add_subdirectory(localspl) +add_subdirectory(localspl) #add_subdirectory(win32spl) Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,18 @@ + +spec2def(localspl localspl.spec ADD_IMPORTLIB) + +list(APPEND SOURCE + main.c + precomp.h) + +add_library(localspl SHARED + ${SOURCE} + localspl.rc + ${CMAKE_CURRENT_BINARY_DIR}/localspl_stubs.c + ${CMAKE_CURRENT_BINARY_DIR}/localspl.def) + +set_module_type(localspl win32dll UNICODE) +target_link_libraries(localspl wine) +add_importlibs(localspl kernel32 msvcrt ntdll) +add_pch(localspl precomp.h SOURCE) +add_cd_file(TARGET localspl DESTINATION reactos/system32 FOR all) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Local Spooler" +#define REACTOS_STR_INTERNAL_NAME "localspl" +#define REACTOS_STR_ORIGINAL_FILENAME "localspl.dll" +#include <reactos/version.rc> Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1 @@ +@ stdcall InitializePrintProvidor(ptr long ptr) Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/localspl.spec ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,14 @@ +/* + * PROJECT: ReactOS Local Spooler + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Main functions + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#include "precomp.h" + +BOOL WINAPI +InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor, DWORD cbPrintProvidor, LPWSTR pFullRegistryPath) +{ + return FALSE; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h?rev=67576 ============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h [iso-8859-1] Wed May 6 12:47:20 2015 @@ -0,0 +1,22 @@ +/* + * PROJECT: ReactOS Local Spooler + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Precompiled Header for all source files + * COPYRIGHT: Copyright 2015 Colin Finck <co...@reactos.org> + */ + +#ifndef _PRECOMP_H +#define _PRECOMP_H + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <wingdi.h> +#include <winreg.h> +#include <winspool.h> +#include <winsplp.h> + +#include <wine/debug.h> +WINE_DEFAULT_DEBUG_CHANNEL(localspl); + +#endif Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native