9 #define PRINTER_NOTIFY_STATUS_ENDPOINT 1
10 #define PRINTER_NOTIFY_STATUS_POLL 2
11 #define PRINTER_NOTIFY_STATUS_INFO 4
13 #define ROUTER_UNKNOWN 0
14 #define ROUTER_SUCCESS 1
15 #define ROUTER_STOP_ROUTING 2
17 #if (NTDDI_VERSION >= NTDDI_WS03)
18 #ifndef __ATTRIBUTE_INFO_3__
19 #define __ATTRIBUTE_INFO_3__
20 typedef struct _ATTRIBUTE_INFO_3
{
21 DWORD dwJobNumberOfPagesPerSide
;
22 DWORD dwDrvNumberOfPagesPerSide
;
23 DWORD dwNupBorderFlags
;
24 DWORD dwJobPageOrderFlags
;
25 DWORD dwDrvPageOrderFlags
;
26 DWORD dwJobNumberOfCopies
;
27 DWORD dwDrvNumberOfCopies
;
28 DWORD dwColorOptimization
;
31 } ATTRIBUTE_INFO_3
, *PATTRIBUTE_INFO_3
;
33 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
35 #if (NTDDI_VERSION >= NTDDI_VISTA)
37 #ifndef __ATTRIBUTE_INFO_4__
38 #define __ATTRIBUTE_INFO_4__
40 typedef struct _ATTRIBUTE_INFO_4
{
41 DWORD dwJobNumberOfPagesPerSide
;
42 DWORD dwDrvNumberOfPagesPerSide
;
43 DWORD dwNupBorderFlags
;
44 DWORD dwJobPageOrderFlags
;
45 DWORD dwDrvPageOrderFlags
;
46 DWORD dwJobNumberOfCopies
;
47 DWORD dwDrvNumberOfCopies
;
48 DWORD dwColorOptimization
;
54 DWORD dwScalingPercentX
;
55 DWORD dwScalingPercentY
;
56 } ATTRIBUTE_INFO_4
, *PATTRIBUTE_INFO_4
;
58 #define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001)
59 #define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1)
61 #define RIGHT_THEN_DOWN (0x00000001)
62 #define DOWN_THEN_RIGHT (0x00000001 << 1)
63 #define LEFT_THEN_DOWN (0x00000001 << 2)
64 #define DOWN_THEN_LEFT (0x00000001 << 3)
66 #define BOOKLET_EDGE_LEFT 0x00000000
67 #define BOOKLET_EDGE_RIGHT 0x00000001
69 #endif /* __ATTRIBUTE_INFO_4__ */
71 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
73 typedef struct _PRINTER_NOTIFY_INIT
{
77 } PRINTER_NOTIFY_INIT
, *LPPRINTER_NOTIFY_INIT
, *PPRINTER_NOTIFY_INIT
;
79 typedef struct _SPLCLIENT_INFO_1
{
86 WORD wProcessorArchitecture
;
87 } SPLCLIENT_INFO_1
, *LPSPLCLIENT_INFO_1
, *PSPLCLIENT_INFO_1
;
89 typedef struct _SPLCLIENT_INFO_2_V1
{
90 ULONG_PTR hSplPrinter
;
91 } SPLCLIENT_INFO_2_W2K
;
93 typedef struct _SPLCLIENT_INFO_2_V2
{
99 } SPLCLIENT_INFO_2_WINXP
;
101 typedef struct _SPLCLIENT_INFO_2_V3
{
103 } SPLCLIENT_INFO_2_LONGHORN
;
105 #if (OSVER(NTDDI_VERSION) == NTDDI_W2K)
106 typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2
, *PSPLCLIENT_INFO_2
, *LPSPLCLIENT_INFO_2
;
107 #elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03))
108 typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2
, *PSPLCLIENT_INFO_2
, *LPSPLCLIENT_INFO_2
;
110 typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2
, *PSPLCLIENT_INFO_2
, *LPSPLCLIENT_INFO_2
;
113 #if (NTDDI_VERSION >= NTDDI_VISTA)
114 typedef struct _SPLCLIENT_INFO_3
{
121 DWORD dwMajorVersion
;
122 DWORD dwMinorVersion
;
123 WORD wProcessorArchitecture
;
125 } SPLCLIENT_INFO_3
, *PSPLCLIENT_INFO_3
, *LPSPLCLIENT_INFO_3
;
126 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
128 typedef struct _PRINTPROVIDOR
{
129 BOOL (WINAPI
*fpOpenPrinter
)(PWSTR lpPrinterName
, HANDLE
*phPrinter
,
130 PPRINTER_DEFAULTSW pDefault
);
131 BOOL (WINAPI
*fpSetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
132 LPBYTE pJob
, DWORD Command
);
133 BOOL (WINAPI
*fpGetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
134 LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
);
135 BOOL (WINAPI
*fpEnumJobs
)(HANDLE hPrinter
, DWORD FirstJob
, DWORD NoJobs
,
136 DWORD Level
, LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
,
138 HANDLE (WINAPI
*fpAddPrinter
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
);
139 BOOL (WINAPI
*fpDeletePrinter
)(HANDLE hPrinter
);
140 BOOL (WINAPI
*fpSetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
142 BOOL (WINAPI
*fpGetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
143 DWORD cbBuf
, LPDWORD pcbNeeded
);
144 BOOL (WINAPI
*fpEnumPrinters
)(DWORD dwType
, LPWSTR lpszName
, DWORD dwLevel
,
145 LPBYTE lpbPrinters
, DWORD cbBuf
, LPDWORD lpdwNeeded
,
146 LPDWORD lpdwReturned
);
147 BOOL (WINAPI
*fpAddPrinterDriver
)(LPWSTR pName
, DWORD Level
,
149 BOOL (WINAPI
*fpEnumPrinterDrivers
)(LPWSTR pName
, LPWSTR pEnvironment
,
150 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
151 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
152 BOOL (WINAPI
*fpGetPrinterDriver
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
153 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
155 BOOL (WINAPI
*fpGetPrinterDriverDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
156 DWORD Level
, LPBYTE pDriverDirectory
, DWORD cbBuf
,
158 BOOL (WINAPI
*fpDeletePrinterDriver
)(LPWSTR pName
, LPWSTR pEnvironment
,
160 BOOL (WINAPI
*fpAddPrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
161 LPWSTR pPathName
, LPWSTR pPrintProcessorName
);
162 BOOL (WINAPI
*fpEnumPrintProcessors
)(LPWSTR pName
, LPWSTR pEnvironment
,
163 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
164 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
165 BOOL (WINAPI
*fpGetPrintProcessorDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
166 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
168 BOOL (WINAPI
*fpDeletePrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
169 LPWSTR pPrintProcessorName
);
170 BOOL (WINAPI
*fpEnumPrintProcessorDatatypes
)(LPWSTR pName
,
171 LPWSTR pPrintProcessorName
, DWORD Level
, LPBYTE pDatatypes
,
172 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
173 DWORD (WINAPI
*fpStartDocPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pDocInfo
);
174 BOOL (WINAPI
*fpStartPagePrinter
)(HANDLE hPrinter
);
175 BOOL (WINAPI
*fpWritePrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
177 BOOL (WINAPI
*fpEndPagePrinter
)(HANDLE hPrinter
);
178 BOOL (WINAPI
*fpAbortPrinter
)(HANDLE hPrinter
);
179 BOOL (WINAPI
*fpReadPrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
180 LPDWORD pNoBytesRead
);
181 BOOL (WINAPI
*fpEndDocPrinter
)(HANDLE hPrinter
);
182 BOOL (WINAPI
*fpAddJob
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pData
,
183 DWORD cbBuf
, LPDWORD pcbNeeded
);
184 BOOL (WINAPI
*fpScheduleJob
)(HANDLE hPrinter
, DWORD JobID
);
185 DWORD (WINAPI
*fpGetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
186 LPDWORD pType
, LPBYTE pData
, DWORD nSize
, LPDWORD pcbNeeded
);
187 DWORD (WINAPI
*fpSetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
188 DWORD Type
, LPBYTE pData
, DWORD cbData
);
189 DWORD (WINAPI
*fpWaitForPrinterChange
)(HANDLE hPrinter
, DWORD Flags
);
190 BOOL (WINAPI
*fpClosePrinter
)(HANDLE phPrinter
);
191 BOOL (WINAPI
*fpAddForm
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
);
192 BOOL (WINAPI
*fpDeleteForm
)(HANDLE hPrinter
, LPWSTR pFormName
);
193 BOOL (WINAPI
*fpGetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
194 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
);
195 BOOL (WINAPI
*fpSetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
197 BOOL (WINAPI
*fpEnumForms
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
,
198 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
199 BOOL (WINAPI
*fpEnumMonitors
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
,
200 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
201 BOOL (WINAPI
*fpEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
202 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
203 BOOL (WINAPI
*fpAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
204 BOOL (WINAPI
*fpConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
205 BOOL (WINAPI
*fpDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
206 HANDLE (WINAPI
*fpCreatePrinterIC
)(HANDLE hPrinter
, LPDEVMODEW pDevMode
);
207 BOOL (WINAPI
*fpPlayGdiScriptOnPrinterIC
)(HANDLE hPrinterIC
, LPBYTE pIn
,
208 DWORD cIn
, LPBYTE pOut
, DWORD cOut
, DWORD ul
);
209 BOOL (WINAPI
*fpDeletePrinterIC
)(HANDLE hPrinterIC
);
210 BOOL (WINAPI
*fpAddPrinterConnection
)(LPWSTR pName
);
211 BOOL (WINAPI
*fpDeletePrinterConnection
)(LPWSTR pName
);
212 DWORD (WINAPI
*fpPrinterMessageBox
)(HANDLE hPrinter
, DWORD Error
, HWND hWnd
,
213 LPWSTR pText
, LPWSTR pCaption
, DWORD dwType
);
214 BOOL (WINAPI
*fpAddMonitor
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
);
215 BOOL (WINAPI
*fpDeleteMonitor
)(LPWSTR pName
, LPWSTR pEnvironment
,
216 LPWSTR pMonitorName
);
217 BOOL (WINAPI
*fpResetPrinter
)(HANDLE hPrinter
, LPPRINTER_DEFAULTSW pDefault
);
218 BOOL (WINAPI
*fpGetPrinterDriverEx
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
219 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
, LPDWORD pcbNeeded
,
220 DWORD dwClientMajorVersion
, DWORD dwClientMinorVersion
,
221 PDWORD pdwServerMajorVersion
, PDWORD pdwServerMinorVersion
);
222 HANDLE (WINAPI
*fpFindFirstPrinterChangeNotification
)(HANDLE hPrinter
,
223 DWORD fdwFlags
, DWORD fdwOptions
, LPVOID pPrinterNotifyOptions
);
224 BOOL (WINAPI
*fpFindClosePrinterChangeNotification
)(HANDLE hChange
);
225 BOOL (WINAPI
*fpAddPortEx
)(HANDLE hMonitor
, LPWSTR pName
, DWORD Level
,
226 LPBYTE lpBuffer
, LPWSTR lpMonitorName
);
227 BOOL (WINAPI
*fpShutDown
)(LPVOID pvReserved
);
228 BOOL (WINAPI
*fpRefreshPrinterChangeNotification
)(HANDLE hPrinter
,
229 DWORD Reserved
, PVOID pvReserved
, PVOID pPrinterNotifyInfo
);
230 BOOL (WINAPI
*fpOpenPrinterEx
)(LPWSTR pPrinterName
, LPHANDLE phPrinter
,
231 LPPRINTER_DEFAULTSW pDefault
, LPBYTE pClientInfo
, DWORD Level
);
232 HANDLE (WINAPI
*fpAddPrinterEx
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
,
233 LPBYTE pClientInfo
, DWORD ClientInfoLevel
);
234 BOOL (WINAPI
*fpSetPort
)(LPWSTR pName
, LPWSTR pPortName
, DWORD dwLevel
,
236 DWORD (WINAPI
*fpEnumPrinterData
)( HANDLE hPrinter
, DWORD dwIndex
,
237 LPWSTR pValueName
, DWORD cbValueName
, LPDWORD pcbValueName
,
238 LPDWORD pType
, LPBYTE pData
, DWORD cbData
, LPDWORD pcbData
);
239 DWORD (WINAPI
*fpDeletePrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
);
240 DWORD (WINAPI
*fpClusterSplOpen
)(LPCWSTR pszServer
, LPCWSTR pszResource
,
241 PHANDLE phSpooler
, LPCWSTR pszName
, LPCWSTR pszAddress
);
242 DWORD (WINAPI
*fpClusterSplClose
)(HANDLE hSpooler
);
243 DWORD (WINAPI
*fpClusterSplIsAlive
)(HANDLE hSpooler
);
244 DWORD (WINAPI
*fpSetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
245 LPCWSTR pValueName
, DWORD Type
, LPBYTE pData
, DWORD cbData
);
246 DWORD (WINAPI
*fpGetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
247 LPCWSTR pValueName
, LPDWORD pType
, LPBYTE pData
, DWORD nSize
,
249 DWORD (WINAPI
*fpEnumPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
250 LPBYTE pEnumValues
, DWORD cbEnumValues
, LPDWORD pcbEnumValues
,
251 LPDWORD pnEnumValues
);
252 DWORD (WINAPI
*fpEnumPrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
253 LPWSTR pSubkey
, DWORD cbSubkey
, LPDWORD pcbSubkey
);
254 DWORD (WINAPI
*fpDeletePrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
256 DWORD (WINAPI
*fpDeletePrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
);
257 BOOL (WINAPI
*fpSeekPrinter
)(HANDLE hPrinter
, LARGE_INTEGER liDistanceToMove
,
258 PLARGE_INTEGER pliNewPointer
, DWORD dwMoveMethod
, BOOL bWrite
);
259 BOOL (WINAPI
*fpDeletePrinterDriverEx
)(LPWSTR pName
, LPWSTR pEnvironment
,
260 LPWSTR pDriverName
, DWORD dwDeleteFlag
, DWORD dwVersionNum
);
261 BOOL (WINAPI
*fpAddPerMachineConnection
)(LPCWSTR pServer
,
262 LPCWSTR pPrinterName
, LPCWSTR pPrintServer
, LPCWSTR pProvider
);
263 BOOL (WINAPI
*fpDeletePerMachineConnection
)(LPCWSTR pServer
,
264 LPCWSTR pPrinterName
);
265 BOOL (WINAPI
*fpEnumPerMachineConnections
)(LPCWSTR pServer
,
266 LPBYTE pPrinterEnum
, DWORD cbBuf
, LPDWORD pcbNeeded
,
268 BOOL (WINAPI
*fpXcvData
)(HANDLE hXcv
, LPCWSTR pszDataName
, PBYTE pInputData
,
269 DWORD cbInputData
, PBYTE pOutputData
, DWORD cbOutputData
,
270 PDWORD pcbOutputNeeded
, PDWORD pdwStatus
);
271 BOOL (WINAPI
*fpAddPrinterDriverEx
)(LPWSTR pName
, DWORD Level
,
272 LPBYTE pDriverInfo
, DWORD dwFileCopyFlags
);
273 BOOL (WINAPI
*fpSplReadPrinter
)(HANDLE hPrinter
, LPBYTE
*pBuf
, DWORD cbBuf
);
274 BOOL (WINAPI
*fpDriverUnloadComplete
)(LPWSTR pDriverFile
);
275 BOOL (WINAPI
*fpGetSpoolFileInfo
)(HANDLE hPrinter
, LPWSTR
*pSpoolDir
,
276 LPHANDLE phFile
, HANDLE hSpoolerProcess
, HANDLE hAppProcess
);
277 BOOL (WINAPI
*fpCommitSpoolData
)(HANDLE hPrinter
, DWORD cbCommit
);
278 BOOL (WINAPI
*fpCloseSpoolFileHandle
)(HANDLE hPrinter
);
279 BOOL (WINAPI
*fpFlushPrinter
)(HANDLE hPrinter
, LPBYTE pBuf
, DWORD cbBuf
,
280 LPDWORD pcWritten
, DWORD cSleep
);
281 DWORD (WINAPI
*fpSendRecvBidiData
)(HANDLE hPort
, LPCWSTR pAction
,
282 LPBIDI_REQUEST_CONTAINER pReqData
,
283 LPBIDI_RESPONSE_CONTAINER
*ppResData
);
284 BOOL (WINAPI
*fpAddDriverCatalog
)(HANDLE hPrinter
, DWORD dwLevel
,
285 VOID
*pvDriverInfCatInfo
, DWORD dwCatalogCopyFlags
);
286 } PRINTPROVIDOR
, *LPPRINTPROVIDOR
;
293 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
299 typedef struct _MONITOR
{
300 BOOL (WINAPI
*pfnEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
301 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
302 BOOL (WINAPI
*pfnOpenPort
)(LPWSTR pName
, PHANDLE pHandle
);
303 BOOL (WINAPI
*pfnOpenPortEx
)(LPWSTR pPortName
, LPWSTR pPrinterName
,
304 PHANDLE pHandle
, struct _MONITOR
*pMonitor
);
305 BOOL (WINAPI
*pfnStartDocPort
)(HANDLE hPort
, LPWSTR pPrinterName
,
306 DWORD JobId
, DWORD Level
, LPBYTE pDocInfo
);
307 BOOL (WINAPI
*pfnWritePort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
309 BOOL (WINAPI
*pfnReadPort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
311 BOOL (WINAPI
*pfnEndDocPort
)(HANDLE hPort
);
312 BOOL (WINAPI
*pfnClosePort
)(HANDLE hPort
);
313 BOOL (WINAPI
*pfnAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
314 BOOL (WINAPI
*pfnAddPortEx
)(LPWSTR pName
, DWORD Level
, LPBYTE lpBuffer
,
315 LPWSTR lpMonitorName
);
316 BOOL (WINAPI
*pfnConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
317 BOOL (WINAPI
*pfnDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
318 BOOL (WINAPI
*pfnGetPrinterDataFromPort
)(HANDLE hPort
, DWORD ControlID
,
319 LPWSTR pValueName
, LPWSTR lpInBuffer
, DWORD cbInBuffer
,
320 LPWSTR lpOutBuffer
, DWORD cbOutBuffer
, LPDWORD lpcbReturned
);
321 BOOL (WINAPI
*pfnSetPortTimeOuts
)(HANDLE hPort
, LPCOMMTIMEOUTS lpCTO
,
323 BOOL (WINAPI
*pfnXcvOpenPort
)(LPCWSTR pszObject
, ACCESS_MASK GrantedAccess
, PHANDLE phXcv
);
324 DWORD (WINAPI
*pfnXcvDataPort
)(HANDLE hXcv
, LPCWSTR pszDataName
,
325 PBYTE pInputData
, DWORD cbInputData
,
326 PBYTE pOutputData
, DWORD cbOutputData
, PDWORD pcbOutputNeeded
);
327 BOOL (WINAPI
*pfnXcvClosePort
)(HANDLE hXcv
);
328 } MONITOR
, *LPMONITOR
;
330 typedef struct _MONITOR2
{
332 BOOL (WINAPI
*pfnEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
333 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
334 BOOL (WINAPI
*pfnOpenPort
)(LPWSTR pName
, PHANDLE pHandle
);
335 BOOL (WINAPI
*pfnOpenPortEx
)(LPWSTR pPortName
, LPWSTR pPrinterName
,
336 PHANDLE pHandle
, struct _MONITOR2
*pMonitor2
);
337 BOOL (WINAPI
*pfnStartDocPort
)(HANDLE hPort
, LPWSTR pPrinterName
,
338 DWORD JobId
, DWORD Level
, LPBYTE pDocInfo
);
339 BOOL (WINAPI
*pfnWritePort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
341 BOOL (WINAPI
*pfnReadPort
)(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
343 BOOL (WINAPI
*pfnEndDocPort
)(HANDLE hPort
);
344 BOOL (WINAPI
*pfnClosePort
)(HANDLE hPort
);
345 BOOL (WINAPI
*pfnAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
346 BOOL (WINAPI
*pfnAddPortEx
)(LPWSTR pName
, DWORD Level
, LPBYTE lpBuffer
,
347 LPWSTR lpMonitorName
);
348 BOOL (WINAPI
*pfnConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
349 BOOL (WINAPI
*pfnDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
350 BOOL (WINAPI
*pfnGetPrinterDataFromPort
)(HANDLE hPort
, DWORD ControlID
,
351 LPWSTR pValueName
, LPWSTR lpInBuffer
, DWORD cbInBuffer
,
352 LPWSTR lpOutBuffer
, DWORD cbOutBuffer
, LPDWORD lpcbReturned
);
353 BOOL (WINAPI
*pfnSetPortTimeOuts
)(HANDLE hPort
, LPCOMMTIMEOUTS lpCTO
,
355 BOOL (WINAPI
*pfnXcvOpenPort
)(HANDLE hMonitor
, LPCWSTR pszObject
,
356 ACCESS_MASK GrantedAccess
, PHANDLE phXcv
);
357 DWORD (WINAPI
*pfnXcvDataPort
)(HANDLE hXcv
, LPCWSTR pszDataName
,
358 PBYTE pInputData
, DWORD cbInputData
,
359 PBYTE pOutputData
, DWORD cbOutputData
, PDWORD pcbOutputNeeded
);
360 BOOL (WINAPI
*pfnXcvClosePort
)(HANDLE hXcv
);
361 /* Additions from MONITOR to MONITOR2 */
362 VOID (WINAPI
*pfnShutdown
)(HANDLE hMonitor
);
363 DWORD (WINAPI
*pfnSendRecvBidiDataFromPort
)(HANDLE hPort
, DWORD dwAccessBit
,
364 LPCWSTR pAction
, PBIDI_REQUEST_CONTAINER pReqData
,
365 PBIDI_RESPONSE_CONTAINER
*ppResData
);
366 } MONITOR2
, *LPMONITOR2
, *PMONITOR2
;
368 typedef struct _MONITOREX
{
371 } MONITOREX
, *LPMONITOREX
;
373 typedef struct _MONITORREG
{
375 LONG (WINAPI
*fpCreateKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, DWORD dwOptions
,
376 REGSAM samDesired
, PSECURITY_ATTRIBUTES pSecurityAttributes
,
377 PHANDLE phckResult
, PDWORD pdwDisposition
, HANDLE hSpooler
);
378 LONG (WINAPI
*fpOpenKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, REGSAM samDesired
,
379 PHANDLE phkResult
, HANDLE hSpooler
);
380 LONG (WINAPI
*fpCloseKey
)(HANDLE hcKey
, HANDLE hSpooler
);
381 LONG (WINAPI
*fpDeleteKey
)(HANDLE hcKey
, LPCWSTR pszSubKey
, HANDLE hSpooler
);
382 LONG (WINAPI
*fpEnumKey
)(HANDLE hcKey
, DWORD dwIndex
, LPWSTR pszName
,
383 PDWORD pcchName
, PFILETIME pftLastWriteTime
, HANDLE hSpooler
);
384 LONG (WINAPI
*fpQueryInfoKey
)(HANDLE hcKey
, PDWORD pcSubKeys
, PDWORD pcbKey
,
385 PDWORD pcValues
, PDWORD pcbValue
, PDWORD pcbData
,
386 PDWORD pcbSecurityDescriptor
, PFILETIME pftLastWriteTime
,
388 LONG (WINAPI
*fpSetValue
)(HANDLE hcKey
, LPCWSTR pszValue
, DWORD dwType
,
389 const BYTE
* pData
, DWORD cbData
, HANDLE hSpooler
);
390 LONG (WINAPI
*fpDeleteValue
)(HANDLE hcKey
, LPCWSTR pszValue
, HANDLE hSpooler
);
391 LONG (WINAPI
*fpEnumValue
)(HANDLE hcKey
, DWORD dwIndex
, LPWSTR pszValue
,
392 PDWORD pcbValue
, PDWORD pType
, PBYTE pData
, PDWORD pcbData
,
394 LONG (WINAPI
*fpQueryValue
)(HANDLE hcKey
, LPCWSTR pszValue
, PDWORD pType
,
395 PBYTE pData
, PDWORD pcbData
, HANDLE hSpooler
);
396 } MONITORREG
, *PMONITORREG
;
398 typedef struct _MONITORINIT
{
401 HANDLE hckRegistryRoot
;
402 PMONITORREG pMonitorReg
;
404 } MONITORINIT
, *PMONITORINIT
;
406 typedef struct _MONITORUI
{
407 DWORD dwMonitorUISize
;
408 BOOL (WINAPI
*pfnAddPortUI
)(PCWSTR pszServer
, HWND hWnd
,
409 PCWSTR pszPortNameIn
, PWSTR
*ppszPortNameOut
);
410 BOOL (WINAPI
*pfnConfigurePortUI
)(PCWSTR pName
, HWND hWnd
, PCWSTR pPortName
);
411 BOOL (WINAPI
*pfnDeletePortUI
)(PCWSTR pszServer
, HWND hWnd
, PCWSTR pszPortName
);
412 }MONITORUI
, *PMONITORUI
;
414 typedef struct _PRINTPROCESSOROPENDATA
{
418 LPWSTR pDocumentName
;
422 } PRINTPROCESSOROPENDATA
, *LPPRINTPROCESSOROPENDATA
, *PPRINTPROCESSOROPENDATA
;
426 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
429 typedef struct _PRINTPROVIDOR
{
430 BOOL (WINAPI
*fpOpenPrinter
)(LPWSTR lpPrinterName
, HANDLE
*phPrinter
,
431 LPPRINTER_DEFAULTSW pDefault
);
432 BOOL (WINAPI
*fpSetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
433 LPBYTE pJob
, DWORD Command
);
434 BOOL (WINAPI
*fpGetJob
)(HANDLE hPrinter
, DWORD JobID
, DWORD Level
,
435 LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
);
436 BOOL (WINAPI
*fpEnumJobs
)(HANDLE hPrinter
, DWORD FirstJob
, DWORD NoJobs
,
437 DWORD Level
, LPBYTE pJob
, DWORD cbBuf
, LPDWORD pcbNeeded
,
439 HANDLE (WINAPI
*fpAddPrinter
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
);
440 BOOL (WINAPI
*fpDeletePrinter
)(HANDLE hPrinter
);
441 BOOL (WINAPI
*fpSetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
443 BOOL (WINAPI
*fpGetPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pPrinter
,
444 DWORD cbBuf
, LPDWORD pcbNeeded
);
445 BOOL (WINAPI
*fpEnumPrinters
)(DWORD dwType
, LPWSTR lpszName
, DWORD dwLevel
,
446 LPBYTE lpbPrinters
, DWORD cbBuf
, LPDWORD lpdwNeeded
,
447 LPDWORD lpdwReturned
);
448 BOOL (WINAPI
*fpAddPrinterDriver
)(LPWSTR pName
, DWORD Level
,
450 BOOL (WINAPI
*fpEnumPrinterDrivers
)(LPWSTR pName
, LPWSTR pEnvironment
,
451 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
452 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
453 BOOL (WINAPI
*fpGetPrinterDriver
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
454 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
,
456 BOOL (WINAPI
*fpGetPrinterDriverDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
457 DWORD Level
, LPBYTE pDriverDirectory
, DWORD cbBuf
,
459 BOOL (WINAPI
*fpDeletePrinterDriver
)(LPWSTR pName
, LPWSTR pEnvironment
,
461 BOOL (WINAPI
*fpAddPrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
462 LPWSTR pPathName
, LPWSTR pPrintProcessorName
);
463 BOOL (WINAPI
*fpEnumPrintProcessors
)(LPWSTR pName
, LPWSTR pEnvironment
,
464 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
465 LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
466 BOOL (WINAPI
*fpGetPrintProcessorDirectory
)(LPWSTR pName
, LPWSTR pEnvironment
,
467 DWORD Level
, LPBYTE pPrintProcessorInfo
, DWORD cbBuf
,
469 BOOL (WINAPI
*fpDeletePrintProcessor
)(LPWSTR pName
, LPWSTR pEnvironment
,
470 LPWSTR pPrintProcessorName
);
471 BOOL (WINAPI
*fpEnumPrintProcessorDatatypes
)(LPWSTR pName
,
472 LPWSTR pPrintProcessorName
, DWORD Level
, LPBYTE pDatatypes
,
473 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcbReturned
);
474 DWORD (WINAPI
*fpStartDocPrinter
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pDocInfo
);
475 BOOL (WINAPI
*fpStartPagePrinter
)(HANDLE hPrinter
);
476 BOOL (WINAPI
*fpWritePrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
478 BOOL (WINAPI
*fpEndPagePrinter
)(HANDLE hPrinter
);
479 BOOL (WINAPI
*fpAbortPrinter
)(HANDLE hPrinter
);
480 BOOL (WINAPI
*fpReadPrinter
)(HANDLE hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
481 LPDWORD pNoBytesRead
);
482 BOOL (WINAPI
*fpEndDocPrinter
)(HANDLE hPrinter
);
483 BOOL (WINAPI
*fpAddJob
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pData
,
484 DWORD cbBuf
, LPDWORD pcbNeeded
);
485 BOOL (WINAPI
*fpScheduleJob
)(HANDLE hPrinter
, DWORD JobID
);
486 DWORD (WINAPI
*fpGetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
487 LPDWORD pType
, LPBYTE pData
, DWORD nSize
, LPDWORD pcbNeeded
);
488 DWORD (WINAPI
*fpSetPrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
,
489 DWORD Type
, LPBYTE pData
, DWORD cbData
);
490 DWORD (WINAPI
*fpWaitForPrinterChange
)(HANDLE hPrinter
, DWORD Flags
);
491 BOOL (WINAPI
*fpClosePrinter
)(HANDLE phPrinter
);
492 BOOL (WINAPI
*fpAddForm
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
);
493 BOOL (WINAPI
*fpDeleteForm
)(HANDLE hPrinter
, LPWSTR pFormName
);
494 BOOL (WINAPI
*fpGetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
495 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
);
496 BOOL (WINAPI
*fpSetForm
)(HANDLE hPrinter
, LPWSTR pFormName
, DWORD Level
,
498 BOOL (WINAPI
*fpEnumForms
)(HANDLE hPrinter
, DWORD Level
, LPBYTE pForm
,
499 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
500 BOOL (WINAPI
*fpEnumMonitors
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
,
501 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
502 BOOL (WINAPI
*fpEnumPorts
)(LPWSTR pName
, DWORD Level
, LPBYTE pPorts
,
503 DWORD cbBuf
, LPDWORD pcbNeeded
, LPDWORD pcReturned
);
504 BOOL (WINAPI
*fpAddPort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pMonitorName
);
505 BOOL (WINAPI
*fpConfigurePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
506 BOOL (WINAPI
*fpDeletePort
)(LPWSTR pName
, HWND hWnd
, LPWSTR pPortName
);
507 HANDLE (WINAPI
*fpCreatePrinterIC
)(HANDLE hPrinter
, LPDEVMODEW pDevMode
);
508 BOOL (WINAPI
*fpPlayGdiScriptOnPrinterIC
)(HANDLE hPrinterIC
, LPBYTE pIn
,
509 DWORD cIn
, LPBYTE pOut
, DWORD cOut
, DWORD ul
);
510 BOOL (WINAPI
*fpDeletePrinterIC
)(HANDLE hPrinterIC
);
511 BOOL (WINAPI
*fpAddPrinterConnection
)(LPWSTR pName
);
512 BOOL (WINAPI
*fpDeletePrinterConnection
)(LPWSTR pName
);
513 DWORD (WINAPI
*fpPrinterMessageBox
)(HANDLE hPrinter
, DWORD Error
, HWND hWnd
,
514 LPWSTR pText
, LPWSTR pCaption
, DWORD dwType
);
515 BOOL (WINAPI
*fpAddMonitor
)(LPWSTR pName
, DWORD Level
, LPBYTE pMonitors
);
516 BOOL (WINAPI
*fpDeleteMonitor
)(LPWSTR pName
, LPWSTR pEnvironment
,
517 LPWSTR pMonitorName
);
518 BOOL (WINAPI
*fpResetPrinter
)(HANDLE hPrinter
, LPPRINTER_DEFAULTSW pDefault
);
519 BOOL (WINAPI
*fpGetPrinterDriverEx
)(HANDLE hPrinter
, LPWSTR pEnvironment
,
520 DWORD Level
, LPBYTE pDriverInfo
, DWORD cbBuf
, LPDWORD pcbNeeded
,
521 DWORD dwClientMajorVersion
, DWORD dwClientMinorVersion
,
522 PDWORD pdwServerMajorVersion
, PDWORD pdwServerMinorVersion
);
523 HANDLE (WINAPI
*fpFindFirstPrinterChangeNotification
)(HANDLE hPrinter
,
524 DWORD fdwFlags
, DWORD fdwOptions
, LPVOID pPrinterNotifyOptions
);
525 BOOL (WINAPI
*fpFindClosePrinterChangeNotification
)(HANDLE hChange
);
526 BOOL (WINAPI
*fpAddPortEx
)(HANDLE hMonitor
, LPWSTR pName
, DWORD Level
,
527 LPBYTE lpBuffer
, LPWSTR lpMonitorName
);
528 BOOL (WINAPI
*fpShutDown
)(LPVOID pvReserved
);
529 BOOL (WINAPI
*fpRefreshPrinterChangeNotification
)(HANDLE hPrinter
,
530 DWORD Reserved
, PVOID pvReserved
, PVOID pPrinterNotifyInfo
);
531 BOOL (WINAPI
*fpOpenPrinterEx
)(LPWSTR pPrinterName
, LPHANDLE phPrinter
,
532 LPPRINTER_DEFAULTSW pDefault
, LPBYTE pClientInfo
, DWORD Level
);
533 HANDLE (WINAPI
*fpAddPrinterEx
)(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
,
534 LPBYTE pClientInfo
, DWORD ClientInfoLevel
);
535 BOOL (WINAPI
*fpSetPort
)(LPWSTR pName
, LPWSTR pPortName
, DWORD dwLevel
,
537 DWORD (WINAPI
*fpEnumPrinterData
)( HANDLE hPrinter
, DWORD dwIndex
,
538 LPWSTR pValueName
, DWORD cbValueName
, LPDWORD pcbValueName
,
539 LPDWORD pType
, LPBYTE pData
, DWORD cbData
, LPDWORD pcbData
);
540 DWORD (WINAPI
*fpDeletePrinterData
)(HANDLE hPrinter
, LPWSTR pValueName
);
541 DWORD (WINAPI
*fpClusterSplOpen
)(LPCWSTR pszServer
, LPCWSTR pszResource
,
542 PHANDLE phSpooler
, LPCWSTR pszName
, LPCWSTR pszAddress
);
543 DWORD (WINAPI
*fpClusterSplClose
)(HANDLE hSpooler
);
544 DWORD (WINAPI
*fpClusterSplIsAlive
)(HANDLE hSpooler
);
545 DWORD (WINAPI
*fpSetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
546 LPCWSTR pValueName
, DWORD Type
, LPBYTE pData
, DWORD cbData
);
547 DWORD (WINAPI
*fpGetPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
548 LPCWSTR pValueName
, LPDWORD pType
, LPBYTE pData
, DWORD nSize
,
550 DWORD (WINAPI
*fpEnumPrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
551 LPBYTE pEnumValues
, DWORD cbEnumValues
, LPDWORD pcbEnumValues
,
552 LPDWORD pnEnumValues
);
553 DWORD (WINAPI
*fpEnumPrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
554 LPWSTR pSubkey
, DWORD cbSubkey
, LPDWORD pcbSubkey
);
555 DWORD (WINAPI
*fpDeletePrinterDataEx
)(HANDLE hPrinter
, LPCWSTR pKeyName
,
557 DWORD (WINAPI
*fpDeletePrinterKey
)(HANDLE hPrinter
, LPCWSTR pKeyName
);
558 BOOL (WINAPI
*fpSeekPrinter
)(HANDLE hPrinter
, LARGE_INTEGER liDistanceToMove
,
559 PLARGE_INTEGER pliNewPointer
, DWORD dwMoveMethod
, BOOL bWrite
);
560 BOOL (WINAPI
*fpDeletePrinterDriverEx
)(LPWSTR pName
, LPWSTR pEnvironment
,
561 LPWSTR pDriverName
, DWORD dwDeleteFlag
, DWORD dwVersionNum
);
562 BOOL (WINAPI
*fpAddPerMachineConnection
)(LPCWSTR pServer
,
563 LPCWSTR pPrinterName
, LPCWSTR pPrintServer
, LPCWSTR pProvider
);
564 BOOL (WINAPI
*fpDeletePerMachineConnection
)(LPCWSTR pServer
,
565 LPCWSTR pPrinterName
);
566 BOOL (WINAPI
*fpEnumPerMachineConnections
)(LPCWSTR pServer
,
567 LPBYTE pPrinterEnum
, DWORD cbBuf
, LPDWORD pcbNeeded
,
569 BOOL (WINAPI
*fpXcvData
)(HANDLE hXcv
, LPCWSTR pszDataName
, PBYTE pInputData
,
570 DWORD cbInputData
, PBYTE pOutputData
, DWORD cbOutputData
,
571 PDWORD pcbOutputNeeded
, PDWORD pdwStatus
);
572 BOOL (WINAPI
*fpAddPrinterDriverEx
)(LPWSTR pName
, DWORD Level
,
573 LPBYTE pDriverInfo
, DWORD dwFileCopyFlags
);
574 BOOL (WINAPI
*fpSplReadPrinter
)(HANDLE hPrinter
, LPBYTE
*pBuf
, DWORD cbBuf
);
575 BOOL (WINAPI
*fpDriverUnloadComplete
)(LPWSTR pDriverFile
);
576 BOOL (WINAPI
*fpGetSpoolFileInfo
)(HANDLE hPrinter
, LPWSTR
*pSpoolDir
,
577 LPHANDLE phFile
, HANDLE hSpoolerProcess
, HANDLE hAppProcess
);
578 BOOL (WINAPI
*fpCommitSpoolData
)(HANDLE hPrinter
, DWORD cbCommit
);
579 BOOL (WINAPI
*fpCloseSpoolFileHandle
)(HANDLE hPrinter
);
580 BOOL (WINAPI
*fpFlushPrinter
)(HANDLE hPrinter
, LPBYTE pBuf
, DWORD cbBuf
,
581 LPDWORD pcWritten
, DWORD cSleep
);
582 DWORD (WINAPI
*fpSendRecvBidiData
)(HANDLE hPort
, LPCWSTR pAction
,
583 LPBIDI_REQUEST_CONTAINER pReqData
,
584 LPBIDI_RESPONSE_CONTAINER
*ppResData
);
585 BOOL (WINAPI
*fpAddDriverCatalog
)(HANDLE hPrinter
, DWORD dwLevel
,
586 VOID
*pvDriverInfCatInfo
, DWORD dwCatalogCopyFlags
);
587 } PRINTPROVIDOR
, *LPPRINTPROVIDOR
;
591 HANDLE WINAPI
CreatePrinterIC(HANDLE hPrinter
, LPDEVMODEW pDevMode
);
592 BOOL WINAPI
PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC
, LPBYTE pIn
,
593 DWORD cIn
, LPBYTE pOut
, DWORD cOut
, DWORD ul
);
594 BOOL WINAPI
DeletePrinterIC(HANDLE hPrinterIC
);
595 BOOL WINAPI
DevQueryPrint(HANDLE hPrinter
, LPDEVMODEW pDevMode
, DWORD
*pResID
);
597 /* Security and Access */
598 HANDLE WINAPI
RevertToPrinterSelf(VOID
);
599 BOOL WINAPI
ImpersonatePrinterClient(HANDLE hToken
);
600 BOOL WINAPI
OpenPrinterToken(PHANDLE phToken
);
601 BOOL WINAPI
SetPrinterToken(HANDLE hToken
);
602 BOOL WINAPI
ClosePrinterToken(HANDLE hToken
);
605 BOOL WINAPI
ReplyPrinterChangeNotification(HANDLE hNotify
, DWORD fdwFlags
,
606 PDWORD pdwResult
, PVOID pPrinterNotifyInfo
);
607 BOOL WINAPI
PartialReplyPrinterChangeNotification(HANDLE hNotify
,
608 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
);
609 PPRINTER_NOTIFY_INFO
RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData
);
610 BOOL WINAPI
RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo
);
611 BOOL WINAPI
AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest
,
612 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
, DWORD fdwFlags
);
613 DWORD WINAPI
CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter
,
614 DWORD fdwFlags
, DWORD fdwOptions
, HANDLE hNotify
, PVOID pvReserved
);
616 /* Port monitor / Language monitor / Print monitor */
617 LPMONITOR2 WINAPI
InitializePrintMonitor2(PMONITORINIT pMonitorInit
,
619 PMONITORUI WINAPI
InitializePrintMonitorUI(VOID
);
620 LPMONITOREX WINAPI
InitializePrintMonitor(LPWSTR pRegistryRoot
);
621 BOOL WINAPI
InitializeMonitorEx(LPWSTR pRegistryRoot
, LPMONITOR pMonitor
);
622 BOOL WINAPI
InitializeMonitor(LPWSTR pRegistryRoot
);
624 BOOL WINAPI
OpenPort(LPWSTR pName
, PHANDLE pHandle
);
625 BOOL WINAPI
WritePort(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuf
,
627 BOOL WINAPI
ReadPort(HANDLE hPort
, LPBYTE pBuffer
, DWORD cbBuffer
,
629 BOOL WINAPI
ClosePort(HANDLE hPort
);
631 /* Print processor */
632 HANDLE WINAPI
OpenPrintProcessor(LPWSTR pPrinterName
,
633 PPRINTPROCESSOROPENDATA pPrintProcessorOpenData
);
634 BOOL WINAPI
PrintDocumentOnPrintProcessor(HANDLE hPrintProcessor
,
635 LPWSTR pDocumentName
);
636 BOOL WINAPI
ClosePrintProcessor(HANDLE hPrintProcessor
);
637 BOOL WINAPI
ControlPrintProcessor(HANDLE hPrintProcessor
, DWORD Command
);
638 BOOL WINAPI
InstallPrintProcessor(HWND hWnd
);
641 BOOL WINAPI
InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor
,
642 DWORD cbPrintProvidor
, LPWSTR pFullRegistryPath
);
643 BOOL WINAPI
ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter
,
644 DWORD fdwFlags
, DWORD fdwOptions
, HANDLE hNotify
,
645 PVOID pvReserved0
, PVOID pvReserved1
);
646 BOOL WINAPI
ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter
);
649 BOOL WINAPI
SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter
,
650 DWORD fdwFlags
, DWORD fdwOptions
, PHANDLE phEvent
,
651 PVOID pPrinterNotifyOptions
, PVOID pvReserved
);
652 BOOL WINAPI
SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter
,
653 LPDWORD pfdwChange
, PVOID pvReserved0
, PVOID ppPrinterNotifyInfo
);
654 VOID WINAPI
SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo
);
655 BOOL WINAPI
SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter
);