1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 */
25
26#ifndef _MLSVC_SPOOLSS_NDL_
27#define _MLSVC_SPOOLSS_NDL_
28
29#pragma ident	"%Z%%M%	%I%	%E% SMI"
30
31/*
32 * Printing and Spooling RPC interface definition.
33 */
34
35#include "ndrtypes.ndl"
36
37
38/*
39 * The spoolss opcodes.
40 */
41#define SPOOLSS_OPNUM_OpenPrinter			0x01
42#define SPOOLSS_OPNUM_GetJob				0x03
43#define SPOOLSS_OPNUM_DeletePrinter			0x06
44#define SPOOLSS_OPNUM_GetPrinterDriver			0x0b
45#define SPOOLSS_OPNUM_DeletePrinterDriver		0x0d
46#define SPOOLSS_OPNUM_AddPrintProcessor			0x0e
47#define SPOOLSS_OPNUM_GetPrintProcessorDirectory	0x10
48#define SPOOLSS_OPNUM_AbortPrinter			0x15
49#define SPOOLSS_OPNUM_ReadPrinter			0x16
50#define SPOOLSS_OPNUM_WaitForPrinterChange		0x1c
51#define SPOOLSS_OPNUM_AddForm				0x1e
52#define SPOOLSS_OPNUM_DeleteForm			0x1f
53#define SPOOLSS_OPNUM_GetForm				0x20
54#define SPOOLSS_OPNUM_SetForm				0x21
55#define SPOOLSS_OPNUM_EnumMonitors			0x24
56#define SPOOLSS_OPNUM_AddPort				0x25
57#define SPOOLSS_OPNUM_ConfigurePort			0x26
58#define SPOOLSS_OPNUM_DeletePort			0x27
59#define SPOOLSS_OPNUM_CreatePrinterIc			0x28
60#define SPOOLSS_OPNUM_PlayDescriptionPrinterIc		0x29
61#define SPOOLSS_OPNUM_DeletePrinterIc			0x2a
62#define SPOOLSS_OPNUM_AddPrinterConnection		0x2b
63#define SPOOLSS_OPNUM_DeletePrinterConnection		0x2c
64#define SPOOLSS_OPNUM_PrinterMessageBox			0x2d
65#define SPOOLSS_OPNUM_AddMonitor			0x2e
66#define SPOOLSS_OPNUM_DeleteMonitor			0x2f
67#define SPOOLSS_OPNUM_DeletePrintProcessor		0x30
68#define SPOOLSS_OPNUM_AddPrintProvider			0x31
69#define SPOOLSS_OPNUM_DeletePrintProvider		0x32
70#define SPOOLSS_OPNUM_ResetPrinter			0x34
71#define SPOOLSS_OPNUM_FindFirstChangeNotify		0x36
72#define SPOOLSS_OPNUM_FindNextChangeNotify		0x37
73#define SPOOLSS_OPNUM_RouterFindFirstNotify		0x39
74#define SPOOLSS_OPNUM_ReplyOpenPrinter			0x3a
75#define SPOOLSS_OPNUM_RouterReplyPrinter                0x3b
76#define SPOOLSS_OPNUM_ReplyClosePrinter			0x3c
77#define SPOOLSS_OPNUM_AddPortEx				0x3d
78#define SPOOLSS_OPNUM_RemoteFindFirstChangeNotify	0x3e
79#define SPOOLSS_OPNUM_SpoolerInitialize			0x3f
80#define SPOOLSS_OPNUM_ResetPrinterEx			0x40
81#define SPOOLSS_OPNUM_RouterRefreshChangeNotify		0x42
82#define SPOOLSS_OPNUM_OpenPrinter2			0x45
83
84
85/*
86 * The private handle definition for this interface.
87 */
88struct spoolss_handle {
89	DWORD data[5];
90};
91typedef struct spoolss_handle spoolss_handle_t;
92
93
94OPERATION(SPOOLSS_OPNUM_OpenPrinter)
95struct spoolss_OpenPrinter {
96	IN	DWORD dontcare;
97	OUT	spoolss_handle_t handle;
98	OUT	DWORD status;
99};
100
101
102OPERATION(SPOOLSS_OPNUM_GetJob)
103struct spoolss_GetJob {
104	IN	DWORD dontcare;
105	OUT	DWORD status;
106};
107
108
109OPERATION(SPOOLSS_OPNUM_DeletePrinter)
110struct spoolss_DeletePrinter {
111	IN	DWORD dontcare;
112	OUT	DWORD status;
113};
114
115
116OPERATION(SPOOLSS_OPNUM_GetPrinterDriver)
117struct spoolss_GetPrinterDriver {
118	IN	DWORD dontcare;
119	OUT	DWORD status;
120};
121
122
123OPERATION(SPOOLSS_OPNUM_DeletePrinterDriver)
124struct spoolss_DeletePrinterDriver {
125	IN	DWORD dontcare;
126	OUT	DWORD status;
127};
128
129
130OPERATION(SPOOLSS_OPNUM_AddPrintProcessor)
131struct spoolss_AddPrintProcessor {
132	IN	DWORD dontcare;
133	OUT	DWORD status;
134};
135
136
137OPERATION(SPOOLSS_OPNUM_GetPrintProcessorDirectory)
138struct spoolss_GetPrintProcessorDirectory {
139	IN	DWORD dontcare;
140	OUT	DWORD status;
141};
142
143
144OPERATION(SPOOLSS_OPNUM_AbortPrinter)
145struct spoolss_AbortPrinter {
146	IN	DWORD dontcare;
147	OUT	DWORD status;
148};
149
150
151OPERATION(SPOOLSS_OPNUM_ReadPrinter)
152struct spoolss_ReadPrinter {
153	IN	DWORD dontcare;
154	OUT	DWORD status;
155};
156
157
158OPERATION(SPOOLSS_OPNUM_WaitForPrinterChange)
159struct spoolss_WaitForPrinterChange {
160	IN	DWORD dontcare;
161	OUT	DWORD status;
162};
163
164
165OPERATION(SPOOLSS_OPNUM_AddForm)
166struct spoolss_AddForm {
167	IN	DWORD dontcare;
168	OUT	DWORD status;
169};
170
171
172OPERATION(SPOOLSS_OPNUM_DeleteForm)
173struct spoolss_DeleteForm {
174	IN	DWORD dontcare;
175	OUT	DWORD status;
176};
177
178
179OPERATION(SPOOLSS_OPNUM_GetForm)
180struct spoolss_GetForm {
181	IN	DWORD dontcare;
182	OUT	DWORD status;
183};
184
185
186OPERATION(SPOOLSS_OPNUM_SetForm)
187struct spoolss_SetForm {
188	IN	DWORD dontcare;
189	OUT	DWORD status;
190};
191
192
193OPERATION(SPOOLSS_OPNUM_EnumMonitors)
194struct spoolss_EnumMonitors {
195	IN	DWORD dontcare;
196	OUT	DWORD status;
197};
198
199
200OPERATION(SPOOLSS_OPNUM_AddPort)
201struct spoolss_AddPort {
202	IN	DWORD dontcare;
203	OUT	DWORD status;
204};
205
206
207OPERATION(SPOOLSS_OPNUM_ConfigurePort)
208struct spoolss_ConfigurePort {
209	IN	DWORD dontcare;
210	OUT	DWORD status;
211};
212
213
214OPERATION(SPOOLSS_OPNUM_DeletePort)
215struct spoolss_DeletePort {
216	IN	DWORD dontcare;
217	OUT	DWORD status;
218};
219
220
221OPERATION(SPOOLSS_OPNUM_CreatePrinterIc)
222struct spoolss_CreatePrinterIc {
223	IN	DWORD dontcare;
224	OUT	DWORD status;
225};
226
227
228OPERATION(SPOOLSS_OPNUM_PlayDescriptionPrinterIc)
229struct spoolss_PlayDescriptionPrinterIc {
230	IN	DWORD dontcare;
231	OUT	DWORD status;
232};
233
234
235OPERATION(SPOOLSS_OPNUM_DeletePrinterIc)
236struct spoolss_DeletePrinterIc {
237	IN	DWORD dontcare;
238	OUT	DWORD status;
239};
240
241
242OPERATION(SPOOLSS_OPNUM_AddPrinterConnection)
243struct spoolss_AddPrinterConnection {
244	IN	DWORD dontcare;
245	OUT	DWORD status;
246};
247
248
249OPERATION(SPOOLSS_OPNUM_DeletePrinterConnection)
250struct spoolss_DeletePrinterConnection {
251	IN	DWORD dontcare;
252	OUT	DWORD status;
253};
254
255
256OPERATION(SPOOLSS_OPNUM_PrinterMessageBox)
257struct spoolss_PrinterMessageBox {
258	IN	DWORD dontcare;
259	OUT	DWORD status;
260};
261
262
263OPERATION(SPOOLSS_OPNUM_AddMonitor)
264struct spoolss_AddMonitor {
265	IN	DWORD dontcare;
266	OUT	DWORD status;
267};
268
269
270OPERATION(SPOOLSS_OPNUM_DeleteMonitor)
271struct spoolss_DeleteMonitor {
272	IN	DWORD dontcare;
273	OUT	DWORD status;
274};
275
276
277OPERATION(SPOOLSS_OPNUM_DeletePrintProcessor)
278struct spoolss_DeletePrintProcessor {
279	IN	DWORD dontcare;
280	OUT	DWORD status;
281};
282
283
284OPERATION(SPOOLSS_OPNUM_AddPrintProvider)
285struct spoolss_AddPrintProvider {
286	IN	DWORD dontcare;
287	OUT	DWORD status;
288};
289
290
291OPERATION(SPOOLSS_OPNUM_DeletePrintProvider)
292struct spoolss_DeletePrintProvider {
293	IN	DWORD dontcare;
294	OUT	DWORD status;
295};
296
297
298OPERATION(SPOOLSS_OPNUM_ResetPrinter)
299struct spoolss_ResetPrinter {
300	IN	DWORD dontcare;
301	OUT	DWORD status;
302};
303
304
305OPERATION(SPOOLSS_OPNUM_FindFirstChangeNotify)
306struct spoolss_FindFirstChangeNotify {
307	IN	DWORD dontcare;
308	OUT	DWORD status;
309};
310
311
312OPERATION(SPOOLSS_OPNUM_FindNextChangeNotify)
313struct spoolss_FindNextChangeNotify {
314	IN	DWORD dontcare;
315	OUT	DWORD status;
316};
317
318
319OPERATION(SPOOLSS_OPNUM_RouterFindFirstNotify)
320struct spoolss_RouterFindFirstNotify {
321	IN	DWORD dontcare;
322	OUT	DWORD status;
323};
324
325
326OPERATION(SPOOLSS_OPNUM_ReplyOpenPrinter)
327struct spoolss_ReplyOpenPrinter {
328	IN	DWORD dontcare;
329	OUT	DWORD status;
330};
331
332
333OPERATION(SPOOLSS_OPNUM_RouterReplyPrinter)
334struct spoolss_RouterReplyPrinter {
335	IN	DWORD dontcare;
336	OUT	DWORD status;
337};
338
339
340OPERATION(SPOOLSS_OPNUM_ReplyClosePrinter)
341struct spoolss_ReplyClosePrinter {
342	IN	DWORD dontcare;
343	OUT	DWORD status;
344};
345
346
347OPERATION(SPOOLSS_OPNUM_AddPortEx)
348struct spoolss_AddPortEx {
349	IN	DWORD dontcare;
350	OUT	DWORD status;
351};
352
353
354OPERATION(SPOOLSS_OPNUM_RemoteFindFirstChangeNotify)
355struct spoolss_RemoteFindFirstChangeNotify {
356	IN	DWORD dontcare;
357	OUT	DWORD status;
358};
359
360
361OPERATION(SPOOLSS_OPNUM_SpoolerInitialize)
362struct spoolss_SpoolerInitialize {
363	IN	DWORD dontcare;
364	OUT	DWORD status;
365};
366
367
368OPERATION(SPOOLSS_OPNUM_ResetPrinterEx)
369struct spoolss_ResetPrinterEx {
370	IN	DWORD dontcare;
371	OUT	DWORD status;
372};
373
374
375OPERATION(SPOOLSS_OPNUM_RouterRefreshChangeNotify)
376struct spoolss_RouterRefreshChangeNotify {
377	IN	DWORD dontcare;
378	OUT	DWORD status;
379};
380
381
382OPERATION(SPOOLSS_OPNUM_OpenPrinter2)
383struct spoolss_OpenPrinter2 {
384	IN	DWORD dontcare;
385	OUT	spoolss_handle_t handle;
386	OUT	DWORD status;
387};
388
389
390/*
391 ***********************************************************************
392 * The spoolss interface definition.
393 ***********************************************************************
394 */
395INTERFACE(0)
396union spoolss_interface {
397 	CASE(SPOOLSS_OPNUM_OpenPrinter)
398		struct spoolss_OpenPrinter		OpenPrinter;
399 	CASE(SPOOLSS_OPNUM_GetJob)
400		struct spoolss_GetJob			GetJob;
401	CASE(SPOOLSS_OPNUM_DeletePrinter)
402		struct spoolss_DeletePrinter		DeletePrinter;
403	CASE(SPOOLSS_OPNUM_GetPrinterDriver)
404		struct spoolss_GetPrinterDriver		GetPrinterDriver;
405	CASE(SPOOLSS_OPNUM_DeletePrinterDriver)
406		struct spoolss_DeletePrinterDriver	DeletePrinterDriver;
407	CASE(SPOOLSS_OPNUM_AddPrintProcessor)
408		struct spoolss_AddPrintProcessor	AddPrintProcessor;
409	CASE(SPOOLSS_OPNUM_GetPrintProcessorDirectory)
410		struct spoolss_GetPrintProcessorDirectory
411						GetPrintProcessorDirectory;
412	CASE(SPOOLSS_OPNUM_AbortPrinter)
413		struct spoolss_AbortPrinter		AbortPrinter;
414	CASE(SPOOLSS_OPNUM_ReadPrinter)
415		struct spoolss_ReadPrinter		ReadPrinter;
416	CASE(SPOOLSS_OPNUM_WaitForPrinterChange)
417		struct spoolss_WaitForPrinterChange	WaitForPrinterChange;
418	CASE(SPOOLSS_OPNUM_AddForm)
419		struct spoolss_AddForm			AddForm;
420	CASE(SPOOLSS_OPNUM_DeleteForm)
421		struct spoolss_DeleteForm		DeleteForm;
422	CASE(SPOOLSS_OPNUM_GetForm)
423		struct spoolss_GetForm			GetForm;
424	CASE(SPOOLSS_OPNUM_SetForm)
425		struct spoolss_SetForm			SetForm;
426	CASE(SPOOLSS_OPNUM_EnumMonitors)
427		struct spoolss_EnumMonitors		EnumMonitors;
428	CASE(SPOOLSS_OPNUM_AddPort)
429		struct spoolss_AddPort			AddPort;
430	CASE(SPOOLSS_OPNUM_ConfigurePort)
431		struct spoolss_ConfigurePort		ConfigurePort;
432	CASE(SPOOLSS_OPNUM_DeletePort)
433		struct spoolss_DeletePort		DeletePort;
434	CASE(SPOOLSS_OPNUM_CreatePrinterIc)
435		struct spoolss_CreatePrinterIc		CreatePrinterIc;
436	CASE(SPOOLSS_OPNUM_PlayDescriptionPrinterIc)
437		struct spoolss_PlayDescriptionPrinterIc
438						PlayDescriptionPrinterIc;
439	CASE(SPOOLSS_OPNUM_DeletePrinterIc)
440		struct spoolss_DeletePrinterIc		DeletePrinterIc;
441	CASE(SPOOLSS_OPNUM_AddPrinterConnection)
442		struct spoolss_AddPrinterConnection	AddPrinterConnection;
443	CASE(SPOOLSS_OPNUM_DeletePrinterConnection)
444		struct spoolss_DeletePrinterConnection	DeletePrinterConnection;
445	CASE(SPOOLSS_OPNUM_PrinterMessageBox)
446		struct spoolss_PrinterMessageBox	PrinterMessageBox;
447	CASE(SPOOLSS_OPNUM_AddMonitor)
448		struct spoolss_AddMonitor		AddMonitor;
449	CASE(SPOOLSS_OPNUM_DeleteMonitor)
450		struct spoolss_DeleteMonitor		DeleteMonitor;
451	CASE(SPOOLSS_OPNUM_DeletePrintProcessor)
452		struct spoolss_DeletePrintProcessor	DeletePrintProcessor;
453	CASE(SPOOLSS_OPNUM_AddPrintProvider)
454		struct spoolss_AddPrintProvider		AddPrintProvider;
455	CASE(SPOOLSS_OPNUM_DeletePrintProvider)
456		struct spoolss_DeletePrintProvider	DeletePrintProvider;
457	CASE(SPOOLSS_OPNUM_ResetPrinter)
458		struct spoolss_ResetPrinter		ResetPrinter;
459	CASE(SPOOLSS_OPNUM_FindFirstChangeNotify)
460		struct spoolss_FindFirstChangeNotify	FindFirstChangeNotify;
461	CASE(SPOOLSS_OPNUM_FindNextChangeNotify)
462		struct spoolss_FindNextChangeNotify	FindNextChangeNotify;
463	CASE(SPOOLSS_OPNUM_RouterFindFirstNotify)
464		struct spoolss_RouterFindFirstNotify	RouterFindFirstNotify;
465	CASE(SPOOLSS_OPNUM_ReplyOpenPrinter)
466		struct spoolss_ReplyOpenPrinter		ReplyOpenPrinter;
467	CASE(SPOOLSS_OPNUM_RouterReplyPrinter)
468		struct spoolss_RouterReplyPrinter	RouterReplyPrinter;
469	CASE(SPOOLSS_OPNUM_ReplyClosePrinter)
470		struct spoolss_ReplyClosePrinter	ReplyClosePrinter;
471	CASE(SPOOLSS_OPNUM_AddPortEx)
472		struct spoolss_AddPortEx		AddPortEx;
473	CASE(SPOOLSS_OPNUM_RemoteFindFirstChangeNotify)
474		struct spoolss_RemoteFindFirstChangeNotify
475						RemoteFindFirstChangeNotify;
476	CASE(SPOOLSS_OPNUM_SpoolerInitialize)
477		struct spoolss_SpoolerInitialize	SpoolerInitialize;
478	CASE(SPOOLSS_OPNUM_ResetPrinterEx)
479		struct spoolss_ResetPrinterEx		ResetPrinterEx;
480	CASE(SPOOLSS_OPNUM_RouterRefreshChangeNotify)
481		struct spoolss_RouterRefreshChangeNotify
482						RouterRefreshChangeNotify;
483	CASE(SPOOLSS_OPNUM_OpenPrinter2)
484		struct spoolss_OpenPrinter2		OpenPrinter2;
485};
486typedef union spoolss_interface	spoolss_interface_t;
487EXTERNTYPEINFO(spoolss_interface)
488
489#endif /* _MLSVC_SPOOLSS_NDL_ */
490