/* * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 FAR *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)(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); } 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 FAR *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 { PDEVMODE 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_DEFAULTS 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, LPDEVMODE 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 pRegisterRoot, 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_ */