2 * PROJECT: ReactOS Spooler Router
3 * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation
4 * PURPOSE: Main functions
5 * COPYRIGHT: Copyright 2015 Colin Finck <colin@reactos.org>
10 PRINTPROVIDOR LocalSplFuncs
;
14 ClosePrinter(HANDLE hPrinter
)
20 EndDocPrinter(HANDLE hPrinter
)
26 EndPagePrinter(HANDLE hPrinter
)
32 EnumPrintersW(DWORD Flags
, LPWSTR Name
, DWORD Level
, LPBYTE pPrinterEnum
, DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
)
38 GetPrinterDriverW(HANDLE hPrinter
, LPWSTR pEnvironment
, DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
, LPDWORD pcbNeeded
)
44 GetPrinterW(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
, DWORD cbBuf
, LPDWORD pcbNeeded
)
50 GetPrintProcessorDirectoryW(LPWSTR pName
, LPWSTR pEnvironment
, DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
, LPDWORD pcbNeeded
)
56 InitializeRouter(HANDLE SpoolerStatusHandle
)
58 HINSTANCE hinstLocalSpl
;
59 PInitializePrintProvidor pfnInitializePrintProvidor
;
61 // Only initialize localspl.dll for now.
62 // This function should later look for all available print providers in the registry and initialize all of them.
63 hinstLocalSpl
= LoadLibraryW(L
"localspl");
66 ERR("LoadLibraryW for localspl failed with error %lu!\n", GetLastError());
70 pfnInitializePrintProvidor
= (PInitializePrintProvidor
)GetProcAddress(hinstLocalSpl
, "InitializePrintProvidor");
71 if (!pfnInitializePrintProvidor
)
73 ERR("GetProcAddress failed with error %lu!\n", GetLastError());
77 if (!pfnInitializePrintProvidor(&LocalSplFuncs
, sizeof(PRINTPROVIDOR
), NULL
))
79 ERR("InitializePrintProvidor failed for localspl with error %lu!\n", GetLastError());
87 OpenPrinterW(LPWSTR pPrinterName
, LPHANDLE phPrinter
, LPPRINTER_DEFAULTSW pDefault
)
93 StartDocPrinterW(HANDLE hPrinter
, DWORD Level
, LPBYTE pDocInfo
)
101 // Nothing to do here yet
102 return ERROR_SUCCESS
;
106 StartPagePrinter(HANDLE hPrinter
)
112 WritePrinter(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
, LPDWORD pcWritten
)
118 XcvDataW(HANDLE hXcv
, PCWSTR pszDataName
, PBYTE pInputData
, DWORD cbInputData
, PBYTE pOutputData
, DWORD cbOutputData
, PDWORD pcbOutputNeeded
, PDWORD pdwStatus
)