2 * PROJECT: ReactOS Spooler API
3 * LICENSE: This file is in the public domain
4 * PURPOSE: WIDL-compatible interface definition for the Spooler API
5 * AUTHORS: Colin Finck <colin@reactos.org>
13 typedef [context_handle] void* WINSPOOL_GDI_HANDLE;
14 typedef [context_handle] void* WINSPOOL_PRINTER_HANDLE;
15 typedef [handle, string] WCHAR* WINSPOOL_HANDLE;
19 * Type definitions and enumerations
21 typedef WORD WINSPOOL_LANGID;
25 WINSPOOL_BIDI_NULL = 0,
26 WINSPOOL_BIDI_INT = 1,
27 WINSPOOL_BIDI_FLOAT = 2,
28 WINSPOOL_BIDI_BOOL = 3,
29 WINSPOOL_BIDI_STRING = 4,
30 WINSPOOL_BIDI_TEXT = 5,
31 WINSPOOL_BIDI_ENUM = 6,
32 WINSPOOL_BIDI_BLOB = 7
38 WINSPOOL_TABLE_DWORD = 1,
39 WINSPOOL_TABLE_STRING = 2,
40 WINSPOOL_TABLE_DEVMODE = 3,
41 WINSPOOL_TABLE_TIME = 4,
42 WINSPOOL_TABLE_SECURITYDESCRIPTOR = 5
50 typedef struct _WINSPOOL_RECTL
59 typedef struct _WINSPOOL_SIZEL
70 typedef struct _WINSPOOL_DOC_INFO_1 {
71 [string] WCHAR* pDocName;
72 [string] WCHAR* pOutputFile;
73 [string] WCHAR* pDatatype;
77 typedef struct _WINSPOOL_DRIVER_INFO_1
79 [string] WCHAR* pName;
81 WINSPOOL_DRIVER_INFO_1;
83 typedef struct _WINSPOOL_DRIVER_INFO_2
86 [string] WCHAR* pName;
87 [string] WCHAR* pEnvironment;
88 [string] WCHAR* pDriverPath;
89 [string] WCHAR* pDataFile;
90 [string] WCHAR* pConfigFile;
92 WINSPOOL_DRIVER_INFO_2;
94 typedef struct _WINSPOOL_DRIVER_INFO_3
97 [string] WCHAR* pName;
98 [string] WCHAR* pEnvironment;
99 [string] WCHAR* pDriverPath;
100 [string] WCHAR* pDataFile;
101 [string] WCHAR* pConfigFile;
102 [string] WCHAR* pHelpFile;
103 [string] WCHAR* pMonitorName;
104 [string] WCHAR* pDefaultDataType;
105 DWORD cchDependentFiles;
106 [size_is(cchDependentFiles), unique] WCHAR* pDependentFiles;
108 WINSPOOL_DRIVER_INFO_3;
110 typedef struct _WINSPOOL_DRIVER_INFO_4
113 [string] WCHAR* pName;
114 [string] WCHAR* pEnvironment;
115 [string] WCHAR* pDriverPath;
116 [string] WCHAR* pDataFile;
117 [string] WCHAR* pConfigFile;
118 [string] WCHAR* pHelpFile;
119 [string] WCHAR* pMonitorName;
120 [string] WCHAR* pDefaultDataType;
121 DWORD cchDependentFiles;
122 [size_is(cchDependentFiles), unique] WCHAR* pDependentFiles;
123 DWORD cchPreviousNames;
124 [size_is(cchPreviousNames), unique] WCHAR* pszzPreviousNames;
126 WINSPOOL_DRIVER_INFO_4;
128 typedef struct _WINSPOOL_DRIVER_INFO_6
131 [string] WCHAR* pName;
132 [string] WCHAR* pEnvironment;
133 [string] WCHAR* pDriverPath;
134 [string] WCHAR* pDataFile;
135 [string] WCHAR* pConfigFile;
136 [string] WCHAR* pHelpFile;
137 [string] WCHAR* pMonitorName;
138 [string] WCHAR* pDefaultDataType;
139 DWORD cchDependentFiles;
140 [size_is(cchDependentFiles), unique] WCHAR* pDependentFiles;
141 DWORD cchPreviousNames;
142 [size_is(cchPreviousNames), unique] WCHAR* pszzPreviousNames;
143 FILETIME ftDriverDate;
144 DWORDLONG dwlDriverVersion;
145 [string] WCHAR* pMfgName;
146 [string] WCHAR* pOEMUrl;
147 [string] WCHAR* pHardwareID;
148 [string] WCHAR* pProvider;
150 WINSPOOL_DRIVER_INFO_6;
152 typedef struct _WINSPOOL_DRIVER_INFO_8
155 [string] WCHAR* pName;
156 [string] WCHAR* pEnvironment;
157 [string] WCHAR* pDriverPath;
158 [string] WCHAR* pDataFile;
159 [string] WCHAR* pConfigFile;
160 [string] WCHAR* pHelpFile;
161 [string] WCHAR* pMonitorName;
162 [string] WCHAR* pDefaultDataType;
163 DWORD cchDependentFiles;
164 [size_is(cchDependentFiles), unique] WCHAR* pDependentFiles;
165 DWORD cchPreviousNames;
166 [size_is(cchPreviousNames), unique] WCHAR* pszzPreviousNames;
167 FILETIME ftDriverDate;
168 DWORDLONG dwlDriverVersion;
169 [string] WCHAR* pMfgName;
170 [string] WCHAR* pOEMUrl;
171 [string] WCHAR* pHardwareID;
172 [string] WCHAR* pProvider;
173 [string] WCHAR* pPrintProcessor;
174 [string] WCHAR* pVendorSetup;
175 DWORD cchColorProfiles;
176 [size_is(cchColorProfiles), unique] WCHAR* pszzColorProfiles;
177 [string] WCHAR* pInfPath;
178 DWORD dwPrinterDriverAttributes;
179 DWORD cchCoreDependencies;
180 [size_is(cchCoreDependencies), unique] WCHAR* pszzCoreDriverDependencies;
181 FILETIME ftMinInboxDriverVerDate;
182 DWORDLONG dwlMinInboxDriverVerVersion;
184 WINSPOOL_DRIVER_INFO_8;
186 typedef struct _WINSPOOL_FORM_INFO_1
189 [string] WCHAR* pName;
191 WINSPOOL_RECTL ImageableArea;
193 WINSPOOL_FORM_INFO_1;
195 typedef struct _WINSPOOL_FORM_INFO_2
198 [string, unique] const WCHAR* pName;
200 WINSPOOL_RECTL ImageableArea;
201 [string, unique] const WCHAR* pKeyword;
203 [string, unique] const WCHAR* pMuiDll;
205 [string, unique] const WCHAR* pDisplayName;
206 WINSPOOL_LANGID wLangID;
208 WINSPOOL_FORM_INFO_2;
210 typedef struct _WINSPOOL_JOB_INFO_1
213 [string] WCHAR* pPrinterName;
214 [string] WCHAR* pMachineName;
215 [string] WCHAR* pUserName;
216 [string] WCHAR* pDocument;
217 [string] WCHAR* pDatatype;
218 [string] WCHAR* pStatus;
224 SYSTEMTIME Submitted;
228 typedef struct _WINSPOOL_JOB_INFO_2
231 [string] WCHAR* pPrinterName;
232 [string] WCHAR* pMachineName;
233 [string] WCHAR* pUserName;
234 [string] WCHAR* pDocument;
235 [string] WCHAR* pNotifyName;
236 [string] WCHAR* pDatatype;
237 [string] WCHAR* pPrintProcessor;
238 [string] WCHAR* pParameters;
239 [string] WCHAR* pDriverName;
241 [string] WCHAR* pStatus;
242 ULONG_PTR pSecurityDescriptor;
250 SYSTEMTIME Submitted;
256 typedef struct _WINSPOOL_JOB_INFO_3
264 typedef struct _WINSPOOL_JOB_INFO_4
267 [string] WCHAR* pPrinterName;
268 [string] WCHAR* pMachineName;
269 [string] WCHAR* pUserName;
270 [string] WCHAR* pDocument;
271 [string] WCHAR* pNotifyName;
272 [string] WCHAR* pDatatype;
273 [string] WCHAR* pPrintProcessor;
274 [string] WCHAR* pParameters;
275 [string] WCHAR* pDriverName;
277 [string] WCHAR* pStatus;
278 ULONG_PTR pSecurityDescriptor;
286 SYSTEMTIME Submitted;
293 typedef struct _WINSPOOL_MONITOR_INFO_1
295 [string] WCHAR* pName;
297 WINSPOOL_MONITOR_INFO_1;
299 typedef struct _WINSPOOL_MONITOR_INFO_2
301 [string] WCHAR* pName;
302 [string] WCHAR* pEnvironment;
303 [string] WCHAR* pDLLName;
305 WINSPOOL_MONITOR_INFO_2;
307 typedef struct _WINSPOOL_PORT_INFO_1
309 [string] WCHAR* pPortName;
311 WINSPOOL_PORT_INFO_1;
313 typedef struct _WINSPOOL_PORT_INFO_2
315 [string] WCHAR* pPortName;
316 [string] WCHAR* pMonitorName;
317 [string] WCHAR* pDescription;
321 WINSPOOL_PORT_INFO_2;
323 typedef struct _WINSPOOL_PORT_INFO_3
326 [string] WCHAR* pszStatus;
329 WINSPOOL_PORT_INFO_3;
331 typedef struct _WINSPOOL_PORT_INFO_FF
333 [string] WCHAR* pPortName;
337 WINSPOOL_PORT_INFO_FF;
339 typedef struct _WINSPOOL_PRINTER_INFO_STRESS {
340 [string] WCHAR* pPrinterName;
341 [string] WCHAR* pServerName;
347 DWORD cTotalPagesPrinted;
353 DWORD cErrorOutOfPaper;
354 DWORD cErrorNotReady;
356 DWORD dwNumberOfProcessors;
357 DWORD dwProcessorType;
358 DWORD dwHighPartTotalBytes;
362 DWORD cEnumerateNetworkPrinters;
363 DWORD cAddNetPrinters;
364 USHORT wProcessorArchitecture;
365 USHORT wProcessorLevel;
370 WINSPOOL_PRINTER_INFO_STRESS;
372 typedef struct _WINSPOOL_PRINTER_INFO_1
375 [string] WCHAR* pDescription;
376 [string] WCHAR* pName;
377 [string] WCHAR* pComment;
379 WINSPOOL_PRINTER_INFO_1;
381 typedef struct _WINSPOOL_PRINTER_INFO_2
383 [string] WCHAR* pServerName;
384 [string] WCHAR* pPrinterName;
385 [string] WCHAR* pShareName;
386 [string] WCHAR* pPortName;
387 [string] WCHAR* pDriverName;
388 [string] WCHAR* pComment;
389 [string] WCHAR* pLocation;
391 [string] WCHAR* pSepFile;
392 [string] WCHAR* pPrintProcessor;
393 [string] WCHAR* pDatatype;
394 [string] WCHAR* pParameters;
395 ULONG_PTR pSecurityDescriptor;
398 DWORD DefaultPriority;
405 WINSPOOL_PRINTER_INFO_2;
407 typedef struct _WINSPOOL_PRINTER_INFO_3
409 ULONG_PTR pSecurityDescriptor;
411 WINSPOOL_PRINTER_INFO_3;
413 typedef struct _WINSPOOL_PRINTER_INFO_4
415 [string] WCHAR* pPrinterName;
416 [string] WCHAR* pServerName;
419 WINSPOOL_PRINTER_INFO_4;
421 typedef struct _WINSPOOL_PRINTER_INFO_5
423 [string] WCHAR* pPrinterName;
424 [string] WCHAR* pPortName;
426 DWORD DeviceNotSelectedTimeout;
427 DWORD TransmissionRetryTimeout;
429 WINSPOOL_PRINTER_INFO_5;
431 typedef struct _WINSPOOL_PRINTER_INFO_6
435 WINSPOOL_PRINTER_INFO_6;
437 typedef struct _WINSPOOL_PRINTER_INFO_7
439 [string] WCHAR* pszObjectGUID;
442 WINSPOOL_PRINTER_INFO_7;
444 typedef struct _WINSPOOL_PRINTER_INFO_8
448 WINSPOOL_PRINTER_INFO_8;
450 typedef struct _WINSPOOL_PRINTER_INFO_9
454 WINSPOOL_PRINTER_INFO_9;
456 typedef struct _WINSPOOL_PROVIDOR_INFO_1
462 WINSPOOL_PROVIDOR_INFO_1;
464 typedef struct _WINSPOOL_PROVIDOR_INFO_2
468 WINSPOOL_PROVIDOR_INFO_2;
470 typedef struct _WINSPOOL_SPLCLIENT_INFO_1
473 [string] WCHAR* pMachineName;
474 [string] WCHAR* pUserName;
476 DWORD dwMajorVersion;
477 DWORD dwMinorVersion;
478 USHORT wProcessorArchitecture;
480 WINSPOOL_SPLCLIENT_INFO_1;
482 typedef struct _WINSPOOL_SPLCLIENT_INFO_2
486 WINSPOOL_SPLCLIENT_INFO_2;
488 typedef struct _WINSPOOL_SPLCLIENT_INFO_3
493 [string] WCHAR* pMachineName;
494 [string] WCHAR* pUserName;
496 DWORD dwMajorVersion;
497 DWORD dwMinorVersion;
498 USHORT wProcessorArchitecture;
501 WINSPOOL_SPLCLIENT_INFO_3;
505 * CONTAINER structures
507 typedef struct _WINSPOOL_BINARY_CONTAINER
510 [size_is(cbBuf), unique] BYTE* pszString;
512 WINSPOOL_BINARY_CONTAINER;
514 typedef struct _WINSPOOL_BIDI_DATA
518 [switch_is(dwBidiType)] union
520 [case(WINSPOOL_BIDI_NULL, WINSPOOL_BIDI_BOOL)]
522 [case(WINSPOOL_BIDI_INT)]
524 [case(WINSPOOL_BIDI_STRING, WINSPOOL_BIDI_TEXT, WINSPOOL_BIDI_ENUM)]
525 [string, unique] WCHAR* sData;
526 [case(WINSPOOL_BIDI_FLOAT)]
528 [case(WINSPOOL_BIDI_BLOB)]
529 WINSPOOL_BINARY_CONTAINER biData;
535 typedef struct _WINSPOOL_BIDI_REQUEST_DATA
538 [string, unique] WCHAR* pSchema;
539 WINSPOOL_BIDI_DATA data;
541 WINSPOOL_BIDI_REQUEST_DATA;
543 typedef struct _WINSPOOL_BIDI_RESPONSE_DATA
547 [string, unique] WCHAR* pSchema;
548 WINSPOOL_BIDI_DATA data;
550 WINSPOOL_BIDI_RESPONSE_DATA;
552 typedef struct _WINSPOOL_BIDI_REQUEST_CONTAINER
557 [size_is(Count), unique] WINSPOOL_BIDI_REQUEST_DATA aData[];
559 WINSPOOL_BIDI_REQUEST_CONTAINER;
561 typedef struct _WINSPOOL_BIDI_RESPONSE_CONTAINER
566 [size_is(Count), unique] WINSPOOL_BIDI_RESPONSE_DATA aData[];
568 WINSPOOL_BIDI_RESPONSE_CONTAINER;
570 typedef struct _WINSPOOL_DOC_INFO_CONTAINER
574 [switch_is(Level)] union
577 WINSPOOL_DOC_INFO_1* pDocInfo1;
581 WINSPOOL_DOC_INFO_CONTAINER;
583 typedef struct _WINSPOOL_DEVMODE_CONTAINER
586 [size_is(cbBuf), unique] BYTE* pDevMode;
588 WINSPOOL_DEVMODE_CONTAINER;
590 typedef struct _WINSPOOL_DRIVER_CONTAINER
594 [switch_is(Level)] union
597 WINSPOOL_DRIVER_INFO_1* pNotUsed;
599 WINSPOOL_DRIVER_INFO_2* Level2;
601 WINSPOOL_DRIVER_INFO_3* Level3;
603 WINSPOOL_DRIVER_INFO_4* Level4;
605 WINSPOOL_DRIVER_INFO_6* Level6;
607 WINSPOOL_DRIVER_INFO_8* Level8;
611 WINSPOOL_DRIVER_CONTAINER;
613 typedef struct _WINSPOOL_FORM_CONTAINER
617 [switch_is(Level)] union
620 WINSPOOL_FORM_INFO_1* pFormInfo1;
622 WINSPOOL_FORM_INFO_2* pFormInfo2;
626 WINSPOOL_FORM_CONTAINER;
628 typedef struct _WINSPOOL_JOB_CONTAINER
632 [switch_is(Level)] union
635 WINSPOOL_JOB_INFO_1* Level1;
637 WINSPOOL_JOB_INFO_2* Level2;
639 WINSPOOL_JOB_INFO_3* Level3;
641 WINSPOOL_JOB_INFO_4* Level4;
645 WINSPOOL_JOB_CONTAINER;
647 typedef struct _WINSPOOL_MONITOR_CONTAINER
651 [switch_is(Level)] union
654 WINSPOOL_MONITOR_INFO_1* pMonitorInfo1;
656 WINSPOOL_MONITOR_INFO_2* pMonitorInfo2;
660 WINSPOOL_MONITOR_CONTAINER;
662 typedef struct _WINSPOOL_PORT_CONTAINER
666 [switch_is(0x00FFFFFF & Level)]
670 WINSPOOL_PORT_INFO_1* pPortInfo1;
672 WINSPOOL_PORT_INFO_2* pPortInfo2;
674 WINSPOOL_PORT_INFO_3* pPortInfo3;
676 WINSPOOL_PORT_INFO_FF* pPortInfoFF;
680 WINSPOOL_PORT_CONTAINER;
682 typedef struct _WINSPOOL_PORT_VAR_CONTAINER
685 [size_is(cbMonitorData), unique] BYTE* pMonitorData;
687 WINSPOOL_PORT_VAR_CONTAINER;
689 typedef struct _WINSPOOL_PRINTER_CONTAINER
693 [switch_is(Level)] union
696 WINSPOOL_PRINTER_INFO_STRESS* pPrinterInfoStress;
698 WINSPOOL_PRINTER_INFO_1* pPrinterInfo1;
700 WINSPOOL_PRINTER_INFO_2* pPrinterInfo2;
702 WINSPOOL_PRINTER_INFO_3* pPrinterInfo3;
704 WINSPOOL_PRINTER_INFO_4* pPrinterInfo4;
706 WINSPOOL_PRINTER_INFO_5* pPrinterInfo5;
708 WINSPOOL_PRINTER_INFO_6* pPrinterInfo6;
710 WINSPOOL_PRINTER_INFO_7* pPrinterInfo7;
712 WINSPOOL_PRINTER_INFO_8* pPrinterInfo8;
714 WINSPOOL_PRINTER_INFO_9* pPrinterInfo9;
718 WINSPOOL_PRINTER_CONTAINER;
720 typedef struct _WINSPOOL_PROVIDOR_CONTAINER
724 [switch_is(Level)] union
727 WINSPOOL_PROVIDOR_INFO_1* pProvidorInfo1;
729 WINSPOOL_PROVIDOR_INFO_2* pProvidorInfo2;
733 WINSPOOL_PROVIDOR_CONTAINER;
735 typedef struct _WINSPOOL_SECURITY_CONTAINER
738 [size_is(cbBuf), unique] BYTE* pSecurity;
740 WINSPOOL_SECURITY_CONTAINER;
742 typedef struct _WINSPOOL_SPLCLIENT_CONTAINER
746 [switch_is(Level)] union
749 WINSPOOL_SPLCLIENT_INFO_1* pClientInfo1;
751 WINSPOOL_SPLCLIENT_INFO_2* pNotUsed1;
753 WINSPOOL_SPLCLIENT_INFO_3* pNotUsed2;
757 WINSPOOL_SPLCLIENT_CONTAINER;
759 typedef struct _WINSPOOL_STRING_CONTAINER
762 [size_is(cbBuf / 2), unique] WCHAR* pszString;
764 WINSPOOL_STRING_CONTAINER;
766 typedef struct _WINSPOOL_SYSTEMTIME_CONTAINER {
768 SYSTEMTIME* pSystemTime;
770 WINSPOOL_SYSTEMTIME_CONTAINER;
774 * Various definitions
776 typedef struct _WINSPOOL_V2_NOTIFY_OPTIONS_TYPE
783 [size_is(Count), unique] USHORT* pFields;
785 WINSPOOL_V2_NOTIFY_OPTIONS_TYPE;
787 typedef struct _WINSPOOL_V2_NOTIFY_OPTIONS
792 [size_is(Count), unique] WINSPOOL_V2_NOTIFY_OPTIONS_TYPE* pTypes;
794 WINSPOOL_V2_NOTIFY_OPTIONS;
796 typedef [switch_type(DWORD)] union _WINSPOOL_V2_NOTIFY_INFO_DATA_DATA
798 [case(WINSPOOL_TABLE_STRING)]
799 WINSPOOL_STRING_CONTAINER String;
800 [case(WINSPOOL_TABLE_DWORD)]
802 [case(WINSPOOL_TABLE_TIME)]
803 WINSPOOL_SYSTEMTIME_CONTAINER SystemTime;
804 [case(WINSPOOL_TABLE_DEVMODE)]
805 WINSPOOL_DEVMODE_CONTAINER DevMode;
806 [case(WINSPOOL_TABLE_SECURITYDESCRIPTOR)]
807 WINSPOOL_SECURITY_CONTAINER SecurityDescriptor;
809 WINSPOOL_V2_NOTIFY_INFO_DATA_DATA;
811 typedef struct _WINSPOOL_V2_NOTIFY_INFO_DATA
817 [switch_is(Reserved & 0xffff)] WINSPOOL_V2_NOTIFY_INFO_DATA_DATA Data;
819 WINSPOOL_V2_NOTIFY_INFO_DATA;
821 typedef struct _WINSPOOL_V2_NOTIFY_INFO
826 [size_is(Count), unique] WINSPOOL_V2_NOTIFY_INFO_DATA aData[];
828 WINSPOOL_V2_NOTIFY_INFO;
830 typedef [switch_type(DWORD)] union _WINSPOOL_V2_UREPLY_PRINTER
833 WINSPOOL_V2_NOTIFY_INFO* pInfo;
835 WINSPOOL_V2_UREPLY_PRINTER;
839 * The actual interface
842 uuid(12345678-1234-ABCD-EF00-0123456789AB),
844 endpoint("ncalrpc:[spoolss]", "ncacn_np:[\\pipe\\spoolss]"),
845 pointer_default(unique)
850 DWORD _RpcEnumPrinters(
852 [in, unique] WINSPOOL_HANDLE Name,
854 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinterEnum,
856 [out] DWORD* pcbNeeded,
857 [out] DWORD* pcReturned
861 DWORD _RpcOpenPrinter(
862 [in, unique] WINSPOOL_HANDLE pPrinterName,
863 [out] WINSPOOL_PRINTER_HANDLE* phPrinter,
864 [in, string, unique] WCHAR* pDatatype,
865 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
866 [in] DWORD AccessRequired
871 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
873 [in, unique] WINSPOOL_JOB_CONTAINER* pJobContainer,
879 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
882 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pJob,
884 [out] DWORD* pcbNeeded
889 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
893 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pJob,
895 [out] DWORD* pcbNeeded,
896 [out] DWORD* pcReturned
900 DWORD _RpcAddPrinter(
901 [in, unique] WINSPOOL_HANDLE pName,
902 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
903 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
904 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
905 [out] WINSPOOL_PRINTER_HANDLE* pHandle
909 DWORD _RpcDeletePrinter(
910 [in] WINSPOOL_PRINTER_HANDLE hPrinter
914 DWORD _RpcSetPrinter(
915 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
916 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
917 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
918 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
923 DWORD _RpcGetPrinter(
924 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
926 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinter,
928 [out] DWORD* pcbNeeded
932 DWORD _RpcAddPrinterDriver(
933 [in, unique] WINSPOOL_HANDLE pName,
934 [in] WINSPOOL_DRIVER_CONTAINER* pDriverContainer
938 DWORD _RpcEnumPrinterDrivers(
939 [in, unique] WINSPOOL_HANDLE pName,
940 [in, string, unique] WCHAR* pEnvironment,
942 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDrivers,
944 [out] DWORD* pcbNeeded,
945 [out] DWORD* pcReturned
949 DWORD _RpcGetPrinterDriver(
950 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
951 [in, string, unique] WCHAR* pEnvironment,
953 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriver,
955 [out] DWORD* pcbNeeded
959 DWORD _RpcGetPrinterDriverDirectory(
960 [in, unique] WINSPOOL_HANDLE pName,
961 [in, string, unique] WCHAR* pEnvironment,
963 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriverDirectory,
965 [out] DWORD* pcbNeeded
969 DWORD _RpcDeletePrinterDriver(
970 [in, unique] WINSPOOL_HANDLE pName,
971 [in, string] WCHAR* pEnvironment,
972 [in, string] WCHAR* pDriverName
976 DWORD _RpcAddPrintProcessor(
977 [in, unique] WINSPOOL_HANDLE pName,
978 [in, string] WCHAR* pEnvironment,
979 [in, string] WCHAR* pPathName,
980 [in, string] WCHAR* pPrintProcessorName
984 DWORD _RpcEnumPrintProcessors(
985 [in, unique] WINSPOOL_HANDLE pName,
986 [in, string, unique] WCHAR* pEnvironment,
988 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrintProcessorInfo,
990 [out] DWORD* pcbNeeded,
991 [out] DWORD* pcReturned
995 DWORD _RpcGetPrintProcessorDirectory(
996 [in, unique] WINSPOOL_HANDLE pName,
997 [in, string, unique] WCHAR* pEnvironment,
999 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrintProcessorDirectory,
1001 [out] DWORD* pcbNeeded
1005 DWORD _RpcStartDocPrinter(
1006 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1007 [in] WINSPOOL_DOC_INFO_CONTAINER* pDocInfoContainer,
1012 DWORD _RpcStartPagePrinter(
1013 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1017 DWORD _RpcWritePrinter(
1018 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1019 [in, size_is(cbBuf)] BYTE* pBuf,
1021 [out] DWORD* pcWritten
1025 DWORD _RpcEndPagePrinter(
1026 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1030 DWORD _RpcAbortPrinter(
1031 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1035 DWORD _RpcReadPrinter(
1036 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1037 [out, size_is(cbBuf)] BYTE* pBuf,
1039 [out] DWORD* pcNoBytesRead
1043 DWORD _RpcEndDocPrinter(
1044 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1049 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1051 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pAddJob,
1053 [out] DWORD* pcbNeeded
1057 DWORD _RpcScheduleJob(
1058 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1063 DWORD _RpcGetPrinterData(
1064 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1065 [in, string] WCHAR* pValueName,
1067 [out, size_is(nSize)] BYTE* pData,
1069 [out] DWORD* pcbNeeded
1073 DWORD _RpcSetPrinterData(
1074 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1075 [in, string] WCHAR* pValueName,
1077 [in, size_is(cbData)] BYTE* pData,
1082 DWORD _RpcWaitForPrinterChange(
1083 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1089 DWORD _RpcClosePrinter(
1090 [in, out] WINSPOOL_PRINTER_HANDLE* phPrinter
1095 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1096 [in] WINSPOOL_FORM_CONTAINER* pFormInfoContainer
1100 DWORD _RpcDeleteForm(
1101 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1102 [in, string] WCHAR* pFormName
1107 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1108 [in, string] WCHAR* pFormName,
1110 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pForm,
1112 [out] DWORD* pcbNeeded
1117 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1118 [in, string] WCHAR* pFormName,
1119 [in] WINSPOOL_FORM_CONTAINER* pFormInfoContainer
1123 DWORD _RpcEnumForms(
1124 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1126 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pForm,
1128 [out] DWORD* pcbNeeded,
1129 [out] DWORD* pcReturned
1133 DWORD _RpcEnumPorts(
1134 [in, unique] WINSPOOL_HANDLE pName,
1136 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPort,
1138 [out] DWORD* pcbNeeded,
1139 [out] DWORD* pcReturned
1143 DWORD _RpcEnumMonitors(
1144 [in, unique] WINSPOOL_HANDLE pName,
1146 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pMonitor,
1148 [out] DWORD* pcbNeeded,
1149 [out] DWORD* pcReturned
1154 [in, unique] WINSPOOL_HANDLE pName,
1155 [in] ULONG_PTR hWnd,
1156 [in] WCHAR* pMonitorName
1160 DWORD _RpcConfigurePort(
1161 [in, unique] WINSPOOL_HANDLE pName,
1162 [in] ULONG_PTR hWnd,
1163 [in] WCHAR* pPortName
1167 DWORD _RpcDeletePort(
1168 [in, unique] WINSPOOL_HANDLE pName,
1169 [in] ULONG_PTR hWnd,
1170 [in, string] WCHAR* pPortName
1174 DWORD _RpcCreatePrinterIC(
1175 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1176 [out] WINSPOOL_GDI_HANDLE* pHandle,
1177 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer
1181 DWORD _RpcPlayGdiScriptOnPrinterIC(
1182 [in] WINSPOOL_GDI_HANDLE hPrinterIC,
1183 [in, size_is(cIn)] BYTE* pIn,
1185 [out, size_is(cOut)] BYTE* pOut,
1191 DWORD _RpcDeletePrinterIC(
1192 [in, out] WINSPOOL_GDI_HANDLE* phPrinterIC
1196 DWORD _RpcAddPrinterConnection(
1197 [in, unique] WINSPOOL_HANDLE pName
1201 DWORD _RpcDeletePrinterConnection(
1202 [in, unique] WINSPOOL_HANDLE pName
1206 DWORD _RpcPrinterMessageBox(
1207 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1209 [in] ULONG_PTR hWnd,
1210 [in, string] WCHAR* pText,
1211 [in, string] WCHAR* pCaption,
1216 DWORD _RpcAddMonitor(
1217 [in, unique] WINSPOOL_HANDLE pName,
1218 [in] WINSPOOL_MONITOR_CONTAINER* pMonitorContainer
1222 DWORD _RpcDeleteMonitor(
1223 [in, unique] WINSPOOL_HANDLE pName,
1224 [in, string, unique] WCHAR* pEnvironment,
1225 [in, string] WCHAR* pMonitorName
1229 DWORD _RpcDeletePrintProcessor(
1230 [in, unique] WINSPOOL_HANDLE pName,
1231 [in, string, unique] WCHAR* pEnvironment,
1232 [in, string] WCHAR* pPrintProcessorName
1236 DWORD _RpcAddPrintProvidor(
1237 [in, unique] WINSPOOL_HANDLE pName,
1238 [in] WINSPOOL_PROVIDOR_CONTAINER* pProvidorContainer
1242 DWORD _RpcDeletePrintProvidor(
1243 [in, unique] WINSPOOL_HANDLE pName,
1244 [in, string, unique] WCHAR* pEnvironment,
1245 [in, string] WCHAR* pPrintProviderName
1249 DWORD _RpcEnumPrintProcessorDatatypes(
1250 [in, unique] WINSPOOL_HANDLE pName,
1251 [in, string, unique] WCHAR* pPrintProcessorName,
1253 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDatatypes,
1255 [out] DWORD* pcbNeeded,
1256 [out] DWORD* pcReturned
1260 DWORD _RpcResetPrinter(
1261 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1262 [in, string, unique] WCHAR* pDatatype,
1263 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer
1267 DWORD _RpcGetPrinterDriver2(
1268 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1269 [in, string, unique] WCHAR* pEnvironment,
1271 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriver,
1273 [out] DWORD* pcbNeeded,
1274 [in] DWORD dwClientMajorVersion,
1275 [in] DWORD dwClientMinorVersion,
1276 [out] DWORD* pdwServerMaxVersion,
1277 [out] DWORD* pdwServerMinVersion
1280 /* Function 0x36 (TODO) */
1281 DWORD _RpcClientFindFirstPrinterChangeNotification(
1285 /* Function 0x37 (TODO) */
1286 DWORD _RpcFindNextPrinterChangeNotification(
1290 /* Function 0x38 (TODO) */
1291 DWORD _RpcFindClosePrinterChangeNotification(
1295 /* Function 0x39 (TODO) */
1296 DWORD _RpcRouterFindFirstPrinterChangeNotificationOld(
1301 DWORD _RpcReplyOpenPrinter(
1302 [in] WINSPOOL_HANDLE pMachine,
1303 [out] WINSPOOL_PRINTER_HANDLE* phPrinterNotify,
1304 [in] DWORD dwPrinterRemote,
1306 [in, range(0, 512)] DWORD cbBuffer,
1307 [in, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1311 DWORD _RpcRouterReplyPrinter(
1312 [in] WINSPOOL_PRINTER_HANDLE hNotify,
1313 [in] DWORD fdwFlags,
1314 [in, range(0, 512)] DWORD cbBuffer,
1315 [in, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1319 DWORD _RpcReplyClosePrinter(
1320 [in, out] WINSPOOL_PRINTER_HANDLE* phNotify
1324 DWORD _RpcAddPortEx(
1325 [in] WINSPOOL_HANDLE pName,
1326 [in] WINSPOOL_PORT_CONTAINER* pPortContainer,
1327 [in] WINSPOOL_PORT_VAR_CONTAINER* pPortVarContainer,
1328 [in, string] WCHAR* pMonitorName
1332 DWORD _RpcRemoteFindFirstPrinterChangeNotification(
1333 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1334 [in] DWORD fdwFlags,
1335 [in] DWORD fdwOptions,
1336 [in, string, unique] WCHAR* pszLocalMachine,
1337 [in] DWORD dwPrinterLocal,
1338 [in, range(0, 512)] DWORD cbBuffer,
1339 [in, out, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1343 DWORD _RpcSpoolerInit();
1345 /* Function 0x40 (TODO) */
1346 DWORD _RpcResetPrinterEx(
1351 DWORD _RpcRemoteFindFirstPrinterChangeNotificationEx(
1352 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1353 [in] DWORD fdwFlags,
1354 [in] DWORD fdwOptions,
1355 [in, string, unique] WCHAR* pszLocalMachine,
1356 [in] DWORD dwPrinterLocal,
1357 [in, unique] WINSPOOL_V2_NOTIFY_OPTIONS* pOptions
1361 DWORD _RpcRouterReplyPrinterEx(
1362 [in] WINSPOOL_PRINTER_HANDLE hNotify,
1364 [in] DWORD fdwFlags,
1365 [out] DWORD* pdwResult,
1366 [in] DWORD dwReplyType,
1367 [in, switch_is(dwReplyType)] WINSPOOL_V2_UREPLY_PRINTER Reply
1371 DWORD _RpcRouterRefreshPrinterChangeNotification(
1372 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1374 [in, unique] WINSPOOL_V2_NOTIFY_OPTIONS* pOptions,
1375 [out] WINSPOOL_V2_NOTIFY_INFO** ppInfo
1378 /* Function 0x44 (TODO) */
1379 DWORD _RpcSetAllocFailCount(
1384 DWORD _RpcOpenPrinterEx(
1385 [in, unique] WINSPOOL_HANDLE pPrinterName,
1386 [out] WINSPOOL_PRINTER_HANDLE* pHandle,
1387 [in, string, unique] WCHAR* pDatatype,
1388 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
1389 [in] DWORD AccessRequired,
1390 [in] WINSPOOL_SPLCLIENT_CONTAINER* pClientInfo
1394 DWORD _RpcAddPrinterEx(
1395 [in, unique] WINSPOOL_HANDLE pName,
1396 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
1397 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
1398 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
1399 [in] WINSPOOL_SPLCLIENT_CONTAINER* pClientInfo,
1400 [out] WINSPOOL_PRINTER_HANDLE* pHandle
1405 [in, unique] WINSPOOL_HANDLE pName,
1406 [in, string, unique] WCHAR* pPortName,
1407 [in] WINSPOOL_PORT_CONTAINER* pPortContainer
1411 DWORD _RpcEnumPrinterData(
1412 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1414 [out, size_is(cbValueName / sizeof(WCHAR))] WCHAR* pValueName,
1415 [in] DWORD cbValueName,
1416 [out] DWORD* pcbValueName,
1418 [out, size_is(cbData)] BYTE* pData,
1420 [out] DWORD* pcbData
1424 DWORD _RpcDeletePrinterData(
1425 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1426 [in, string] WCHAR* pValueName
1429 /* Function 0x4A (TODO) */
1430 DWORD _RpcClusterSplOpen(
1434 /* Function 0x4B (TODO) */
1435 DWORD _RpcClusterSplClose(
1439 /* Function 0x4C (TODO) */
1440 DWORD _RpcClusterSplIsAlive(
1445 DWORD _RpcSetPrinterDataEx(
1446 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1447 [in, string] const WCHAR* pKeyName,
1448 [in, string] const WCHAR* pValueName,
1450 [in, size_is(cbData)] BYTE* pData,
1455 DWORD _RpcGetPrinterDataEx(
1456 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1457 [in, string] const WCHAR* pKeyName,
1458 [in, string] const WCHAR* pValueName,
1460 [out, size_is(nSize)] BYTE* pData,
1462 [out] DWORD* pcbNeeded
1466 DWORD _RpcEnumPrinterDataEx(
1467 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1468 [in, string] const WCHAR* pKeyName,
1469 [out, size_is(cbEnumValues)] BYTE* pEnumValues,
1470 [in] DWORD cbEnumValues,
1471 [out] DWORD* pcbEnumValues,
1472 [out] DWORD* pnEnumValues
1476 DWORD _RpcEnumPrinterKey(
1477 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1478 [in, string] const WCHAR* pKeyName,
1479 [out, size_is(cbSubkey / sizeof(WCHAR))] WCHAR* pSubkey,
1480 [in] DWORD cbSubkey,
1481 [out] DWORD* pcbSubkey
1485 DWORD _RpcDeletePrinterDataEx(
1486 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1487 [in, string] const WCHAR* pKeyName,
1488 [in, string] const WCHAR* pValueName
1492 DWORD _RpcDeletePrinterKey(
1493 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1494 [in, string] const WCHAR* pKeyName
1497 /* Function 0x53 (TODO) */
1498 DWORD _RpcSeekPrinter(
1503 DWORD _RpcDeletePrinterDriverEx(
1504 [in, unique] WINSPOOL_HANDLE pName,
1505 [in, string] WCHAR* pEnvironment,
1506 [in, string] WCHAR* pDriverName,
1507 [in] DWORD dwDeleteFlag,
1508 [in] DWORD dwVersionNum
1512 DWORD _RpcAddPerMachineConnection(
1513 [in, unique] WINSPOOL_HANDLE pServer,
1514 [in, string] const WCHAR* pPrinterName,
1515 [in, string] const WCHAR* pPrintServer,
1516 [in, string] const WCHAR* pProvider
1520 DWORD _RpcDeletePerMachineConnection(
1521 [in, unique] WINSPOOL_HANDLE pServer,
1522 [in, string] const WCHAR* pPrinterName
1526 DWORD _RpcEnumPerMachineConnections(
1527 [in, unique] WINSPOOL_HANDLE pServer,
1528 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinterEnum,
1530 [out] DWORD* pcbNeeded,
1531 [out] DWORD* pcReturned
1536 [in] WINSPOOL_PRINTER_HANDLE hXcv,
1537 [in, string] const WCHAR* pszDataName,
1538 [in, size_is(cbInputData)] BYTE* pInputData,
1539 [in] DWORD cbInputData,
1540 [out, size_is(cbOutputData)] BYTE* pOutputData,
1541 [in] DWORD cbOutputData,
1542 [out] DWORD* pcbOutputNeeded,
1543 [in, out] DWORD* pdwStatus
1547 DWORD _RpcAddPrinterDriverEx(
1548 [in, unique] WINSPOOL_HANDLE pName,
1549 [in] WINSPOOL_DRIVER_CONTAINER* pDriverContainer,
1550 [in] DWORD dwFileCopyFlags
1553 /* Function 0x5A (TODO) */
1554 DWORD _RpcSplOpenPrinter(
1558 /* Function 0x5B (TODO) */
1559 DWORD _RpcGetSpoolFileInfo(
1563 /* Function 0x5C (TODO) */
1564 DWORD _RpcCommitSpoolData(
1568 /* Function 0x5D (TODO) */
1569 DWORD _RpcCloseSpoolFileHandle(
1574 DWORD _RpcFlushPrinter(
1575 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1576 [in, size_is(cbBuf)] BYTE* pBuf,
1578 [out] DWORD* pcWritten,
1583 DWORD _RpcSendRecvBidiData(
1584 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1585 [in, string, unique] const WCHAR* pAction,
1586 [in] WINSPOOL_BIDI_REQUEST_CONTAINER* pReqData,
1587 [out] WINSPOOL_BIDI_RESPONSE_CONTAINER** ppRespData
1590 /* Function 0x60 (TODO) */
1591 DWORD _RpcAddDriverCatalog(