source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/winsplp.h@ 1170

Last change on this file since 1170 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 33.0 KB
Line 
1/*
2 * winsplp.h
3 *
4 * This file is part of the ReactOS PSDK package.
5 *
6 * Contributors:
7 * Created by Amine Khaldi.
8 *
9 * THIS SOFTWARE IS NOT COPYRIGHTED
10 *
11 * This source code is offered for use in the public domain. You may
12 * use, modify or distribute it freely.
13 *
14 * This code is distributed in the hope that it will be useful but
15 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
16 * DISCLAIMED. This includes but is not limited to warranties of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 *
19 */
20
21#pragma once
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#if (STRICT && (NTDDI_VERSION >= NTDDI_VISTA))
28#define HKEYMONITOR HKEY
29#else
30#define HKEYMONITOR HANDLE
31#endif
32
33#define PRINTER_NOTIFY_STATUS_ENDPOINT 1
34#define PRINTER_NOTIFY_STATUS_POLL 2
35#define PRINTER_NOTIFY_STATUS_INFO 4
36
37#define ROUTER_UNKNOWN 0
38#define ROUTER_SUCCESS 1
39#define ROUTER_STOP_ROUTING 2
40
41#if (NTDDI_VERSION >= NTDDI_WINXP)
42#define MONITOR2_SIZE_WIN2K (sizeof(DWORD) + (sizeof(PVOID)*18))
43#endif
44
45#define COPYFILE_EVENT_SET_PRINTER_DATAEX 1
46#define COPYFILE_EVENT_DELETE_PRINTER 2
47#define COPYFILE_EVENT_ADD_PRINTER_CONNECTION 3
48#define COPYFILE_EVENT_DELETE_PRINTER_CONNECTION 4
49#define COPYFILE_EVENT_FILES_CHANGED 5
50
51#define COPYFILE_FLAG_CLIENT_SPOOLER 0x00000001
52#define COPYFILE_FLAG_SERVER_SPOOLER 0x00000002
53
54#define PRINTER_NOTIFY_INFO_DATA_COMPACT 1
55
56typedef struct _PRINTER_NOTIFY_INIT {
57 DWORD Size;
58 DWORD Reserved;
59 DWORD PollTime;
60} PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT;
61
62typedef struct _SPLCLIENT_INFO_1 {
63 DWORD dwSize;
64 LPWSTR pMachineName;
65 LPWSTR pUserName;
66 DWORD dwBuildNum;
67 DWORD dwMajorVersion;
68 DWORD dwMinorVersion;
69 WORD wProcessorArchitecture;
70} SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1;
71
72typedef struct _SPLCLIENT_INFO_2_V1{
73 ULONG_PTR hSplPrinter;
74} SPLCLIENT_INFO_2_W2K;
75
76typedef struct _SPLCLIENT_INFO_2_V2{
77#ifdef _WIN64
78 DWORD64 hSplPrinter;
79#else
80 DWORD32 hSplPrinter;
81#endif
82} SPLCLIENT_INFO_2_WINXP;
83
84typedef struct _SPLCLIENT_INFO_2_V3{
85 UINT64 hSplPrinter;
86} SPLCLIENT_INFO_2_LONGHORN;
87
88typedef struct _PRINTPROVIDOR {
89 WINBOOL (WINAPI *fpOpenPrinter)(PWSTR lpPrinterName, HANDLE *phPrinter,
90 PPRINTER_DEFAULTSW pDefault);
91 WINBOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
92 LPBYTE pJob, DWORD Command);
93 WINBOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
94 LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded);
95 WINBOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
96 DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
97 LPDWORD pcReturned);
98 HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
99 WINBOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter);
100 WINBOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
101 DWORD Command);
102 WINBOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
103 DWORD cbBuf, LPDWORD pcbNeeded);
104 WINBOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel,
105 LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded,
106 LPDWORD lpdwReturned);
107 WINBOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
108 WINBOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment,
109 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
110 LPDWORD pcbNeeded, LPDWORD pcbReturned);
111 WINBOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment,
112 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
113 LPDWORD pcbNeeded);
114 WINBOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
115 DWORD Level, LPBYTE pDriverDirectory,
116 DWORD cbBuf, LPDWORD pcbNeeded);
117 WINBOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
118 LPWSTR pDriverName);
119 WINBOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
120 LPWSTR pPathName, LPWSTR pPrintProcessorName);
121 WINBOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment,
122 DWORD Level, LPBYTE pPrintProcessorInfo,
123 DWORD cbBuf, LPDWORD pcbNeeded,
124 LPDWORD pcbReturned);
125 WINBOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment,
126 DWORD Level, LPBYTE pPrintProcessorInfo,
127 DWORD cbBuf, LPDWORD pcbNeeded);
128 WINBOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
129 LPWSTR pPrintProcessorName);
130 WINBOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName,
131 LPWSTR pPrintProcessorName,
132 DWORD Level, LPBYTE pDatatypes,
133 DWORD cbBuf, LPDWORD pcbNeeded,
134 LPDWORD pcbReturned);
135 DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
136 WINBOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter);
137 WINBOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
138 LPDWORD pcWritten);
139 WINBOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter);
140 WINBOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter);
141 WINBOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
142 LPDWORD pNoBytesRead);
143 WINBOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter);
144 WINBOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData,
145 DWORD cbBuf, LPDWORD pcbNeeded);
146 WINBOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID);
147 DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
148 LPDWORD pType, LPBYTE pData, DWORD nSize,
149 LPDWORD pcbNeeded);
150 DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
151 DWORD Type, LPBYTE pData, DWORD cbData);
152 DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
153 WINBOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter);
154 WINBOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
155 WINBOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName);
156 WINBOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
157 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
158 WINBOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
159 LPBYTE pForm);
160 WINBOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm,
161 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
162 WINBOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
163 DWORD cbBuf, LPDWORD pcbNeeded,
164 LPDWORD pcReturned);
165 WINBOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
166 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
167 WINBOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
168 WINBOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
169 WINBOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
170 HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode);
171 WINBOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn,
172 DWORD cIn, LPBYTE pOut, DWORD cOut,
173 DWORD ul);
174 WINBOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC);
175 WINBOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName);
176 WINBOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName);
177 DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd,
178 LPWSTR pText, LPWSTR pCaption,
179 DWORD dwType);
180 WINBOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
181 WINBOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment,
182 LPWSTR pMonitorName);
183 WINBOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
184 WINBOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment,
185 DWORD Level, LPBYTE pDriverInfo,
186 DWORD cbBuf, LPDWORD pcbNeeded,
187 DWORD dwClientMajorVersion,
188 DWORD dwClientMinorVersion,
189 PDWORD pdwServerMajorVersion,
190 PDWORD pdwServerMinorVersion);
191 HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter,
192 DWORD fdwFlags,
193 DWORD fdwOptions,
194 LPVOID pPrinterNotifyOptions);
195 WINBOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange);
196 WINBOOL (WINAPI *fpAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
197 LPWSTR lpMonitorName);
198 WINBOOL (WINAPI *fpShutDown)(LPVOID pvReserved);
199 WINBOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
200 DWORD Reserved,
201 PVOID pvReserved,
202 PVOID pPrinterNotifyInfo);
203 WINBOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter,
204 LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo,
205 DWORD Level);
206 HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter,
207 LPBYTE pClientInfo, DWORD ClientInfoLevel);
208 WINBOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
209 LPBYTE pPortInfo);
210 DWORD (WINAPI *fpEnumPrinterData)(HANDLE hPrinter, DWORD dwIndex,
211 LPWSTR pValueName, DWORD cbValueName,
212 LPDWORD pcbValueName, LPDWORD pType,
213 LPBYTE pData, DWORD cbData, LPDWORD pcbData);
214 DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName);
215 DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource,
216 PHANDLE phSpooler, LPCWSTR pszName,
217 LPCWSTR pszAddress);
218 DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler);
219 DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler);
220 DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
221 LPCWSTR pValueName, DWORD Type,
222 LPBYTE pData, DWORD cbData);
223 DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
224 LPCWSTR pValueName, LPDWORD pType,
225 LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
226 DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
227 LPBYTE pEnumValues, DWORD cbEnumValues,
228 LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
229 DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName,
230 LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey);
231 DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
232 LPCWSTR pValueName);
233 DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName);
234 WINBOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove,
235 PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod,
236 WINBOOL bWrite);
237 WINBOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment,
238 LPWSTR pDriverName, DWORD dwDeleteFlag,
239 DWORD dwVersionNum);
240 WINBOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer,
241 LPCWSTR pPrinterName, LPCWSTR pPrintServer,
242 LPCWSTR pProvider);
243 WINBOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer,
244 LPCWSTR pPrinterName);
245 WINBOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer,
246 LPBYTE pPrinterEnum, DWORD cbBuf,
247 LPDWORD pcbNeeded,
248 LPDWORD pcReturned);
249 WINBOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
250 DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
251 PDWORD pcbOutputNeeded, PDWORD pdwStatus);
252 WINBOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level,
253 LPBYTE pDriverInfo, DWORD dwFileCopyFlags);
254 WINBOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf);
255 WINBOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile);
256 WINBOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir,
257 LPHANDLE phFile, HANDLE hSpoolerProcess,
258 HANDLE hAppProcess);
259 WINBOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit);
260 WINBOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter);
261 WINBOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf,
262 LPDWORD pcWritten, DWORD cSleep);
263 DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction,
264 LPBIDI_REQUEST_CONTAINER pReqData,
265 LPBIDI_RESPONSE_CONTAINER *ppResData);
266 WINBOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel,
267 VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags);
268} PRINTPROVIDOR, *LPPRINTPROVIDOR;
269
270typedef struct _PRINTPROCESSOROPENDATA {
271 PDEVMODEW pDevMode;
272 LPWSTR pDatatype;
273 LPWSTR pParameters;
274 LPWSTR pDocumentName;
275 DWORD JobId;
276 LPWSTR pOutputFile;
277 LPWSTR pPrinterName;
278} PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA;
279
280typedef struct _MONITORREG {
281 DWORD cbSize;
282 LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions,
283 REGSAM samDesired,
284 PSECURITY_ATTRIBUTES pSecurityAttributes,
285 PHANDLE phckResult, PDWORD pdwDisposition,
286 HANDLE hSpooler);
287 LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired,
288 PHANDLE phkResult, HANDLE hSpooler);
289 LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler);
290 LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler);
291 LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName,
292 PDWORD pcchName, PFILETIME pftLastWriteTime,
293 HANDLE hSpooler);
294 LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey,
295 PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData,
296 PDWORD pcbSecurityDescriptor,
297 PFILETIME pftLastWriteTime,
298 HANDLE hSpooler);
299 LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType,
300 const BYTE* pData, DWORD cbData, HANDLE hSpooler);
301 LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler);
302 LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue,
303 PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData,
304 HANDLE hSpooler);
305 LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType,
306 PBYTE pData, PDWORD pcbData, HANDLE hSpooler);
307} MONITORREG, *PMONITORREG;
308
309typedef struct _MONITORINIT {
310 DWORD cbSize;
311 HANDLE hSpooler;
312 HKEYMONITOR hckRegistryRoot;
313 PMONITORREG pMonitorReg;
314 WINBOOL bLocal;
315 LPCWSTR pszServerName;
316} MONITORINIT, *PMONITORINIT;
317
318typedef struct _MONITOR {
319 WINBOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
320 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
321 WINBOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
322 WINBOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
323 PHANDLE pHandle, struct _MONITOR *pMonitor);
324 WINBOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
325 DWORD JobId, DWORD Level, LPBYTE pDocInfo);
326 WINBOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
327 LPDWORD pcbWritten);
328 WINBOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
329 LPDWORD pcbRead);
330 WINBOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
331 WINBOOL (WINAPI *pfnClosePort)(HANDLE hPort);
332 WINBOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
333 WINBOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
334 LPWSTR lpMonitorName);
335 WINBOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
336 WINBOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
337 WINBOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
338 LPWSTR pValueName, LPWSTR lpInBuffer,
339 DWORD cbInBuffer, LPWSTR lpOutBuffer,
340 DWORD cbOutBuffer, LPDWORD lpcbReturned);
341 WINBOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
342 DWORD reserved);
343 WINBOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv);
344 DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
345 PBYTE pInputData, DWORD cbInputData,
346 PBYTE pOutputData, DWORD cbOutputData,
347 PDWORD pcbOutputNeeded);
348 WINBOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
349} MONITOR, *LPMONITOR;
350
351typedef struct _MONITOREX {
352 DWORD dwMonitorSize;
353 MONITOR Monitor;
354} MONITOREX, *LPMONITOREX;
355
356typedef struct _MONITOR2 {
357 DWORD cbSize;
358 WINBOOL (WINAPI *pfnEnumPorts)(HANDLE hMonitor, LPWSTR pName, DWORD Level, LPBYTE pPorts,
359 DWORD cbBuf, LPDWORD pcbNeeded,
360 LPDWORD pcReturned);
361 WINBOOL (WINAPI *pfnOpenPort)(HANDLE hMonitor, LPWSTR pName, PHANDLE pHandle);
362 WINBOOL (WINAPI *pfnOpenPortEx)(HANDLE hMonitor, HANDLE hMonitorPort, LPWSTR pPortName, LPWSTR pPrinterName,
363 PHANDLE pHandle, struct _MONITOR2 *pMonitor2);
364 WINBOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
365 DWORD JobId, DWORD Level, LPBYTE pDocInfo);
366 WINBOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
367 LPDWORD pcbWritten);
368 WINBOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
369 LPDWORD pcbRead);
370 WINBOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
371 WINBOOL (WINAPI *pfnClosePort)(HANDLE hPort);
372 WINBOOL (WINAPI *pfnAddPort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
373 WINBOOL (WINAPI *pfnAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
374 LPWSTR lpMonitorName);
375 WINBOOL (WINAPI *pfnConfigurePort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pPortName);
376 WINBOOL (WINAPI *pfnDeletePort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pPortName);
377 WINBOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
378 LPWSTR pValueName, LPWSTR lpInBuffer,
379 DWORD cbInBuffer, LPWSTR lpOutBuffer,
380 DWORD cbOutBuffer, LPDWORD lpcbReturned);
381 WINBOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
382 DWORD reserved);
383 WINBOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject,
384 ACCESS_MASK GrantedAccess, PHANDLE phXcv);
385 DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
386 PBYTE pInputData, DWORD cbInputData,
387 PBYTE pOutputData, DWORD cbOutputData,
388 PDWORD pcbOutputNeeded);
389 WINBOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
390 VOID (WINAPI *pfnShutdown)(HANDLE hMonitor);
391#if (NTDDI_VERSION >= NTDDI_WINXP)
392 DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit,
393 LPCWSTR pAction,
394 PBIDI_REQUEST_CONTAINER pReqData,
395 PBIDI_RESPONSE_CONTAINER *ppResData);
396#endif
397#if (NTDDI_VERSION >= NTDDI_WIN7)
398 DWORD (WINAPI *pfnNotifyUsedPorts)(HANDLE hMonitor, DWORD cPorts,
399 PCWSTR *ppszPorts);
400
401 DWORD (WINAPI *pfnNotifyUnusedPorts)(HANDLE hMonitor, DWORD cPorts,
402 PCWSTR *ppszPorts);
403#endif
404} MONITOR2, *LPMONITOR2, *PMONITOR2;
405
406typedef struct _MONITORUI {
407 DWORD dwMonitorUISize;
408 WINBOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd,
409 PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut);
410 WINBOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName);
411 WINBOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName);
412} MONITORUI, *PMONITORUI;
413
414#if (NTDDI_VERSION >= NTDDI_WINXP)
415
416typedef enum {
417 kMessageBox = 0
418} UI_TYPE;
419
420typedef struct {
421 DWORD cbSize;
422 LPWSTR pTitle;
423 LPWSTR pMessage;
424 DWORD Style;
425 DWORD dwTimeout;
426 WINBOOL bWait;
427} MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS;
428
429typedef struct {
430 UI_TYPE UIType;
431 MESSAGEBOX_PARAMS MessageBoxParams;
432} SHOWUIPARAMS, *PSHOWUIPARAMS;
433
434#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
435
436#if (NTDDI_VERSION >= NTDDI_WS03)
437#ifndef __ATTRIBUTE_INFO_3__
438#define __ATTRIBUTE_INFO_3__
439typedef struct _ATTRIBUTE_INFO_3 {
440 DWORD dwJobNumberOfPagesPerSide;
441 DWORD dwDrvNumberOfPagesPerSide;
442 DWORD dwNupBorderFlags;
443 DWORD dwJobPageOrderFlags;
444 DWORD dwDrvPageOrderFlags;
445 DWORD dwJobNumberOfCopies;
446 DWORD dwDrvNumberOfCopies;
447 DWORD dwColorOptimization;
448 short dmPrintQuality;
449 short dmYResolution;
450} ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3;
451#endif /* __ATTRIBUTE_INFO_3__ */
452#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
453
454#if (NTDDI_VERSION >= NTDDI_VISTA)
455
456typedef WINBOOL
457(CALLBACK *ROUTER_NOTIFY_CALLBACK)(
458 DWORD dwCommand,
459 PVOID pContext,
460 DWORD dwColor,
461 PPRINTER_NOTIFY_INFO pNofityInfo,
462 DWORD fdwFlags,
463 PDWORD pdwResult);
464
465typedef enum _NOTIFICATION_CALLBACK_COMMANDS {
466 NOTIFICATION_COMMAND_NOTIFY,
467 NOTIFICATION_COMMAND_CONTEXT_ACQUIRE,
468 NOTIFICATION_COMMAND_CONTEXT_RELEASE
469} NOTIFICATION_CALLBACK_COMMANDS;
470
471typedef struct _NOTIFICATION_CONFIG_1 {
472 UINT cbSize;
473 DWORD fdwFlags;
474 ROUTER_NOTIFY_CALLBACK pfnNotifyCallback;
475 PVOID pContext;
476} NOTIFICATION_CONFIG_1, *PNOTIFICATION_CONFIG_1;
477
478typedef enum _NOTIFICATION_CONFIG_FLAGS {
479 NOTIFICATION_CONFIG_CREATE_EVENT = 1 << 0,
480 NOTIFICATION_CONFIG_REGISTER_CALLBACK = 1 << 1,
481 NOTIFICATION_CONFIG_EVENT_TRIGGER = 1 << 2,
482 NOTIFICATION_CONFIG_ASYNC_CHANNEL = 1 << 3
483} NOTIFICATION_CONFIG_FLAGS;
484
485typedef struct _SPLCLIENT_INFO_3 {
486 UINT cbSize;
487 DWORD dwFlags;
488 DWORD dwSize;
489 PWSTR pMachineName;
490 PWSTR pUserName;
491 DWORD dwBuildNum;
492 DWORD dwMajorVersion;
493 DWORD dwMinorVersion;
494 WORD wProcessorArchitecture;
495 UINT64 hSplPrinter;
496} SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3;
497
498#ifndef __ATTRIBUTE_INFO_4__
499#define __ATTRIBUTE_INFO_4__
500
501typedef struct _ATTRIBUTE_INFO_4 {
502 DWORD dwJobNumberOfPagesPerSide;
503 DWORD dwDrvNumberOfPagesPerSide;
504 DWORD dwNupBorderFlags;
505 DWORD dwJobPageOrderFlags;
506 DWORD dwDrvPageOrderFlags;
507 DWORD dwJobNumberOfCopies;
508 DWORD dwDrvNumberOfCopies;
509 DWORD dwColorOptimization;
510 short dmPrintQuality;
511 short dmYResolution;
512 DWORD dwDuplexFlags;
513 DWORD dwNupDirection;
514 DWORD dwBookletFlags;
515 DWORD dwScalingPercentX;
516 DWORD dwScalingPercentY;
517} ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4;
518
519#define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001)
520#define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1)
521
522#define RIGHT_THEN_DOWN (0x00000001)
523#define DOWN_THEN_RIGHT (0x00000001 << 1)
524#define LEFT_THEN_DOWN (0x00000001 << 2)
525#define DOWN_THEN_LEFT (0x00000001 << 3)
526
527#define BOOKLET_EDGE_LEFT 0x00000000
528#define BOOKLET_EDGE_RIGHT 0x00000001
529
530#endif /* __ATTRIBUTE_INFO_4__ */
531
532#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
533
534#if (OSVER(NTDDI_VERSION) == NTDDI_W2K)
535typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
536#elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03))
537typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
538#else
539typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
540#endif /* (OSVER(NTDDI_VERSION) == NTDDI_W2K) */
541
542WINBOOL
543WINAPI
544InitializePrintProvidor(
545 LPPRINTPROVIDOR pPrintProvidor,
546 DWORD cbPrintProvidor,
547 LPWSTR pFullRegistryPath);
548
549HANDLE
550WINAPI
551OpenPrintProcessor(
552 LPWSTR pPrinterName,
553 PPRINTPROCESSOROPENDATA pPrintProcessorOpenData);
554
555WINBOOL
556WINAPI
557PrintDocumentOnPrintProcessor(
558 HANDLE hPrintProcessor,
559 LPWSTR pDocumentName);
560
561WINBOOL
562WINAPI
563ClosePrintProcessor(
564 HANDLE hPrintProcessor);
565
566WINBOOL
567WINAPI
568ControlPrintProcessor(
569 HANDLE hPrintProcessor,
570 DWORD Command);
571
572DWORD
573WINAPI
574GetPrintProcessorCapabilities(
575 LPTSTR pValueName,
576 DWORD dwAttributes,
577 LPBYTE pData,
578 DWORD nSize,
579 LPDWORD pcbNeeded);
580
581WINBOOL
582WINAPI
583InitializeMonitor(
584 LPWSTR pRegistryRoot);
585
586WINBOOL
587WINAPI
588OpenPort(
589 LPWSTR pName,
590 PHANDLE pHandle);
591
592WINBOOL
593WINAPI
594WritePort(
595 HANDLE hPort,
596 LPBYTE pBuffer,
597 DWORD cbBuf,
598 LPDWORD pcbWritten);
599
600WINBOOL
601WINAPI
602ReadPort(
603 HANDLE hPort,
604 LPBYTE pBuffer,
605 DWORD cbBuffer,
606 LPDWORD pcbRead);
607
608WINBOOL
609WINAPI
610ClosePort(
611 HANDLE hPort);
612
613WINBOOL
614WINAPI
615XcvOpenPort(
616 LPCWSTR pszObject,
617 ACCESS_MASK GrantedAccess,
618 PHANDLE phXcv);
619
620DWORD
621WINAPI
622XcvDataPort(
623 HANDLE hXcv,
624 LPCWSTR pszDataName,
625 PBYTE pInputData,
626 DWORD cbInputData,
627 PBYTE pOutputData,
628 DWORD cbOutputData,
629 PDWORD pcbOutputNeeded);
630
631WINBOOL
632WINAPI
633XcvClosePort(
634 HANDLE hXcv);
635
636WINBOOL
637WINAPI
638AddPortUI(
639 PCWSTR pszServer,
640 HWND hWnd,
641 PCWSTR pszMonitorNameIn,
642 PWSTR *ppszPortNameOut);
643
644WINBOOL
645WINAPI
646ConfigurePortUI(
647 PCWSTR pszServer,
648 HWND hWnd,
649 PCWSTR pszPortName);
650
651WINBOOL
652WINAPI
653DeletePortUI(
654 PCWSTR pszServer,
655 HWND hWnd,
656 PCWSTR pszPortName);
657
658WINBOOL
659WINAPI
660SplDeleteSpoolerPortStart(
661 PCWSTR pPortName);
662
663WINBOOL
664WINAPI
665SplDeleteSpoolerPortEnd(
666 PCWSTR pName,
667 WINBOOL bDeletePort);
668
669WINBOOL
670WINAPI
671SpoolerCopyFileEvent(
672 LPWSTR pszPrinterName,
673 LPWSTR pszKey,
674 DWORD dwCopyFileEvent);
675
676DWORD
677WINAPI
678GenerateCopyFilePaths(
679 LPCWSTR pszPrinterName,
680 LPCWSTR pszDirectory,
681 LPBYTE pSplClientInfo,
682 DWORD dwLevel,
683 LPWSTR pszSourceDir,
684 LPDWORD pcchSourceDirSize,
685 LPWSTR pszTargetDir,
686 LPDWORD pcchTargetDirSize,
687 DWORD dwFlags);
688
689HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode);
690WINBOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn,
691 DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
692WINBOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC);
693WINBOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID);
694HANDLE WINAPI RevertToPrinterSelf(VOID);
695WINBOOL WINAPI ImpersonatePrinterClient(HANDLE hToken);
696WINBOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags,
697 PDWORD pdwResult, PVOID pPrinterNotifyInfo);
698WINBOOL WINAPI ReplyPrinterChangeNotificationEx(HANDLE hNotify, DWORD dwColor,
699 DWORD fdwFlags, PDWORD pdwResult,
700 PVOID pPrinterNotifyInfo);
701WINBOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify,
702 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc);
703PPRINTER_NOTIFY_INFO WINAPI RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData);
704WINBOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
705
706WINBOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest,
707 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc,
708 DWORD fdwFlags);
709DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter,
710 DWORD fdwFlags,
711 DWORD fdwOptions,
712 HANDLE hNotify,
713 PPRINTER_NOTIFY_OPTIONS pPrinterNotifyOptions);
714WINBOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter,
715 DWORD fdwFlags,
716 DWORD fdwOptions,
717 HANDLE hNotify,
718 PVOID pvReserved0,
719 PVOID pvReserved1);
720WINBOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter);
721
722/* Spooler */
723WINBOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter,
724 DWORD fdwFlags,
725 DWORD fdwOptions,
726 PHANDLE phEvent,
727 PVOID pPrinterNotifyOptions,
728 PVOID pvReserved);
729WINBOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter,
730 LPDWORD pfdwChange,
731 PVOID pvReserved0,
732 PVOID ppPrinterNotifyInfo);
733VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
734WINBOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter);
735
736/* Port monitor / Language monitor / Print monitor */
737LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit,
738 PHANDLE phMonitor);
739PMONITORUI WINAPI InitializePrintMonitorUI(VOID);
740LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot);
741WINBOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor);
742
743#if (NTDDI_VERSION >= NTDDI_WINXP)
744
745PBIDI_RESPONSE_CONTAINER WINAPI RouterAllocBidiResponseContainer(DWORD Count);
746PVOID WINAPI RouterAllocBidiMem(size_t NumBytes);
747DWORD WINAPI RouterFreeBidiResponseContainer(PBIDI_RESPONSE_CONTAINER pData);
748VOID WINAPI RouterFreeBidiMem(PVOID pMemPointer);
749
750WINBOOL
751WINAPI
752SplPromptUIInUsersSession(
753 HANDLE hPrinter,
754 DWORD JobId,
755 PSHOWUIPARAMS pUIParams,
756 DWORD *pResponse);
757
758DWORD
759WINAPI
760SplIsSessionZero(
761 HANDLE hPrinter,
762 DWORD JobId,
763 WINBOOL *pIsSessionZero);
764
765#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
766
767#if (NTDDI_VERSION >= NTDDI_WS03)
768WINBOOL
769WINAPI
770GetJobAttributes(
771 LPWSTR pPrinterName,
772 LPDEVMODEW pDevmode,
773 PATTRIBUTE_INFO_3 pAttributeInfo);
774#endif
775
776#if (NTDDI_VERSION >= NTDDI_VISTA)
777
778#define FILL_WITH_DEFAULTS 0x1
779
780WINBOOL
781WINAPI
782GetJobAttributesEx(
783 LPWSTR pPrinterName,
784 LPDEVMODEW pDevmode,
785 DWORD dwLevel,
786 LPBYTE pAttributeInfo,
787 DWORD nSize,
788 DWORD dwFlags);
789
790WINBOOL WINAPI SpoolerRefreshPrinterChangeNotification(HANDLE hPrinter,
791 DWORD dwColor,
792 PPRINTER_NOTIFY_OPTIONS pOptions,
793 PPRINTER_NOTIFY_INFO *ppInfo);
794
795#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
796
797/* FIXME : The following declarations are not present in the official header */
798
799WINBOOL WINAPI OpenPrinterToken(PHANDLE phToken);
800WINBOOL WINAPI SetPrinterToken(HANDLE hToken);
801WINBOOL WINAPI ClosePrinterToken(HANDLE hToken);
802WINBOOL WINAPI InstallPrintProcessor(HWND hWnd);
803
804#ifdef __cplusplus
805}
806#endif
Note: See TracBrowser for help on using the repository browser.