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;
837 typedef struct _WINSPOOL_FILE_INFO
840 HANDLE hSpoolFileHandle;
843 WINSPOOL_FILE_INFO_1;
845 typedef struct _WINSPOOL_FILE_INFO_CONTAINER
849 [switch_is(Level)] union
852 WINSPOOL_FILE_INFO_1 *pFileInfo1;
856 WINSPOOL_FILE_INFO_CONTAINER;
859 * The actual interface
862 uuid(12345678-1234-ABCD-EF00-0123456789AB),
864 endpoint("ncalrpc:[spoolss]", "ncacn_np:[\\pipe\\spoolss]"),
865 pointer_default(unique)
870 DWORD _RpcEnumPrinters(
872 [in, unique] WINSPOOL_HANDLE Name,
874 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinterEnum,
876 [out] DWORD* pcbNeeded,
877 [out] DWORD* pcReturned
881 DWORD _RpcOpenPrinter(
882 [in, unique] WINSPOOL_HANDLE pPrinterName,
883 [out] WINSPOOL_PRINTER_HANDLE* phPrinter,
884 [in, string, unique] WCHAR* pDatatype,
885 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
886 [in] DWORD AccessRequired
891 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
893 [in, unique] WINSPOOL_JOB_CONTAINER* pJobContainer,
899 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
902 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pJob,
904 [out] DWORD* pcbNeeded
909 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
913 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pJob,
915 [out] DWORD* pcbNeeded,
916 [out] DWORD* pcReturned
920 DWORD _RpcAddPrinter(
921 [in, unique] WINSPOOL_HANDLE pName,
922 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
923 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
924 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
925 [out] WINSPOOL_PRINTER_HANDLE* pHandle
929 DWORD _RpcDeletePrinter(
930 [in] WINSPOOL_PRINTER_HANDLE hPrinter
934 DWORD _RpcSetPrinter(
935 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
936 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
937 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
938 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
943 DWORD _RpcGetPrinter(
944 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
946 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinter,
948 [out] DWORD* pcbNeeded
952 DWORD _RpcAddPrinterDriver(
953 [in, unique] WINSPOOL_HANDLE pName,
954 [in] WINSPOOL_DRIVER_CONTAINER* pDriverContainer
958 DWORD _RpcEnumPrinterDrivers(
959 [in, unique] WINSPOOL_HANDLE pName,
960 [in, string, unique] WCHAR* pEnvironment,
962 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDrivers,
964 [out] DWORD* pcbNeeded,
965 [out] DWORD* pcReturned
969 DWORD _RpcGetPrinterDriver(
970 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
971 [in, string, unique] WCHAR* pEnvironment,
973 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriver,
975 [out] DWORD* pcbNeeded
979 DWORD _RpcGetPrinterDriverDirectory(
980 [in, unique] WINSPOOL_HANDLE pName,
981 [in, string, unique] WCHAR* pEnvironment,
983 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriverDirectory,
985 [out] DWORD* pcbNeeded
989 DWORD _RpcDeletePrinterDriver(
990 [in, unique] WINSPOOL_HANDLE pName,
991 [in, string] WCHAR* pEnvironment,
992 [in, string] WCHAR* pDriverName
996 DWORD _RpcAddPrintProcessor(
997 [in, unique] WINSPOOL_HANDLE pName,
998 [in, string] WCHAR* pEnvironment,
999 [in, string] WCHAR* pPathName,
1000 [in, string] WCHAR* pPrintProcessorName
1004 DWORD _RpcEnumPrintProcessors(
1005 [in, unique] WINSPOOL_HANDLE pName,
1006 [in, string, unique] WCHAR* pEnvironment,
1008 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrintProcessorInfo,
1010 [out] DWORD* pcbNeeded,
1011 [out] DWORD* pcReturned
1015 DWORD _RpcGetPrintProcessorDirectory(
1016 [in, unique] WINSPOOL_HANDLE pName,
1017 [in, string, unique] WCHAR* pEnvironment,
1019 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrintProcessorDirectory,
1021 [out] DWORD* pcbNeeded
1025 DWORD _RpcStartDocPrinter(
1026 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1027 [in] WINSPOOL_DOC_INFO_CONTAINER* pDocInfoContainer,
1032 DWORD _RpcStartPagePrinter(
1033 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1037 DWORD _RpcWritePrinter(
1038 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1039 [in, size_is(cbBuf)] BYTE* pBuf,
1041 [out] DWORD* pcWritten
1045 DWORD _RpcEndPagePrinter(
1046 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1050 DWORD _RpcAbortPrinter(
1051 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1055 DWORD _RpcReadPrinter(
1056 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1057 [out, size_is(cbBuf)] BYTE* pBuf,
1059 [out] DWORD* pcNoBytesRead
1063 DWORD _RpcEndDocPrinter(
1064 [in] WINSPOOL_PRINTER_HANDLE hPrinter
1069 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1071 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pAddJob,
1073 [out] DWORD* pcbNeeded
1077 DWORD _RpcScheduleJob(
1078 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1083 DWORD _RpcGetPrinterData(
1084 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1085 [in, string] WCHAR* pValueName,
1087 [out, size_is(nSize)] BYTE* pData,
1089 [out] DWORD* pcbNeeded
1093 DWORD _RpcSetPrinterData(
1094 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1095 [in, string] WCHAR* pValueName,
1097 [in, size_is(cbData)] BYTE* pData,
1102 DWORD _RpcWaitForPrinterChange(
1103 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1109 DWORD _RpcClosePrinter(
1110 [in, out] WINSPOOL_PRINTER_HANDLE* phPrinter
1115 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1116 [in] WINSPOOL_FORM_CONTAINER* pFormInfoContainer
1120 DWORD _RpcDeleteForm(
1121 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1122 [in, string] WCHAR* pFormName
1127 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1128 [in, string] WCHAR* pFormName,
1130 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pForm,
1132 [out] DWORD* pcbNeeded
1137 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1138 [in, string] WCHAR* pFormName,
1139 [in] WINSPOOL_FORM_CONTAINER* pFormInfoContainer
1143 DWORD _RpcEnumForms(
1144 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1146 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pForm,
1148 [out] DWORD* pcbNeeded,
1149 [out] DWORD* pcReturned
1153 DWORD _RpcEnumPorts(
1154 [in, unique] WINSPOOL_HANDLE pName,
1156 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPort,
1158 [out] DWORD* pcbNeeded,
1159 [out] DWORD* pcReturned
1163 DWORD _RpcEnumMonitors(
1164 [in, unique] WINSPOOL_HANDLE pName,
1166 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pMonitor,
1168 [out] DWORD* pcbNeeded,
1169 [out] DWORD* pcReturned
1174 [in, unique] WINSPOOL_HANDLE pName,
1175 [in] ULONG_PTR hWnd,
1176 [in] WCHAR* pMonitorName
1180 DWORD _RpcConfigurePort(
1181 [in, unique] WINSPOOL_HANDLE pName,
1182 [in] ULONG_PTR hWnd,
1183 [in] WCHAR* pPortName
1187 DWORD _RpcDeletePort(
1188 [in, unique] WINSPOOL_HANDLE pName,
1189 [in] ULONG_PTR hWnd,
1190 [in, string] WCHAR* pPortName
1194 DWORD _RpcCreatePrinterIC(
1195 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1196 [out] WINSPOOL_GDI_HANDLE* pHandle,
1197 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer
1201 DWORD _RpcPlayGdiScriptOnPrinterIC(
1202 [in] WINSPOOL_GDI_HANDLE hPrinterIC,
1203 [in, size_is(cIn)] BYTE* pIn,
1205 [out, size_is(cOut)] BYTE* pOut,
1211 DWORD _RpcDeletePrinterIC(
1212 [in, out] WINSPOOL_GDI_HANDLE* phPrinterIC
1216 DWORD _RpcAddPrinterConnection(
1217 [in, unique] WINSPOOL_HANDLE pName
1221 DWORD _RpcDeletePrinterConnection(
1222 [in, unique] WINSPOOL_HANDLE pName
1226 DWORD _RpcPrinterMessageBox(
1227 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1229 [in] ULONG_PTR hWnd,
1230 [in, string] WCHAR* pText,
1231 [in, string] WCHAR* pCaption,
1236 DWORD _RpcAddMonitor(
1237 [in, unique] WINSPOOL_HANDLE pName,
1238 [in] WINSPOOL_MONITOR_CONTAINER* pMonitorContainer
1242 DWORD _RpcDeleteMonitor(
1243 [in, unique] WINSPOOL_HANDLE pName,
1244 [in, string, unique] WCHAR* pEnvironment,
1245 [in, string] WCHAR* pMonitorName
1249 DWORD _RpcDeletePrintProcessor(
1250 [in, unique] WINSPOOL_HANDLE pName,
1251 [in, string, unique] WCHAR* pEnvironment,
1252 [in, string] WCHAR* pPrintProcessorName
1256 DWORD _RpcAddPrintProvidor(
1257 [in, unique] WINSPOOL_HANDLE pName,
1258 [in] WINSPOOL_PROVIDOR_CONTAINER* pProvidorContainer
1262 DWORD _RpcDeletePrintProvidor(
1263 [in, unique] WINSPOOL_HANDLE pName,
1264 [in, string, unique] WCHAR* pEnvironment,
1265 [in, string] WCHAR* pPrintProviderName
1269 DWORD _RpcEnumPrintProcessorDatatypes(
1270 [in, unique] WINSPOOL_HANDLE pName,
1271 [in, string, unique] WCHAR* pPrintProcessorName,
1273 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDatatypes,
1275 [out] DWORD* pcbNeeded,
1276 [out] DWORD* pcReturned
1280 DWORD _RpcResetPrinter(
1281 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1282 [in, string, unique] WCHAR* pDatatype,
1283 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer
1287 DWORD _RpcGetPrinterDriver2(
1288 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1289 [in, string, unique] WCHAR* pEnvironment,
1291 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pDriver,
1293 [out] DWORD* pcbNeeded,
1294 [in] DWORD dwClientMajorVersion,
1295 [in] DWORD dwClientMinorVersion,
1296 [out] DWORD* pdwServerMaxVersion,
1297 [out] DWORD* pdwServerMinVersion
1300 /* Function 0x36 (TODO) */
1301 DWORD _RpcClientFindFirstPrinterChangeNotification(
1305 /* Function 0x37 (TODO) */
1306 DWORD _RpcFindNextPrinterChangeNotification(
1310 /* Function 0x38 (TODO) */
1311 DWORD _RpcFindClosePrinterChangeNotification(
1315 /* Function 0x39 (TODO) */
1316 DWORD _RpcRouterFindFirstPrinterChangeNotificationOld(
1321 DWORD _RpcReplyOpenPrinter(
1322 [in] WINSPOOL_HANDLE pMachine,
1323 [out] WINSPOOL_PRINTER_HANDLE* phPrinterNotify,
1324 [in] DWORD dwPrinterRemote,
1326 [in, range(0, 512)] DWORD cbBuffer,
1327 [in, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1331 DWORD _RpcRouterReplyPrinter(
1332 [in] WINSPOOL_PRINTER_HANDLE hNotify,
1333 [in] DWORD fdwFlags,
1334 [in, range(0, 512)] DWORD cbBuffer,
1335 [in, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1339 DWORD _RpcReplyClosePrinter(
1340 [in, out] WINSPOOL_PRINTER_HANDLE* phNotify
1344 DWORD _RpcAddPortEx(
1345 [in] WINSPOOL_HANDLE pName,
1346 [in] WINSPOOL_PORT_CONTAINER* pPortContainer,
1347 [in] WINSPOOL_PORT_VAR_CONTAINER* pPortVarContainer,
1348 [in, string] WCHAR* pMonitorName
1352 DWORD _RpcRemoteFindFirstPrinterChangeNotification(
1353 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1354 [in] DWORD fdwFlags,
1355 [in] DWORD fdwOptions,
1356 [in, string, unique] WCHAR* pszLocalMachine,
1357 [in] DWORD dwPrinterLocal,
1358 [in, range(0, 512)] DWORD cbBuffer,
1359 [in, out, unique, size_is(cbBuffer), disable_consistency_check] BYTE* pBuffer
1363 DWORD _RpcSpoolerInit();
1365 /* Function 0x40 (TODO) */
1366 DWORD _RpcResetPrinterEx(
1371 DWORD _RpcRemoteFindFirstPrinterChangeNotificationEx(
1372 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1373 [in] DWORD fdwFlags,
1374 [in] DWORD fdwOptions,
1375 [in, string, unique] WCHAR* pszLocalMachine,
1376 [in] DWORD dwPrinterLocal,
1377 [in, unique] WINSPOOL_V2_NOTIFY_OPTIONS* pOptions
1381 DWORD _RpcRouterReplyPrinterEx(
1382 [in] WINSPOOL_PRINTER_HANDLE hNotify,
1384 [in] DWORD fdwFlags,
1385 [out] DWORD* pdwResult,
1386 [in] DWORD dwReplyType,
1387 [in, switch_is(dwReplyType)] WINSPOOL_V2_UREPLY_PRINTER Reply
1391 DWORD _RpcRouterRefreshPrinterChangeNotification(
1392 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1394 [in, unique] WINSPOOL_V2_NOTIFY_OPTIONS* pOptions,
1395 [out] WINSPOOL_V2_NOTIFY_INFO** ppInfo
1398 /* Function 0x44 (TODO) */
1399 DWORD _RpcSetAllocFailCount(
1404 DWORD _RpcOpenPrinterEx(
1405 [in, unique] WINSPOOL_HANDLE pPrinterName,
1406 [out] WINSPOOL_PRINTER_HANDLE* pHandle,
1407 [in, string, unique] WCHAR* pDatatype,
1408 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
1409 [in] DWORD AccessRequired,
1410 [in] WINSPOOL_SPLCLIENT_CONTAINER* pClientInfo
1414 DWORD _RpcAddPrinterEx(
1415 [in, unique] WINSPOOL_HANDLE pName,
1416 [in] WINSPOOL_PRINTER_CONTAINER* pPrinterContainer,
1417 [in] WINSPOOL_DEVMODE_CONTAINER* pDevModeContainer,
1418 [in] WINSPOOL_SECURITY_CONTAINER* pSecurityContainer,
1419 [in] WINSPOOL_SPLCLIENT_CONTAINER* pClientInfo,
1420 [out] WINSPOOL_PRINTER_HANDLE* pHandle
1425 [in, unique] WINSPOOL_HANDLE pName,
1426 [in, string, unique] WCHAR* pPortName,
1427 [in] WINSPOOL_PORT_CONTAINER* pPortContainer
1431 DWORD _RpcEnumPrinterData(
1432 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1434 [out, size_is(cbValueName / sizeof(WCHAR))] WCHAR* pValueName,
1435 [in] DWORD cbValueName,
1436 [out] DWORD* pcbValueName,
1438 [out, size_is(cbData)] BYTE* pData,
1440 [out] DWORD* pcbData
1444 DWORD _RpcDeletePrinterData(
1445 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1446 [in, string] WCHAR* pValueName
1449 /* Function 0x4A (TODO) */
1450 DWORD _RpcClusterSplOpen(
1454 /* Function 0x4B (TODO) */
1455 DWORD _RpcClusterSplClose(
1459 /* Function 0x4C (TODO) */
1460 DWORD _RpcClusterSplIsAlive(
1465 DWORD _RpcSetPrinterDataEx(
1466 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1467 [in, string] const WCHAR* pKeyName,
1468 [in, string] const WCHAR* pValueName,
1470 [in, size_is(cbData)] BYTE* pData,
1475 DWORD _RpcGetPrinterDataEx(
1476 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1477 [in, string] const WCHAR* pKeyName,
1478 [in, string] const WCHAR* pValueName,
1480 [out, size_is(nSize)] BYTE* pData,
1482 [out] DWORD* pcbNeeded
1486 DWORD _RpcEnumPrinterDataEx(
1487 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1488 [in, string] const WCHAR* pKeyName,
1489 [out, size_is(cbEnumValues)] BYTE* pEnumValues,
1490 [in] DWORD cbEnumValues,
1491 [out] DWORD* pcbEnumValues,
1492 [out] DWORD* pnEnumValues
1496 DWORD _RpcEnumPrinterKey(
1497 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1498 [in, string] const WCHAR* pKeyName,
1499 [out, size_is(cbSubkey / sizeof(WCHAR))] WCHAR* pSubkey,
1500 [in] DWORD cbSubkey,
1501 [out] DWORD* pcbSubkey
1505 DWORD _RpcDeletePrinterDataEx(
1506 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1507 [in, string] const WCHAR* pKeyName,
1508 [in, string] const WCHAR* pValueName
1512 DWORD _RpcDeletePrinterKey(
1513 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1514 [in, string] const WCHAR* pKeyName
1517 /* Function 0x53 (TODO) */
1518 DWORD _RpcSeekPrinter(
1523 DWORD _RpcDeletePrinterDriverEx(
1524 [in, unique] WINSPOOL_HANDLE pName,
1525 [in, string] WCHAR* pEnvironment,
1526 [in, string] WCHAR* pDriverName,
1527 [in] DWORD dwDeleteFlag,
1528 [in] DWORD dwVersionNum
1532 DWORD _RpcAddPerMachineConnection(
1533 [in, unique] WINSPOOL_HANDLE pServer,
1534 [in, string] const WCHAR* pPrinterName,
1535 [in, string] const WCHAR* pPrintServer,
1536 [in, string] const WCHAR* pProvider
1540 DWORD _RpcDeletePerMachineConnection(
1541 [in, unique] WINSPOOL_HANDLE pServer,
1542 [in, string] const WCHAR* pPrinterName
1546 DWORD _RpcEnumPerMachineConnections(
1547 [in, unique] WINSPOOL_HANDLE pServer,
1548 [in, out, unique, size_is(cbBuf), disable_consistency_check] BYTE* pPrinterEnum,
1550 [out] DWORD* pcbNeeded,
1551 [out] DWORD* pcReturned
1556 [in] WINSPOOL_PRINTER_HANDLE hXcv,
1557 [in, string] const WCHAR* pszDataName,
1558 [in, size_is(cbInputData)] BYTE* pInputData,
1559 [in] DWORD cbInputData,
1560 [out, size_is(cbOutputData)] BYTE* pOutputData,
1561 [in] DWORD cbOutputData,
1562 [out] DWORD* pcbOutputNeeded,
1563 [in, out] DWORD* pdwStatus
1567 DWORD _RpcAddPrinterDriverEx(
1568 [in, unique] WINSPOOL_HANDLE pName,
1569 [in] WINSPOOL_DRIVER_CONTAINER* pDriverContainer,
1570 [in] DWORD dwFileCopyFlags
1573 /* Function 0x5A (TODO) */
1574 DWORD _RpcSplOpenPrinter(
1578 /* Function 0x5B (TODO) */
1579 DWORD _RpcGetSpoolFileInfo(
1583 /* Function 0x5C (TODO) */
1584 DWORD _RpcCommitSpoolData(
1588 /* Function 0x5D (TODO) */
1589 DWORD _RpcCloseSpoolFileHandle(
1594 DWORD _RpcFlushPrinter(
1595 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1596 [in, size_is(cbBuf)] BYTE* pBuf,
1598 [out] DWORD* pcWritten,
1603 DWORD _RpcSendRecvBidiData(
1604 [in] WINSPOOL_PRINTER_HANDLE hPrinter,
1605 [in, string, unique] const WCHAR* pAction,
1606 [in] WINSPOOL_BIDI_REQUEST_CONTAINER* pReqData,
1607 [out] WINSPOOL_BIDI_RESPONSE_CONTAINER** ppRespData
1610 /* Function 0x60 (TODO) */
1611 DWORD _RpcAddDriverCatalog(