From 52ce98d5ec2669d9b50eecc3e385f117dca6f0a4 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Sat, 6 Dec 2008 11:18:08 +0000 Subject: [PATCH] - Update headers - Add more stubs for winspool svn path=/trunk/; revision=37892 --- reactos/dll/win32/winspool/stubs.c | 289 +++++++++++++++ reactos/dll/win32/winspool/winspool.spec | 74 +++- reactos/include/ddk/winsplp.h | 428 +++++++++++++++++++++++ reactos/include/psdk/winspool.h | 45 +++ 4 files changed, 834 insertions(+), 2 deletions(-) create mode 100644 reactos/include/ddk/winsplp.h diff --git a/reactos/dll/win32/winspool/stubs.c b/reactos/dll/win32/winspool/stubs.c index 8d04c65031a..b245cdb0d51 100644 --- a/reactos/dll/win32/winspool/stubs.c +++ b/reactos/dll/win32/winspool/stubs.c @@ -1453,3 +1453,292 @@ WritePrinter(HANDLE Printer, PVOID Buffer, DWORD BufSize, PDWORD Written) return FALSE; } + + +/* + * @unimplemented + */ +BOOL +WINAPI +XcvDataW(HANDLE hXcv, + LPCWSTR pszDataName, + PBYTE pInputData, + DWORD cbInputData, + PBYTE pOutputData, + DWORD cbOutputData, + PDWORD pcbOutputNeeded, + PDWORD pdwStatus) +{ + OutputDebugStringW(L"winspool XcvDataW stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetDefaultPrinterA(LPCSTR pszPrinter) +{ + OutputDebugStringW(L"winspool SetDefaultPrinterA stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SetDefaultPrinterW(LPCWSTR pszPrinter) +{ + OutputDebugStringW(L"winspool SetDefaultPrinterW stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +AddPortExA(LPSTR pName, + DWORD dwLevel, + LPBYTE pBuffer, + LPSTR pMonitorName) +{ + OutputDebugStringW(L"winspool AddPortExA stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +AddPortExW(LPWSTR pName, + DWORD dwLevel, + LPBYTE pBuffer, + LPWSTR pMonitorName) +{ + OutputDebugStringW(L"winspool AddPortExW stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +AddPrinterDriverExA(LPSTR pName, + DWORD dwLevel, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags) +{ + OutputDebugStringW(L"winspool AddPrinterDriverExA stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +AddPrinterDriverExW(LPWSTR pName, + DWORD dwLevel, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags) +{ + OutputDebugStringW(L"winspool AddPrinterDriverExW stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +DeletePrinterDataExA(HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName) +{ + OutputDebugStringW(L"winspool DeletePrinterDataExA stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +DeletePrinterDataExW(HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName) +{ + OutputDebugStringW(L"winspool DeletePrinterDataExW stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +DeletePrinterDriverExA(LPSTR pName, + LPSTR pEnvironment, + LPSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag) +{ + OutputDebugStringW(L"winspool DeletePrinterDriverExA stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +DeletePrinterDriverExW(LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag) +{ + OutputDebugStringW(L"winspool DeletePrinterDriverExW stub called\n"); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +EnumPrinterDataExA(HANDLE hPrinter, + LPCSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues) +{ + OutputDebugStringW(L"winspool EnumPrinterDataExA stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +EnumPrinterDataExW(HANDLE hPrinter, + LPCWSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues) +{ + OutputDebugStringW(L"winspool EnumPrinterDataExW stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +LONG +WINAPI +ExtDeviceMode(HWND hWnd, + HANDLE hInst, + LPDEVMODEA pDevModeOutput, + LPSTR pDeviceName, + LPSTR pPort, + LPDEVMODEA pDevModeInput, + LPSTR pProfile, + DWORD fMode) +{ + OutputDebugStringW(L"winspool ExtDeviceMode stub called\n"); + return -1; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +GetPrinterDataExA(HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded) +{ + OutputDebugStringW(L"winspool GetPrinterDataExA stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +GetPrinterDataExW(HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded) +{ + OutputDebugStringW(L"winspool GetPrinterDataExW stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +SetPrinterDataExA(HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + DWORD dwType, + LPBYTE pData, + DWORD cbData) +{ + OutputDebugStringW(L"winspool SetPrinterDataExA stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +DWORD +WINAPI +SetPrinterDataExW(HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + DWORD dwType, + LPBYTE pData, + DWORD cbData) +{ + OutputDebugStringW(L"winspool SetPrinterDataExW stub called\n"); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/* + * @unimplemented + */ +BOOL +WINAPI +SpoolerInit(VOID) +{ + OutputDebugStringW(L"winspool SpoolerInit stub called\n"); + return FALSE; +} diff --git a/reactos/dll/win32/winspool/winspool.spec b/reactos/dll/win32/winspool/winspool.spec index 0ff380360fd..e3e338b9e98 100644 --- a/reactos/dll/win32/winspool/winspool.spec +++ b/reactos/dll/win32/winspool/winspool.spec @@ -1,3 +1,43 @@ +100 stub -noname EnumPrinterPropertySheets +101 stub -noname ClusterSplOpen +102 stub -noname ClusterSplClose +103 stub -noname ClusterSplIsAlive +104 stub PerfClose +105 stub PerfCollect +106 stub PerfOpen +201 stdcall GetDefaultPrinterA(ptr ptr) +202 stdcall SetDefaultPrinterA(str) +203 stdcall GetDefaultPrinterW(ptr ptr) +204 stdcall SetDefaultPrinterW(wstr) +205 stub -noname SplReadPrinter +206 stub -noname AddPerMachineConnectionA +207 stub -noname AddPerMachineConnectionW +208 stub -noname DeletePerMachineConnectionA +209 stub -noname DeletePerMachineConnectionW +210 stub -noname EnumPerMachineConnectionsA +211 stub -noname EnumPerMachineConnectionsW +212 stub -noname LoadPrinterDriver +213 stub -noname RefCntLoadDriver +214 stub -noname RefCntUnloadDriver +215 stub -noname ForceUnloadDriver +216 stub -noname PublishPrinterA +217 stub -noname PublishPrinterW +218 stub -noname CallCommonPropertySheetUI +219 stub -noname PrintUIQueueCreate +220 stub -noname PrintUIPrinterPropPages +221 stub -noname PrintUIDocumentDefaults +222 stub -noname SendRecvBidiData +223 stub -noname RouterFreeBidiResponseContainer +224 stub -noname ExternalConnectToLd64In32Server +226 stub -noname PrintUIWebPnpEntry +227 stub -noname PrintUIWebPnpPostEntry +228 stub -noname PrintUICreateInstance +229 stub -noname PrintUIDocumentPropertiesWrap +230 stub -noname PrintUIPrinterSetup +231 stub -noname PrintUIServerPropPages +232 stub -noname AddDriverCatalog + +@ stub ADVANCEDSETUPDIALOG @ stdcall AbortPrinter(long) @ stdcall AddFormA(long long ptr) @ stdcall AddFormW(long long ptr) @@ -6,11 +46,15 @@ @ stdcall AddMonitorA(str long ptr) @ stdcall AddMonitorW(wstr long ptr) @ stdcall AddPortA(str ptr str) +@ stdcall AddPortExA(str long ptr str) +@ stdcall AddPortExW(wstr long ptr wstr) @ stdcall AddPortW(wstr long wstr) @ stdcall AddPrinterA(str long ptr) @ stdcall AddPrinterConnectionA(str) @ stdcall AddPrinterConnectionW(wstr) @ stdcall AddPrinterDriverA(str long ptr) +@ stdcall AddPrinterDriverExA(str long ptr long) +@ stdcall AddPrinterDriverExW(wstr long ptr long) @ stdcall AddPrinterDriverW(wstr long ptr) @ stdcall AddPrinterW(wstr long ptr) @ stdcall AddPrintProcessorA(str str str str) @@ -19,10 +63,16 @@ @ stdcall AddPrintProvidorW(wstr long ptr) @ stdcall AdvancedDocumentPropertiesA(long long str ptr ptr) @ stdcall AdvancedDocumentPropertiesW(long long wstr ptr ptr) +@ stub AdvancedSetupDialog @ stdcall ClosePrinter(long) @ stdcall ConfigurePortA(str long str) @ stdcall ConfigurePortW(wstr long wstr) @ stdcall ConnectToPrinterDlg(long long) +@ stub ConvertAnsiDevModeToUnicodeDevMode +@ stub ConvertUnicodeDevModeToAnsiDevMode +@ stub CreatePrinterIC +@ stub DEVICECAPABILITIES +@ stub DEVICEMODE @ stdcall DeleteFormA(long str) @ stdcall DeleteFormW(long wstr) @ stdcall DeleteMonitorA(str str str) @@ -32,19 +82,28 @@ @ stdcall DeletePrinter(long) @ stdcall DeletePrinterConnectionA(str) @ stdcall DeletePrinterConnectionW(wstr) +@ stdcall DeletePrinterDataExA(long str str) +@ stdcall DeletePrinterDataExW(long wstr wstr) @ stdcall DeletePrinterDataA(ptr str) @ stdcall DeletePrinterDataW(ptr wstr) @ stdcall DeletePrinterDriverA(str str str) +@ stdcall DeletePrinterDriverExA(str str str long long) +@ stdcall DeletePrinterDriverExW(wstr wstr wstr long long) @ stdcall DeletePrinterDriverW(wstr wstr wstr) +@ stub DeletePrinterIC +@ stub DevQueryPrint @ stdcall DeletePrintProcessorA(str str str) @ stdcall DeletePrintProcessorW(wstr wstr wstr) @ stdcall DeletePrintProvidorA(str str str) @ stdcall DeletePrintProvidorW(wstr wstr wstr) @ stdcall DeviceCapabilitiesA(str str long ptr ptr) @ stdcall DeviceCapabilitiesW(wstr wstr long ptr ptr) +@ stub DeviceMode +@ stub DocumentEvent @ stdcall DllMain(ptr long ptr) @ stdcall DocumentPropertiesA(long long ptr ptr ptr long) @ stdcall DocumentPropertiesW(long long ptr ptr ptr long) +@ stub EXTDEVICEMODE @ stdcall EndDocPrinter(long) @ stdcall EndPagePrinter(long) @ stdcall EnumFormsA(long long ptr long ptr ptr) @@ -56,11 +115,14 @@ @ stdcall EnumPortsA(str long ptr ptr ptr ptr) @ stdcall EnumPortsW(wstr long ptr ptr ptr ptr) @ stdcall EnumPrinterDataA(long long ptr long ptr ptr ptr long ptr) +@ stdcall EnumPrinterDataExA(long str ptr long ptr ptr) +@ stdcall EnumPrinterDataExW(long wstr ptr long ptr ptr) @ stdcall EnumPrinterDataW(long long ptr long ptr ptr ptr long ptr) @ stdcall EnumPrinterDriversA(str str long ptr long ptr ptr) @ stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) @ stdcall EnumPrintersA(long ptr long ptr long ptr ptr) @ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) +@ stdcall ExtDeviceMode(long long ptr str str ptr str long) @ stdcall EnumPrintProcessorDatatypesA(str str long ptr long ptr ptr) @ stdcall EnumPrintProcessorDatatypesW(wstr wstr long ptr long ptr ptr) @ stdcall EnumPrintProcessorsA(str str long ptr long ptr ptr) @@ -69,14 +131,14 @@ @ stdcall FindFirstPrinterChangeNotification(long long long ptr) @ stdcall FindNextPrinterChangeNotification(long ptr ptr ptr) @ stdcall FreePrinterNotifyInfo(ptr) -201 stdcall GetDefaultPrinterA(ptr ptr) -203 stdcall GetDefaultPrinterW(ptr ptr) @ stdcall GetFormA(long str long ptr long ptr) @ stdcall GetFormW(long wstr long ptr long ptr) @ stdcall GetJobA(long long long ptr long ptr) @ stdcall GetJobW(long long long ptr long ptr) @ stdcall GetPrinterA(long long ptr long ptr) @ stdcall GetPrinterDataA(long str ptr ptr long ptr) +@ stdcall GetPrinterDataExA(long str str ptr ptr long ptr) +@ stdcall GetPrinterDataExW(long wstr wstr ptr ptr long ptr) @ stdcall GetPrinterDataW(long wstr ptr ptr long ptr) @ stdcall GetPrinterDriverA(long str long ptr long ptr) @ stdcall GetPrinterDriverDirectoryA(str str long ptr long ptr) @@ -87,6 +149,7 @@ @ stdcall GetPrintProcessorDirectoryW(wstr wstr long ptr long ptr) @ stdcall OpenPrinterA(str ptr ptr) @ stdcall OpenPrinterW(wstr ptr ptr) +@ stub PlayGdiScriptOnPrinterIC @ stdcall PrinterMessageBoxA(ptr long ptr str str long) @ stdcall PrinterMessageBoxW(ptr long ptr wstr wstr long) @ stdcall PrinterProperties(long long) @@ -94,16 +157,23 @@ @ stdcall ResetPrinterA(long ptr) @ stdcall ResetPrinterW(long ptr) @ stdcall ScheduleJob(long long) +@ stub SetAllocFailCount @ stdcall SetFormA(long str long ptr) @ stdcall SetFormW(long wstr long ptr) @ stdcall SetJobA(long long long ptr long) @ stdcall SetJobW(long long long ptr long) @ stdcall SetPrinterA(long long ptr long) @ stdcall SetPrinterDataA(long str long ptr long) +@ stdcall SetPrinterDataExA(long str str long ptr long) +@ stdcall SetPrinterDataExW(long wstr wstr long ptr long) @ stdcall SetPrinterDataW(long wstr long ptr long) @ stdcall SetPrinterW(long long ptr long) +@ stub SpoolerDevQueryPrintW +@ stdcall SpoolerInit() +@ stub SpoolerPrinterEvent @ stdcall StartDocPrinterA(long long ptr) @ stdcall StartDocPrinterW(long long ptr) @ stdcall StartPagePrinter(long) @ stdcall WaitForPrinterChange(ptr long) @ stdcall WritePrinter(long ptr long ptr) +@ stdcall XcvDataW(long wstr ptr long ptr long ptr ptr) diff --git a/reactos/include/ddk/winsplp.h b/reactos/include/ddk/winsplp.h new file mode 100644 index 00000000000..4dfdb5b834e --- /dev/null +++ b/reactos/include/ddk/winsplp.h @@ -0,0 +1,428 @@ +/* + * Definitions for print provider, monitor, processor and spooler + * + * Copyright 2005 Detlef Riekenberg + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * + * "providor" is not a spelling error in this file. It's the real name. + * + */ + +#ifndef _WINSPLP_ +#define _WINSPLP_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* DEFINES */ + +#define PRINTER_NOTIFY_STATUS_ENDPOINT 1 +#define PRINTER_NOTIFY_STATUS_POLL 2 +#define PRINTER_NOTIFY_STATUS_INFO 4 + + +#define ROUTER_UNKNOWN 0 +#define ROUTER_SUCCESS 1 +#define ROUTER_STOP_ROUTING 2 + +/* + * WARNING: Many Functions are declared as "BOOL", but return ROUTER_* + */ + + +/* TYPES */ + +typedef struct _MONITOR { + BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); + BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle); + BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName, + PHANDLE pHandle, struct _MONITOR *pMonitor); + BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, + DWORD JobId, DWORD Level, LPBYTE pDocInfo); + BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, + LPDWORD pcbWritten); + BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, + LPDWORD pcbRead); + BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); + BOOL (WINAPI *pfnClosePort)(HANDLE hPort); + BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); + BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, + LPWSTR lpMonitorName); + BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, + LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer, + LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned); + BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, + DWORD reserved); + BOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv); + DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, + PBYTE pInputData, DWORD cbInputData, + PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded); + BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); +} MONITOR, *LPMONITOR; + +typedef struct _MONITOR2 { + DWORD cbSize; + BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); + BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle); + BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName, + PHANDLE pHandle, struct _MONITOR2 *pMonitor2); + BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, + DWORD JobId, DWORD Level, LPBYTE pDocInfo); + BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, + LPDWORD pcbWritten); + BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, + LPDWORD pcbRead); + BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); + BOOL (WINAPI *pfnClosePort)(HANDLE hPort); + BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); + BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, + LPWSTR lpMonitorName); + BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, + LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer, + LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned); + BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, + DWORD reserved); + BOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject, + ACCESS_MASK GrantedAccess, PHANDLE phXcv); + DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, + PBYTE pInputData, DWORD cbInputData, + PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded); + BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); + /* Additions from MONITOR to MONITOR2 */ + VOID (WINAPI *pfnShutdown)(HANDLE hMonitor); + DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit, + LPCWSTR pAction, PBIDI_REQUEST_CONTAINER pReqData, + PBIDI_RESPONSE_CONTAINER *ppResData); +} MONITOR2, *LPMONITOR2, *PMONITOR2; + +typedef struct _MONITOREX { + DWORD dwMonitorSize; + MONITOR Monitor; +} MONITOREX, *LPMONITOREX; + +typedef struct _MONITORREG { + DWORD cbSize; + LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions, + REGSAM samDesired, PSECURITY_ATTRIBUTES pSecurityAttributes, + PHANDLE phckResult, PDWORD pdwDisposition, HANDLE hSpooler); + LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired, + PHANDLE phkResult, HANDLE hSpooler); + LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler); + LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler); + LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName, + PDWORD pcchName, PFILETIME pftLastWriteTime, HANDLE hSpooler); + LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey, + PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData, + PDWORD pcbSecurityDescriptor, PFILETIME pftLastWriteTime, + HANDLE hSpooler); + LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType, + const BYTE* pData, DWORD cbData, HANDLE hSpooler); + LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler); + LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue, + PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData, + HANDLE hSpooler); + LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType, + PBYTE pData, PDWORD pcbData, HANDLE hSpooler); +} MONITORREG, *PMONITORREG; + +typedef struct _MONITORINIT { + DWORD cbSize; + HANDLE hSpooler; + HANDLE hckRegistryRoot; + PMONITORREG pMonitorReg; + BOOL bLocal; +} MONITORINIT, *PMONITORINIT; + +typedef struct _MONITORUI { + DWORD dwMonitorUISize; + BOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd, + PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut); + BOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName); + BOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName); +}MONITORUI, *PMONITORUI; + +typedef struct _PRINTER_NOTIFY_INIT { + DWORD Size; + DWORD Reserved; + DWORD PollTime; +} PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT; + +typedef struct _PRINTPROCESSOROPENDATA { + PDEVMODEW pDevMode; + LPWSTR pDatatype; + LPWSTR pParameters; + LPWSTR pDocumentName; + DWORD JobId; + LPWSTR pOutputFile; + LPWSTR pPrinterName; +} PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA; + + +/* + * WARNING: Many Functions are declared as "BOOL", but return ROUTER_* + */ + +typedef struct _PRINTPROVIDOR { + BOOL (WINAPI *fpOpenPrinter)(LPWSTR lpPrinterName, HANDLE *phPrinter, + LPPRINTER_DEFAULTSW pDefault); + BOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, + LPBYTE pJob, DWORD Command); + BOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, + LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded); + BOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, + DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, + LPDWORD pcReturned); + HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter); + BOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter); + BOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, + DWORD Command); + BOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, + DWORD cbBuf, LPDWORD pcbNeeded); + BOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel, + LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded, + LPDWORD lpdwReturned); + BOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level, + LPBYTE pDriverInfo); + BOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment, + DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, + LPDWORD pcbNeeded, LPDWORD pcbReturned); + BOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment, + DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, + LPDWORD pcbNeeded); + BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment, + DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf, + LPDWORD pcbNeeded); + BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment, + LPWSTR pDriverName); + BOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, + LPWSTR pPathName, LPWSTR pPrintProcessorName); + BOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment, + DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, + LPDWORD pcbNeeded, LPDWORD pcbReturned); + BOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment, + DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, + LPDWORD pcbNeeded); + BOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, + LPWSTR pPrintProcessorName); + BOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName, + LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcbReturned); + DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo); + BOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter); + BOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, + LPDWORD pcWritten); + BOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter); + BOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter); + BOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, + LPDWORD pNoBytesRead); + BOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter); + BOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData, + DWORD cbBuf, LPDWORD pcbNeeded); + BOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID); + DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, + LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded); + DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, + DWORD Type, LPBYTE pData, DWORD cbData); + DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags); + BOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter); + BOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm); + BOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName); + BOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, + LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded); + BOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, + LPBYTE pForm); + BOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); + BOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); + BOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, + DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); + BOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); + BOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + BOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); + HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode); + BOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn, + DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul); + BOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC); + BOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName); + BOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName); + DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd, + LPWSTR pText, LPWSTR pCaption, DWORD dwType); + BOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors); + BOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment, + LPWSTR pMonitorName); + BOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault); + BOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment, + DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded, + DWORD dwClientMajorVersion, DWORD dwClientMinorVersion, + PDWORD pdwServerMajorVersion, PDWORD pdwServerMinorVersion); + HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter, + DWORD fdwFlags, DWORD fdwOptions, LPVOID pPrinterNotifyOptions); + BOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange); + BOOL (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level, + LPBYTE lpBuffer, LPWSTR lpMonitorName); + BOOL (WINAPI *fpShutDown)(LPVOID pvReserved); + BOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter, + DWORD Reserved, PVOID pvReserved, PVOID pPrinterNotifyInfo); + BOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter, + LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, DWORD Level); + HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter, + LPBYTE pClientInfo, DWORD ClientInfoLevel); + BOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel, + LPBYTE pPortInfo); + DWORD (WINAPI *fpEnumPrinterData)( HANDLE hPrinter, DWORD dwIndex, + LPWSTR pValueName, DWORD cbValueName, LPDWORD pcbValueName, + LPDWORD pType, LPBYTE pData, DWORD cbData, LPDWORD pcbData); + DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName); + DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource, + PHANDLE phSpooler, LPCWSTR pszName, LPCWSTR pszAddress); + DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler); + DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler); + DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, + LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData); + DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, + LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, + LPDWORD pcbNeeded); + DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, + LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues, + LPDWORD pnEnumValues); + DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName, + LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey); + DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, + LPCWSTR pValueName); + DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName); + BOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove, + PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, BOOL bWrite); + BOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment, + LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionNum); + BOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer, + LPCWSTR pPrinterName, LPCWSTR pPrintServer, LPCWSTR pProvider); + BOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer, + LPCWSTR pPrinterName); + BOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer, + LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, + LPDWORD pcReturned); + BOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData, + DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, + PDWORD pcbOutputNeeded, PDWORD pdwStatus); + BOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level, + LPBYTE pDriverInfo, DWORD dwFileCopyFlags); + BOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf); + BOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile); + BOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir, + LPHANDLE phFile, HANDLE hSpoolerProcess, HANDLE hAppProcess); + BOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit); + BOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter); + BOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf, + LPDWORD pcWritten, DWORD cSleep); + DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction, + LPBIDI_REQUEST_CONTAINER pReqData, + LPBIDI_RESPONSE_CONTAINER *ppResData); + BOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel, + VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags); +} PRINTPROVIDOR, *LPPRINTPROVIDOR; + +typedef struct _SPLCLIENT_INFO_1 { + DWORD dwSize; + LPWSTR pMachineName; + LPWSTR pUserName; + DWORD dwBuildNum; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + WORD wProcessorArchitecture; +} SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1; + +/* DECLARATIONS */ + +HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode); +BOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn, + DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul); +BOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC); +BOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID); + +/* Security and Access */ +HANDLE WINAPI RevertToPrinterSelf(VOID); +BOOL WINAPI ImpersonatePrinterClient(HANDLE hToken); +BOOL WINAPI OpenPrinterToken(PHANDLE phToken); +BOOL WINAPI SetPrinterToken(HANDLE hToken); +BOOL WINAPI ClosePrinterToken(HANDLE hToken); + +/* Notification */ +BOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags, + PDWORD pdwResult, PVOID pPrinterNotifyInfo); +BOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify, + PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc); +PPRINTER_NOTIFY_INFO RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData); +BOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); +BOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest, + PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, DWORD fdwFlags); +DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter, + DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PVOID pvReserved); + +/* Port monitor / Language monitor / Print monitor */ +LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit, + PHANDLE phMonitor); +PMONITORUI WINAPI InitializePrintMonitorUI(VOID); +LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot); +BOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor); +BOOL WINAPI InitializeMonitor(LPWSTR pRegistryRoot); + +BOOL WINAPI OpenPort(LPWSTR pName, PHANDLE pHandle); +BOOL WINAPI WritePort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, + LPDWORD pcbWritten); +BOOL WINAPI ReadPort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, + LPDWORD pcbRead); +BOOL WINAPI ClosePort(HANDLE hPort); + +/* Print processor */ +HANDLE WINAPI OpenPrintProcessor(LPWSTR pPrinterName, + PPRINTPROCESSOROPENDATA pPrintProcessorOpenData); +BOOL WINAPI PrintDocumentOnPrintProcessor(HANDLE hPrintProcessor, + LPWSTR pDocumentName); +BOOL WINAPI ClosePrintProcessor(HANDLE hPrintProcessor); +BOOL WINAPI ControlPrintProcessor(HANDLE hPrintProcessor, DWORD Command); +BOOL WINAPI InstallPrintProcessor(HWND hWnd); + +/* Print provider */ +BOOL WINAPI InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor, + DWORD cbPrintProvidor, LPWSTR pFullRegistryPath); +BOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter, + DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, + PVOID pvReserved0, PVOID pvReserved1); +BOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter); + +/* Spooler */ +BOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter, + DWORD fdwFlags, DWORD fdwOptions, PHANDLE phEvent, + PVOID pPrinterNotifyOptions, PVOID pvReserved); +BOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter, + LPDWORD pfdwChange, PVOID pvReserved0, PVOID ppPrinterNotifyInfo); +VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); +BOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _WINSPLP_ */ diff --git a/reactos/include/psdk/winspool.h b/reactos/include/psdk/winspool.h index 53a5d6aaf85..be32ad84577 100644 --- a/reactos/include/psdk/winspool.h +++ b/reactos/include/psdk/winspool.h @@ -715,6 +715,50 @@ typedef struct _PROVIDOR_INFO_2W{ LPWSTR pOrder; } PROVIDOR_INFO_2W, *LPPROVIDOR_INFO_2W; +typedef struct _BINARY_CONTAINER { + DWORD cbBuf; + LPBYTE pData; +} BINARY_CONTAINER, *PBINARY_CONTAINER; + +typedef struct _BIDI_DATA { + DWORD dwBidiType; + union + { + BOOL bData; + INT iData; + LPWSTR sData; + FLOAT fData; + BINARY_CONTAINER biData; + } u; +} BIDI_DATA, *LPBIDI_DATA, *PBIDI_DATA; + +typedef struct _BIDI_REQUEST_DATA { + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} BIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA; + +typedef struct _BIDI_REQUEST_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_REQUEST_DATA aData[1]; +} BIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER; + +typedef struct _BIDI_RESPONSE_DATA { + DWORD dwResult; + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} BIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA; + +typedef struct _BIDI_RESPONSE_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_RESPONSE_DATA aData[1]; +} BIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER; + BOOL WINAPI AbortPrinter(HANDLE); BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE); BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE); @@ -823,6 +867,7 @@ DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE); BOOL WINAPI StartPagePrinter(HANDLE); DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD); BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD); +BOOL WINAPI XcvDataW(HANDLE, LPCWSTR, PBYTE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); #ifdef UNICODE typedef JOB_INFO_1W JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;