/*++ Copyright (c) 1990 Microsoft Corporation Module Name: WinSplp.h Abstract: Internal Header file for Print APIs Author: Dave Snipp (DaveSn) 15-Mar-1991 Revision History: --*/ #ifndef _WINSPLP_ #define _WINSPLP_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #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 typedef struct _PRINTER_NOTIFY_INIT { DWORD Size; DWORD Reserved; DWORD PollTime; } PRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT; typedef struct _SPLCLIENT_INFO_1{ DWORD dwSize; LPWSTR pMachineName; LPWSTR pUserName; DWORD dwBuildNum; DWORD dwMajorVersion; DWORD dwMinorVersion; WORD wProcessorArchitecture; } SPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1; typedef struct _PRINTPROVIDOR { BOOL (*fpOpenPrinter)(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTS pDefault); BOOL (*fpSetJob)(HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD Command); BOOL (*fpGetJob)(HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); HANDLE (*fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter); BOOL (*fpDeletePrinter)(HANDLE hPrinter); BOOL (*fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD Command); BOOL (*fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpEnumPrinters)(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpAddPrinterDriver)(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo); BOOL (*fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pDriverName); BOOL (*fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pPathName, LPWSTR pPrintProcessorName); BOOL (*fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pPrintProcessorName); BOOL (*fpEnumPrintProcessorDatatypes)(LPWSTR pName, LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDataypes, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); DWORD (*fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo); BOOL (*fpStartPagePrinter)(HANDLE hPrinter); BOOL (*fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten); BOOL (*fpEndPagePrinter)(HANDLE hPrinter); BOOL (*fpAbortPrinter)(HANDLE hPrinter); BOOL (*fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pNoBytesRead); BOOL (*fpEndDocPrinter)(HANDLE hPrinter); BOOL (*fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpScheduleJob)(HANDLE hPrinter, DWORD JobId); DWORD (*fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded); DWORD (*fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData); DWORD (*fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags); BOOL (*fpClosePrinter)(HANDLE hPrinter); BOOL (*fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm); BOOL (*fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName); BOOL (*fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded); BOOL (*fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, LPBYTE pForm); BOOL (*fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL (*fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); BOOL (*fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); BOOL (*fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); HANDLE (*fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode); BOOL (*fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn, DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul); BOOL (*fpDeletePrinterIC)(HANDLE hPrinterIC); BOOL (*fpAddPrinterConnection)(LPWSTR pName); BOOL (*fpDeletePrinterConnection)(LPWSTR pName); DWORD (*fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd, LPWSTR pText, LPWSTR pCaption, DWORD dwType); BOOL (*fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitorInfo); BOOL (*fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName); BOOL (*fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTS pDefault); BOOL (*fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded, DWORD dwClientMajorVersion, DWORD dwClientMinorVersion, PDWORD pdwServerMajorVersion, PDWORD pdwServerMinorVersion); BOOL (*fpFindFirstPrinterChangeNotification)( HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PDWORD pfdwStatus, PVOID pPrinterNotifyOptions, PVOID pPrinterNotifyInit); BOOL (*fpFindClosePrinterChangeNotification)(HANDLE hPrinter); BOOL (*fpAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, LPWSTR lpMonitorName); BOOL (*fpShutDown)(LPVOID pvReserved); BOOL (*fpRefreshPrinterChangeNotification)(HANDLE hPrinter, DWORD Reserved, PVOID pvReserved, PVOID pPrinterNotifyInfo); BOOL (*fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTS pDefault, LPBYTE pClientInfo, DWORD Level); HANDLE (*fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter, LPBYTE pClientInfo, DWORD ClientInfoLevel); BOOL (*fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD Level, LPBYTE pPortInfo); DWORD (*fpEnumPrinterData)(HANDLE hPrinter, DWORD dwIndex, LPWSTR pValueName, DWORD cbValueName, LPDWORD pcbValueName, LPDWORD pType, LPBYTE pData, DWORD cbData, LPDWORD pcbData); DWORD (*fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName); } PRINTPROVIDOR, *LPPRINTPROVIDOR; BOOL InitializePrintProvidor( LPPRINTPROVIDOR pPrintProvidor, DWORD cbPrintProvidor, LPWSTR pFullRegistryPath ); typedef struct _PRINTPROCESSOROPENDATA { PDEVMODE pDevMode; LPWSTR pDatatype; LPWSTR pParameters; LPWSTR pDocumentName; DWORD JobId; LPWSTR pOutputFile; LPWSTR pPrinterName; } PRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA; HANDLE OpenPrintProcessor( LPWSTR pPrinterName, PPRINTPROCESSOROPENDATA pPrintProcessorOpenData ); BOOL PrintDocumentOnPrintProcessor( HANDLE hPrintProcessor, LPWSTR pDocumentName ); BOOL ClosePrintProcessor( HANDLE hPrintProcessor ); BOOL ControlPrintProcessor( HANDLE hPrintProcessor, DWORD Command ); BOOL InstallPrintProcessor( HWND hWnd ); BOOL InitializeMonitor( LPWSTR pRegistryRoot ); BOOL OpenPort( LPWSTR pName, PHANDLE pHandle ); BOOL WritePort( HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, LPDWORD pcbWritten ); BOOL ReadPort( HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, LPDWORD pcbRead ); BOOL ClosePort( HANDLE hPort ); 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 // must be set to 0 ); } MONITOR, FAR *LPMONITOR; typedef struct _MONITOREX { DWORD dwMonitorSize; MONITOR Monitor; } MONITOREX, FAR *LPMONITOREX; HANDLE CreatePrinterIC( HANDLE hPrinter, LPDEVMODEW pDevMode ); BOOL PlayGdiScriptOnPrinterIC( HANDLE hPrinterIC, LPBYTE pIn, DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul ); BOOL DeletePrinterIC( HANDLE hPrinterIC ); BOOL DevQueryPrint( HANDLE hPrinter, LPDEVMODE pDevMode, DWORD *pResID ); HANDLE RevertToPrinterSelf( VOID ); BOOL ImpersonatePrinterClient( HANDLE hToken ); BOOL OpenPrinterToken( PHANDLE phToken ); BOOL SetPrinterToken( HANDLE hToken ); BOOL ClosePrinterToken( HANDLE hToken ); BOOL ReplyPrinterChangeNotification( HANDLE hNotify, DWORD fdwFlags, PDWORD pdwResult, PVOID pPrinterNotifyInfo ); BOOL PartialReplyPrinterChangeNotification( HANDLE hNotify, PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc ); PPRINTER_NOTIFY_INFO RouterAllocPrinterNotifyInfo( DWORD cPrinterNotifyInfoData ); BOOL RouterFreePrinterNotifyInfo( PPRINTER_NOTIFY_INFO pInfo ); #define PRINTER_NOTIFY_INFO_DATA_COMPACT 1 BOOL AppendPrinterNotifyInfoData( PPRINTER_NOTIFY_INFO pInfoDest, PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, DWORD fdwFlags ); DWORD CallRouterFindFirstPrinterChangeNotification( HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PVOID pvReserved); BOOL ProvidorFindFirstPrinterChangeNotification( HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PVOID pvReserved0, PVOID pvReserved1); BOOL ProvidorFindClosePrinterChangeNotification( HANDLE hPrinter); BOOL SpoolerFindFirstPrinterChangeNotification( HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, PHANDLE phEvent, PVOID pPrinterNotifyOptions, PVOID pvReserved); BOOL SpoolerFindNextPrinterChangeNotification( HANDLE hPrinter, LPDWORD pfdwChange, PVOID pvReserved0, PVOID ppPrinterNotifyInfo); VOID SpoolerFreePrinterNotifyInfo( PPRINTER_NOTIFY_INFO pInfo); BOOL SpoolerFindClosePrinterChangeNotification( HANDLE hPrinter); BOOL WINAPI InitializeMonitorEx( LPWSTR pRegistryRoot, LPMONITOR pMonitor ); LPMONITOREX WINAPI InitializePrintMonitor( LPWSTR pRegistryRoot ); #ifdef __cplusplus } /* End of extern "C" { */ #endif /* __cplusplus */ #endif // _WINSPLP_