Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

723 lines
18 KiB

/*++
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_