Sync with trunk head (part 1 or 2)
[reactos.git] / include / ddk / winsplp.h
1 #pragma once
2
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6
7 /* DEFINES */
8
9 #define PRINTER_NOTIFY_STATUS_ENDPOINT 1
10 #define PRINTER_NOTIFY_STATUS_POLL 2
11 #define PRINTER_NOTIFY_STATUS_INFO 4
12
13 #define ROUTER_UNKNOWN 0
14 #define ROUTER_SUCCESS 1
15 #define ROUTER_STOP_ROUTING 2
16
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;
29 short dmPrintQuality;
30 short dmYResolution;
31 } ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3;
32 #endif
33 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
34
35 #if (NTDDI_VERSION >= NTDDI_VISTA)
36
37 #ifndef __ATTRIBUTE_INFO_4__
38 #define __ATTRIBUTE_INFO_4__
39
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;
49 short dmPrintQuality;
50 short dmYResolution;
51 DWORD dwDuplexFlags;
52 DWORD dwNupDirection;
53 DWORD dwBookletFlags;
54 DWORD dwScalingPercentX;
55 DWORD dwScalingPercentY;
56 } ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4;
57
58 #define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001)
59 #define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1)
60
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)
65
66 #define BOOKLET_EDGE_LEFT 0x00000000
67 #define BOOKLET_EDGE_RIGHT 0x00000001
68
69 #endif /* __ATTRIBUTE_INFO_4__ */
70
71 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
72
73 typedef struct _PRINTER_NOTIFY_INIT {
74 DWORD Size;
75 DWORD Reserved;
76 DWORD PollTime;
77 } PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT;
78
79 typedef struct _SPLCLIENT_INFO_1 {
80 DWORD dwSize;
81 LPWSTR pMachineName;
82 LPWSTR pUserName;
83 DWORD dwBuildNum;
84 DWORD dwMajorVersion;
85 DWORD dwMinorVersion;
86 WORD wProcessorArchitecture;
87 } SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1;
88
89 typedef struct _SPLCLIENT_INFO_2_V1{
90 ULONG_PTR hSplPrinter;
91 } SPLCLIENT_INFO_2_W2K;
92
93 typedef struct _SPLCLIENT_INFO_2_V2{
94 #ifdef _WIN64
95 DWORD64 hSplPrinter;
96 #else
97 DWORD32 hSplPrinter;
98 #endif
99 } SPLCLIENT_INFO_2_WINXP;
100
101 typedef struct _SPLCLIENT_INFO_2_V3{
102 UINT64 hSplPrinter;
103 } SPLCLIENT_INFO_2_LONGHORN;
104
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;
109 #else
110 typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
111 #endif
112
113 #if (NTDDI_VERSION >= NTDDI_VISTA)
114 typedef struct _SPLCLIENT_INFO_3 {
115 UINT cbSize;
116 DWORD dwFlags;
117 DWORD dwSize;
118 PWSTR pMachineName;
119 PWSTR pUserName;
120 DWORD dwBuildNum;
121 DWORD dwMajorVersion;
122 DWORD dwMinorVersion;
123 WORD wProcessorArchitecture;
124 UINT64 hSplPrinter;
125 } SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3;
126 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
127
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,
137 LPDWORD pcReturned);
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,
141 DWORD Command);
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,
148 LPBYTE pDriverInfo);
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,
154 LPDWORD pcbNeeded);
155 BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
156 DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf,
157 LPDWORD pcbNeeded);
158 BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
159 LPWSTR pDriverName);
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,
167 LPDWORD pcbNeeded);
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,
176 LPDWORD pcWritten);
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,
196 LPBYTE pForm);
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,
235 LPBYTE pPortInfo);
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,
248 LPDWORD pcbNeeded);
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,
255 LPCWSTR pValueName);
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,
267 LPDWORD pcReturned);
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;
287
288
289
290
291
292 /*
293 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
294 */
295
296
297 /* TYPES */
298
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,
308 LPDWORD pcbWritten);
309 BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
310 LPDWORD pcbRead);
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,
322 DWORD reserved);
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;
329
330 typedef struct _MONITOR2 {
331 DWORD cbSize;
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,
340 LPDWORD pcbWritten);
341 BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
342 LPDWORD pcbRead);
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,
354 DWORD reserved);
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;
367
368 typedef struct _MONITOREX {
369 DWORD dwMonitorSize;
370 MONITOR Monitor;
371 } MONITOREX, *LPMONITOREX;
372
373 typedef struct _MONITORREG {
374 DWORD cbSize;
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,
387 HANDLE hSpooler);
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,
393 HANDLE hSpooler);
394 LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType,
395 PBYTE pData, PDWORD pcbData, HANDLE hSpooler);
396 } MONITORREG, *PMONITORREG;
397
398 typedef struct _MONITORINIT {
399 DWORD cbSize;
400 HANDLE hSpooler;
401 HANDLE hckRegistryRoot;
402 PMONITORREG pMonitorReg;
403 BOOL bLocal;
404 } MONITORINIT, *PMONITORINIT;
405
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;
413
414 typedef struct _PRINTPROCESSOROPENDATA {
415 PDEVMODEW pDevMode;
416 LPWSTR pDatatype;
417 LPWSTR pParameters;
418 LPWSTR pDocumentName;
419 DWORD JobId;
420 LPWSTR pOutputFile;
421 LPWSTR pPrinterName;
422 } PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA;
423
424
425 /*
426 * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
427 */
428
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,
438 LPDWORD pcReturned);
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,
442 DWORD Command);
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,
449 LPBYTE pDriverInfo);
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,
455 LPDWORD pcbNeeded);
456 BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
457 DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf,
458 LPDWORD pcbNeeded);
459 BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
460 LPWSTR pDriverName);
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,
468 LPDWORD pcbNeeded);
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,
477 LPDWORD pcWritten);
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,
497 LPBYTE pForm);
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,
536 LPBYTE pPortInfo);
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,
549 LPDWORD pcbNeeded);
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,
556 LPCWSTR pValueName);
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,
568 LPDWORD pcReturned);
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;
588
589 /* DECLARATIONS */
590
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);
596
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);
603
604 /* Notification */
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);
615
616 /* Port monitor / Language monitor / Print monitor */
617 LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit,
618 PHANDLE phMonitor);
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);
623
624 BOOL WINAPI OpenPort(LPWSTR pName, PHANDLE pHandle);
625 BOOL WINAPI WritePort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
626 LPDWORD pcbWritten);
627 BOOL WINAPI ReadPort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
628 LPDWORD pcbRead);
629 BOOL WINAPI ClosePort(HANDLE hPort);
630
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);
639
640 /* Print provider */
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);
647
648 /* Spooler */
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);
656
657 #ifdef __cplusplus
658 } /* extern "C" */
659 #endif