2 * Definitions for print provider, monitor, processor and spooler
4 * Copyright 2005 Detlef Riekenberg
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 * "providor" is not a spelling error in this file. It's the real name.
34 #define PRINTER_NOTIFY_STATUS_ENDPOINT 1
35 #define PRINTER_NOTIFY_STATUS_POLL 2
36 #define PRINTER_NOTIFY_STATUS_INFO 4
39 #define ROUTER_UNKNOWN 0
40 #define ROUTER_SUCCESS 1
41 #define ROUTER_STOP_ROUTING 2
44 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
50 typedef struct _MONITOR
{
51 BOOL (WINAPI
*pfnEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
52 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
53 BOOL (WINAPI
*pfnOpenPort
)(LPWSTR pName
, PHANDLE pHandle
);
54 BOOL (WINAPI
*pfnOpenPortEx
)(LPWSTR pPortName
, LPWSTR pPrinterName
,
55 PHANDLE pHandle
, struct _MONITOR
*pMonitor
);
56 BOOL (WINAPI
*pfnStartDocPort
)(HANDLE hPort
, LPWSTR pPrinterName
,
57 DWORD JobId
, DWORD Level
, LPBYTE pDocInfo
);
58 BOOL (WINAPI
*pfnWritePort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
60 BOOL (WINAPI
*pfnReadPort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
62 BOOL (WINAPI
*pfnEndDocPort
)(HANDLE hPort
);
63 BOOL (WINAPI
*pfnClosePort
)(HANDLE hPort
);
64 BOOL (WINAPI
*pfnAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
65 BOOL (WINAPI
*pfnAddPortEx
)(LPWSTR pName
, DWORD Level
, LPBYTE lpBuffer
,
66 LPWSTR lpMonitorName
);
67 BOOL (WINAPI
*pfnConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
68 BOOL (WINAPI
*pfnDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
69 BOOL (WINAPI
*pfnGetPrinterDataFromPort
)(HANDLE hPort
, DWORD ControlID
,
70 LPWSTR pValueName
, LPWSTR lpInBuffer
, DWORD cbInBuffer
,
71 LPWSTR lpOutBuffer
, DWORD cbOutBuffer
, LPDWORD lpcbReturned
);
72 BOOL (WINAPI
*pfnSetPortTimeOuts
)(HANDLE hPort
, LPCOMMTIMEOUTS lpCTO
,
74 BOOL (WINAPI
*pfnXcvOpenPort
)(LPCWSTR pszObject
, ACCESS_MASK GrantedAccess
, PHANDLE phXcv
);
75 DWORD (WINAPI
*pfnXcvDataPort
)(HANDLE hXcv
, LPCWSTR pszDataName
,
76 PBYTE pInputData
, DWORD cbInputData
,
77 PBYTE pOutputData
, DWORD cbOutputData
, PDWORD pcbOutputNeeded
);
78 BOOL (WINAPI
*pfnXcvClosePort
)(HANDLE hXcv
);
79 } MONITOR
, *LPMONITOR
;
81 typedef struct _MONITOR2
{
83 BOOL (WINAPI
*pfnEnumPorts
)(HANDLE hMonitor
, LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
84 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
85 BOOL (WINAPI
*pfnOpenPort
)(HANDLE hMonitor
, LPWSTR pName
, PHANDLE pHandle
);
86 BOOL (WINAPI
*pfnOpenPortEx
)(HANDLE hMonitor
, HANDLE hMonitorPort
,
87 LPWSTR pPortName
, LPWSTR pPrinterName
,
88 PHANDLE pHandle
, struct _MONITOR2
*pMonitor2
);
89 BOOL (WINAPI
*pfnStartDocPort
)(HANDLE hPort
, LPWSTR pPrinterName
,
90 DWORD JobId
, DWORD Level
, LPBYTE pDocInfo
);
91 BOOL (WINAPI
*pfnWritePort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
93 BOOL (WINAPI
*pfnReadPort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
95 BOOL (WINAPI
*pfnEndDocPort
)(HANDLE hPort
);
96 BOOL (WINAPI
*pfnClosePort
)(HANDLE hPort
);
97 BOOL (WINAPI
*pfnAddPort
)(HANDLE hMonitor
, LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
98 BOOL (WINAPI
*pfnAddPortEx
)(HANDLE hMonitor
, LPWSTR pName
, DWORD Level
, LPBYTE lpBuffer
,
99 LPWSTR lpMonitorName
);
100 BOOL (WINAPI
*pfnConfigurePort
)(HANDLE hMonitor
, LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
101 BOOL (WINAPI
*pfnDeletePort
)(HANDLE hMonitor
, LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
102 BOOL (WINAPI
*pfnGetPrinterDataFromPort
)(HANDLE hPort
, DWORD ControlID
,
103 LPWSTR pValueName
, LPWSTR lpInBuffer
, DWORD cbInBuffer
,
104 LPWSTR lpOutBuffer
, DWORD cbOutBuffer
, LPDWORD lpcbReturned
);
105 BOOL (WINAPI
*pfnSetPortTimeOuts
)(HANDLE hPort
, LPCOMMTIMEOUTS lpCTO
,
107 BOOL (WINAPI
*pfnXcvOpenPort
)(HANDLE hMonitor
, LPCWSTR pszObject
,
108 ACCESS_MASK GrantedAccess
, PHANDLE phXcv
);
109 DWORD (WINAPI
*pfnXcvDataPort
)(HANDLE hXcv
, LPCWSTR pszDataName
,
110 PBYTE pInputData
, DWORD cbInputData
,
111 PBYTE pOutputData
, DWORD cbOutputData
, PDWORD pcbOutputNeeded
);
112 BOOL (WINAPI
*pfnXcvClosePort
)(HANDLE hXcv
);
113 /* Additions from MONITOR to MONITOR2 */
114 VOID (WINAPI
*pfnShutdown
)(HANDLE hMonitor
);
115 DWORD (WINAPI
*pfnSendRecvBidiDataFromPort
)(HANDLE hPort
, DWORD dwAccessBit
,
116 LPCWSTR pAction
, PBIDI_REQUEST_CONTAINER pReqData
,
117 PBIDI_RESPONSE_CONTAINER
*ppResData
);
118 DWORD (WINAPI
*pfnNotifyUsedPorts
)(HANDLE
, DWORD
, PCWSTR
*);
119 DWORD (WINAPI
*pfnNotifyUnusedPorts
)(HANDLE
, DWORD
, PCWSTR
*);
120 } MONITOR2
, *LPMONITOR2
, *PMONITOR2
;
122 typedef struct _MONITOREX
{
125 } MONITOREX
, *LPMONITOREX
;
127 typedef struct _MONITORREG
{
129 LONG (WINAPI
*fpCreateKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, DWORD dwOptions
,
130 REGSAM samDesired
, PSECURITY_ATTRIBUTES pSecurityAttributes
,
131 PHANDLE phckResult
, PDWORD pdwDisposition
, HANDLE hSpooler
);
132 LONG (WINAPI
*fpOpenKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, REGSAM samDesired
,
133 PHANDLE phkResult
, HANDLE hSpooler
);
134 LONG (WINAPI
*fpCloseKey
)(HANDLE hcKey
, HANDLE hSpooler
);
135 LONG (WINAPI
*fpDeleteKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, HANDLE hSpooler
);
136 LONG (WINAPI
*fpEnumKey
)(HANDLE hcKey
, DWORD dwIndex
, LPWSTR pszName
,
137 PDWORD pcchName
, PFILETIME pftLastWriteTime
, HANDLE hSpooler
);
138 LONG (WINAPI
*fpQueryInfoKey
)(HANDLE hcKey
, PDWORD pcSubKeys
, PDWORD pcbKey
,
139 PDWORD pcValues
, PDWORD pcbValue
, PDWORD pcbData
,
140 PDWORD pcbSecurityDescriptor
, PFILETIME pftLastWriteTime
,
142 LONG (WINAPI
*fpSetValue
)(HANDLE hcKey
, LPCWSTR pszValue
, DWORD dwType
,
143 const BYTE
* pData
, DWORD cbData
, HANDLE hSpooler
);
144 LONG (WINAPI
*fpDeleteValue
)(HANDLE hcKey
, LPCWSTR pszValue
, HANDLE hSpooler
);
145 LONG (WINAPI
*fpEnumValue
)(HANDLE hcKey
, DWORD dwIndex
, LPWSTR pszValue
,
146 PDWORD pcbValue
, PDWORD pType
, PBYTE pData
, PDWORD pcbData
,
148 LONG (WINAPI
*fpQueryValue
)(HANDLE hcKey
, LPCWSTR pszValue
, PDWORD pType
,
149 PBYTE pData
, PDWORD pcbData
, HANDLE hSpooler
);
150 } MONITORREG
, *PMONITORREG
;
152 typedef struct _MONITORINIT
{
155 HANDLE hckRegistryRoot
;
156 PMONITORREG pMonitorReg
;
158 LPCWSTR pszServerName
;
159 } MONITORINIT
, *PMONITORINIT
;
161 typedef struct _MONITORUI
{
162 DWORD dwMonitorUISize
;
163 BOOL (WINAPI
*pfnAddPortUI
)(PCWSTR pszServer
, HWND hWnd
,
164 PCWSTR pszPortNameIn
, PWSTR
*ppszPortNameOut
);
165 BOOL (WINAPI
*pfnConfigurePortUI
)(PCWSTR pName
, HWND hWnd
, PCWSTR pPortName
);
166 BOOL (WINAPI
*pfnDeletePortUI
)(PCWSTR pszServer
, HWND hWnd
, PCWSTR pszPortName
);
167 }MONITORUI
, *PMONITORUI
;
169 typedef struct _PRINTER_NOTIFY_INIT
{
173 } PRINTER_NOTIFY_INIT
, *LPPRINTER_NOTIFY_INIT
, *PPRINTER_NOTIFY_INIT
;
175 typedef struct _PRINTPROCESSOROPENDATA
{
179 LPWSTR pDocumentName
;
183 } PRINTPROCESSOROPENDATA
, *LPPRINTPROCESSOROPENDATA
, *PPRINTPROCESSOROPENDATA
;
187 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
190 typedef struct _PRINTPROVIDOR
{
191 BOOL (WINAPI
*fpOpenPrinter
)(LPWSTR lpPrinterName
, HANDLE
*phPrinter
,
192 LPPRINTER_DEFAULTSW pDefault
);
193 BOOL (WINAPI
*fpSetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
194 LPBYTE pJob
, DWORD Command
);
195 BOOL (WINAPI
*fpGetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
196 LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
);
197 BOOL (WINAPI
*fpEnumJobs
)(HANDLE hPrinter
, DWORD FirstJob
, DWORD NoJobs
,
198 DWORD Level
, LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
,
200 HANDLE (WINAPI
*fpAddPrinter
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
);
201 BOOL (WINAPI
*fpDeletePrinter
)(HANDLE hPrinter
);
202 BOOL (WINAPI
*fpSetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
204 BOOL (WINAPI
*fpGetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
205 DWORD cbBuf
, LPDWORD pcbNeeded
);
206 BOOL (WINAPI
*fpEnumPrinters
)(DWORD dwType
, LPWSTR lpszName
, DWORD dwLevel
,
207 LPBYTE lpbPrinters
, DWORD cbBuf
, LPDWORD lpdwNeeded
,
208 LPDWORD lpdwReturned
);
209 BOOL (WINAPI
*fpAddPrinterDriver
)(LPWSTR pName
, DWORD Level
,
211 BOOL (WINAPI
*fpEnumPrinterDrivers
)(LPWSTR pName
, LPWSTR pEnvironment
,
212 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
213 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
214 BOOL (WINAPI
*fpGetPrinterDriver
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
215 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
217 BOOL (WINAPI
*fpGetPrinterDriverDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
218 DWORD Level
, LPBYTE pDriverDirectory
, DWORD cbBuf
,
220 BOOL (WINAPI
*fpDeletePrinterDriver
)(LPWSTR pName
, LPWSTR pEnvironment
,
222 BOOL (WINAPI
*fpAddPrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
223 LPWSTR pPathName
, LPWSTR pPrintProcessorName
);
224 BOOL (WINAPI
*fpEnumPrintProcessors
)(LPWSTR pName
, LPWSTR pEnvironment
,
225 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
226 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
227 BOOL (WINAPI
*fpGetPrintProcessorDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
228 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
230 BOOL (WINAPI
*fpDeletePrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
231 LPWSTR pPrintProcessorName
);
232 BOOL (WINAPI
*fpEnumPrintProcessorDatatypes
)(LPWSTR pName
,
233 LPWSTR pPrintProcessorName
, DWORD Level
, LPBYTE pDatatypes
,
234 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
235 DWORD (WINAPI
*fpStartDocPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pDocInfo
);
236 BOOL (WINAPI
*fpStartPagePrinter
)(HANDLE hPrinter
);
237 BOOL (WINAPI
*fpWritePrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
239 BOOL (WINAPI
*fpEndPagePrinter
)(HANDLE hPrinter
);
240 BOOL (WINAPI
*fpAbortPrinter
)(HANDLE hPrinter
);
241 BOOL (WINAPI
*fpReadPrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
242 LPDWORD pNoBytesRead
);
243 BOOL (WINAPI
*fpEndDocPrinter
)(HANDLE hPrinter
);
244 BOOL (WINAPI
*fpAddJob
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pData
,
245 DWORD cbBuf
, LPDWORD pcbNeeded
);
246 BOOL (WINAPI
*fpScheduleJob
)(HANDLE hPrinter
, DWORD JobID
);
247 DWORD (WINAPI
*fpGetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
248 LPDWORD pType
, LPBYTE pData
, DWORD nSize
, LPDWORD pcbNeeded
);
249 DWORD (WINAPI
*fpSetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
250 DWORD Type
, LPBYTE pData
, DWORD cbData
);
251 DWORD (WINAPI
*fpWaitForPrinterChange
)(HANDLE hPrinter
, DWORD Flags
);
252 BOOL (WINAPI
*fpClosePrinter
)(HANDLE phPrinter
);
253 BOOL (WINAPI
*fpAddForm
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
);
254 BOOL (WINAPI
*fpDeleteForm
)(HANDLE hPrinter
, LPWSTR pFormName
);
255 BOOL (WINAPI
*fpGetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
256 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
);
257 BOOL (WINAPI
*fpSetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
259 BOOL (WINAPI
*fpEnumForms
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
,
260 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
261 BOOL (WINAPI
*fpEnumMonitors
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
,
262 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
263 BOOL (WINAPI
*fpEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
264 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
265 BOOL (WINAPI
*fpAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
266 BOOL (WINAPI
*fpConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
267 BOOL (WINAPI
*fpDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
268 HANDLE (WINAPI
*fpCreatePrinterIC
)(HANDLE hPrinter
, LPDEVMODEW pDevMode
);
269 BOOL (WINAPI
*fpPlayGdiScriptOnPrinterIC
)(HANDLE hPrinterIC
, LPBYTE pIn
,
270 DWORD cIn
, LPBYTE pOut
, DWORD cOut
, DWORD ul
);
271 BOOL (WINAPI
*fpDeletePrinterIC
)(HANDLE hPrinterIC
);
272 BOOL (WINAPI
*fpAddPrinterConnection
)(LPWSTR pName
);
273 BOOL (WINAPI
*fpDeletePrinterConnection
)(LPWSTR pName
);
274 DWORD (WINAPI
*fpPrinterMessageBox
)(HANDLE hPrinter
, DWORD Error
, HWND hWnd
,
275 LPWSTR pText
, LPWSTR pCaption
, DWORD dwType
);
276 BOOL (WINAPI
*fpAddMonitor
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
);
277 BOOL (WINAPI
*fpDeleteMonitor
)(LPWSTR pName
, LPWSTR pEnvironment
,
278 LPWSTR pMonitorName
);
279 BOOL (WINAPI
*fpResetPrinter
)(HANDLE hPrinter
, LPPRINTER_DEFAULTSW pDefault
);
280 BOOL (WINAPI
*fpGetPrinterDriverEx
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
281 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
, LPDWORD pcbNeeded
,
282 DWORD dwClientMajorVersion
, DWORD dwClientMinorVersion
,
283 PDWORD pdwServerMajorVersion
, PDWORD pdwServerMinorVersion
);
284 HANDLE (WINAPI
*fpFindFirstPrinterChangeNotification
)(HANDLE hPrinter
,
285 DWORD fdwFlags
, DWORD fdwOptions
, LPVOID pPrinterNotifyOptions
);
286 BOOL (WINAPI
*fpFindClosePrinterChangeNotification
)(HANDLE hChange
);
287 BOOL (WINAPI
*fpAddPortEx
)(LPWSTR
, DWORD
, LPBYTE
, LPWSTR
);
288 BOOL (WINAPI
*fpShutDown
)(LPVOID pvReserved
);
289 BOOL (WINAPI
*fpRefreshPrinterChangeNotification
)(HANDLE hPrinter
,
290 DWORD Reserved
, PVOID pvReserved
, PVOID pPrinterNotifyInfo
);
291 BOOL (WINAPI
*fpOpenPrinterEx
)(LPWSTR pPrinterName
, LPHANDLE phPrinter
,
292 LPPRINTER_DEFAULTSW pDefault
, LPBYTE pClientInfo
, DWORD Level
);
293 HANDLE (WINAPI
*fpAddPrinterEx
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
,
294 LPBYTE pClientInfo
, DWORD ClientInfoLevel
);
295 BOOL (WINAPI
*fpSetPort
)(LPWSTR pName
, LPWSTR pPortName
, DWORD dwLevel
,
297 DWORD (WINAPI
*fpEnumPrinterData
)( HANDLE hPrinter
, DWORD dwIndex
,
298 LPWSTR pValueName
, DWORD cbValueName
, LPDWORD pcbValueName
,
299 LPDWORD pType
, LPBYTE pData
, DWORD cbData
, LPDWORD pcbData
);
300 DWORD (WINAPI
*fpDeletePrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
);
301 DWORD (WINAPI
*fpClusterSplOpen
)(LPCWSTR pszServer
, LPCWSTR pszResource
,
302 PHANDLE phSpooler
, LPCWSTR pszName
, LPCWSTR pszAddress
);
303 DWORD (WINAPI
*fpClusterSplClose
)(HANDLE hSpooler
);
304 DWORD (WINAPI
*fpClusterSplIsAlive
)(HANDLE hSpooler
);
305 DWORD (WINAPI
*fpSetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
306 LPCWSTR pValueName
, DWORD Type
, LPBYTE pData
, DWORD cbData
);
307 DWORD (WINAPI
*fpGetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
308 LPCWSTR pValueName
, LPDWORD pType
, LPBYTE pData
, DWORD nSize
,
310 DWORD (WINAPI
*fpEnumPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
311 LPBYTE pEnumValues
, DWORD cbEnumValues
, LPDWORD pcbEnumValues
,
312 LPDWORD pnEnumValues
);
313 DWORD (WINAPI
*fpEnumPrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
314 LPWSTR pSubkey
, DWORD cbSubkey
, LPDWORD pcbSubkey
);
315 DWORD (WINAPI
*fpDeletePrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
317 DWORD (WINAPI
*fpDeletePrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
);
318 BOOL (WINAPI
*fpSeekPrinter
)(HANDLE hPrinter
, LARGE_INTEGER liDistanceToMove
,
319 PLARGE_INTEGER pliNewPointer
, DWORD dwMoveMethod
, BOOL bWrite
);
320 BOOL (WINAPI
*fpDeletePrinterDriverEx
)(LPWSTR pName
, LPWSTR pEnvironment
,
321 LPWSTR pDriverName
, DWORD dwDeleteFlag
, DWORD dwVersionNum
);
322 BOOL (WINAPI
*fpAddPerMachineConnection
)(LPCWSTR pServer
,
323 LPCWSTR pPrinterName
, LPCWSTR pPrintServer
, LPCWSTR pProvider
);
324 BOOL (WINAPI
*fpDeletePerMachineConnection
)(LPCWSTR pServer
,
325 LPCWSTR pPrinterName
);
326 BOOL (WINAPI
*fpEnumPerMachineConnections
)(LPCWSTR pServer
,
327 LPBYTE pPrinterEnum
, DWORD cbBuf
, LPDWORD pcbNeeded
,
329 BOOL (WINAPI
*fpXcvData
)(HANDLE hXcv
, LPCWSTR pszDataName
, PBYTE pInputData
,
330 DWORD cbInputData
, PBYTE pOutputData
, DWORD cbOutputData
,
331 PDWORD pcbOutputNeeded
, PDWORD pdwStatus
);
332 BOOL (WINAPI
*fpAddPrinterDriverEx
)(LPWSTR pName
, DWORD Level
,
333 LPBYTE pDriverInfo
, DWORD dwFileCopyFlags
);
334 BOOL (WINAPI
*fpSplReadPrinter
)(HANDLE hPrinter
, LPBYTE
*pBuf
, DWORD cbBuf
);
335 BOOL (WINAPI
*fpDriverUnloadComplete
)(LPWSTR pDriverFile
);
336 BOOL (WINAPI
*fpGetSpoolFileInfo
)(HANDLE hPrinter
, LPWSTR
*pSpoolDir
,
337 LPHANDLE phFile
, HANDLE hSpoolerProcess
, HANDLE hAppProcess
);
338 BOOL (WINAPI
*fpCommitSpoolData
)(HANDLE hPrinter
, DWORD cbCommit
);
339 BOOL (WINAPI
*fpCloseSpoolFileHandle
)(HANDLE hPrinter
);
340 BOOL (WINAPI
*fpFlushPrinter
)(HANDLE hPrinter
, LPBYTE pBuf
, DWORD cbBuf
,
341 LPDWORD pcWritten
, DWORD cSleep
);
342 DWORD (WINAPI
*fpSendRecvBidiData
)(HANDLE hPort
, LPCWSTR pAction
,
343 LPBIDI_REQUEST_CONTAINER pReqData
,
344 LPBIDI_RESPONSE_CONTAINER
*ppResData
);
345 BOOL (WINAPI
*fpAddDriverCatalog
)(HANDLE hPrinter
, DWORD dwLevel
,
346 VOID
*pvDriverInfCatInfo
, DWORD dwCatalogCopyFlags
);
347 } PRINTPROVIDOR
, *LPPRINTPROVIDOR
;
349 typedef struct _SPLCLIENT_INFO_1
{
354 DWORD dwMajorVersion
;
355 DWORD dwMinorVersion
;
356 WORD wProcessorArchitecture
;
357 } SPLCLIENT_INFO_1
, *LPSPLCLIENT_INFO_1
, *PSPLCLIENT_INFO_1
;
361 HANDLE WINAPI
CreatePrinterIC(HANDLE hPrinter
, LPDEVMODEW pDevMode
);
362 BOOL WINAPI
PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC
, LPBYTE pIn
,
363 DWORD cIn
, LPBYTE pOut
, DWORD cOut
, DWORD ul
);
364 BOOL WINAPI
DeletePrinterIC(HANDLE hPrinterIC
);
365 BOOL WINAPI
DevQueryPrint(HANDLE hPrinter
, LPDEVMODEW pDevMode
, DWORD
*pResID
);
367 /* Security and Access */
368 HANDLE WINAPI
RevertToPrinterSelf(VOID
);
369 BOOL WINAPI
ImpersonatePrinterClient(HANDLE hToken
);
370 BOOL WINAPI
OpenPrinterToken(PHANDLE phToken
);
371 BOOL WINAPI
SetPrinterToken(HANDLE hToken
);
372 BOOL WINAPI
ClosePrinterToken(HANDLE hToken
);
375 BOOL WINAPI
ReplyPrinterChangeNotification(HANDLE hNotify
, DWORD fdwFlags
,
376 PDWORD pdwResult
, PVOID pPrinterNotifyInfo
);
377 BOOL WINAPI
PartialReplyPrinterChangeNotification(HANDLE hNotify
,
378 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
);
379 PPRINTER_NOTIFY_INFO
RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData
);
380 BOOL WINAPI
RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo
);
381 BOOL WINAPI
AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest
,
382 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
, DWORD fdwFlags
);
383 DWORD WINAPI
CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter
,
384 DWORD fdwFlags
, DWORD fdwOptions
, HANDLE hNotify
, PVOID pvReserved
);
386 /* Port monitor / Language monitor / Print monitor */
387 LPMONITOR2 WINAPI
InitializePrintMonitor2(PMONITORINIT pMonitorInit
,
389 PMONITORUI WINAPI
InitializePrintMonitorUI(VOID
);
390 LPMONITOREX WINAPI
InitializePrintMonitor(LPWSTR pRegistryRoot
);
391 BOOL WINAPI
InitializeMonitorEx(LPWSTR pRegistryRoot
, LPMONITOR pMonitor
);
392 BOOL WINAPI
InitializeMonitor(LPWSTR pRegistryRoot
);
394 BOOL WINAPI
OpenPort(LPWSTR pName
, PHANDLE pHandle
);
395 BOOL WINAPI
WritePort(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
397 BOOL WINAPI
ReadPort(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
399 BOOL WINAPI
ClosePort(HANDLE hPort
);
401 /* Print processor */
402 HANDLE WINAPI
OpenPrintProcessor(LPWSTR pPrinterName
,
403 PPRINTPROCESSOROPENDATA pPrintProcessorOpenData
);
404 BOOL WINAPI
PrintDocumentOnPrintProcessor(HANDLE hPrintProcessor
,
405 LPWSTR pDocumentName
);
406 BOOL WINAPI
ClosePrintProcessor(HANDLE hPrintProcessor
);
407 BOOL WINAPI
ControlPrintProcessor(HANDLE hPrintProcessor
, DWORD Command
);
408 BOOL WINAPI
InstallPrintProcessor(HWND hWnd
);
411 BOOL WINAPI
InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor
,
412 DWORD cbPrintProvidor
, LPWSTR pFullRegistryPath
);
413 BOOL WINAPI
ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter
,
414 DWORD fdwFlags
, DWORD fdwOptions
, HANDLE hNotify
,
415 PVOID pvReserved0
, PVOID pvReserved1
);
416 BOOL WINAPI
ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter
);
419 BOOL WINAPI
SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter
,
420 DWORD fdwFlags
, DWORD fdwOptions
, PHANDLE phEvent
,
421 PVOID pPrinterNotifyOptions
, PVOID pvReserved
);
422 BOOL WINAPI
SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter
,
423 LPDWORD pfdwChange
, PVOID pvReserved0
, PVOID ppPrinterNotifyInfo
);
424 VOID WINAPI
SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo
);
425 BOOL WINAPI
SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter
);
431 #endif /* _WINSPLP_ */