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