2 Unix SMB/CIFS implementation.
4 NTPTR structures and defines
6 Copyright (C) Stefan (metze) Metzmacher 2005
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 /* modules can use the following to determine if the interface has changed */
24 #define NTPTR_INTERFACE_VERSION 0
28 enum ntptr_HandleType
{
35 struct ntptr_GenericHandle
{
36 enum ntptr_HandleType type
;
37 struct ntptr_context
*ntptr
;
38 const char *object_name
;
43 struct spoolss_OpenPrinterEx
;
44 struct spoolss_EnumPrinterData
;
45 struct spoolss_DeletePrinterData
;
46 struct spoolss_AddForm
;
47 struct spoolss_GetForm
;
48 struct spoolss_SetForm
;
49 struct spoolss_DeleteForm
;
50 struct spoolss_AddPrinterDriver
;
51 struct spoolss_DeletePrinterDriver
;
52 struct spoolss_GetPrinterDriverDirectory
;
53 struct spoolss_AddPrinter
;
54 struct spoolss_GetPrinter
;
55 struct spoolss_SetPrinter
;
56 struct spoolss_DeletePrinter
;
57 struct spoolss_GetPrinterDriver
;
58 struct spoolss_AddJob
;
59 struct spoolss_EnumJobs
;
60 struct spoolss_SetJob
;
61 struct spoolss_GetJob
;
62 struct spoolss_ScheduleJob
;
63 struct spoolss_ReadPrinter
;
64 struct spoolss_WritePrinter
;
65 struct spoolss_StartDocPrinter
;
66 struct spoolss_EndDocPrinter
;
67 struct spoolss_StartPagePrinter
;
68 struct spoolss_EndPagePrinter
;
69 struct spoolss_GetPrinterData
;
70 struct spoolss_SetPrinterData
;
71 struct spoolss_EnumPrinterDrivers
;
72 struct spoolss_EnumMonitors
;
73 struct spoolss_EnumPrinters
;
74 struct spoolss_EnumForms
;
75 struct spoolss_EnumPorts
;
76 struct spoolss_EnumPrintProcessors
;
77 struct spoolss_XcvData
;
79 /* the ntptr operations structure - contains function pointers to
80 the backend implementations of each operation */
85 NTSTATUS (*init_context
)(struct ntptr_context
*ntptr
);
87 /* PrintServer functions */
88 WERROR (*OpenPrintServer
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
89 struct spoolss_OpenPrinterEx
*r
,
90 const char *printer_name
,
91 struct ntptr_GenericHandle
**server
);
92 WERROR (*XcvDataPrintServer
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
93 struct spoolss_XcvData
*r
);
95 /* PrintServer PrinterData functions */
96 WERROR (*EnumPrintServerData
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
97 struct spoolss_EnumPrinterData
*r
);
98 WERROR (*GetPrintServerData
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
99 struct spoolss_GetPrinterData
*r
);
100 WERROR (*SetPrintServerData
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
101 struct spoolss_SetPrinterData
*r
);
102 WERROR (*DeletePrintServerData
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
103 struct spoolss_DeletePrinterData
*r
);
105 /* PrintServer Form functions */
106 WERROR (*EnumPrintServerForms
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
107 struct spoolss_EnumForms
*r
);
108 WERROR (*AddPrintServerForm
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
109 struct spoolss_AddForm
*r
);
110 WERROR (*SetPrintServerForm
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
111 struct spoolss_SetForm
*r
);
112 WERROR (*DeletePrintServerForm
)(struct ntptr_GenericHandle
*server
, TALLOC_CTX
*mem_ctx
,
113 struct spoolss_DeleteForm
*r
);
115 /* PrintServer Driver functions */
116 WERROR (*EnumPrinterDrivers
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
117 struct spoolss_EnumPrinterDrivers
*r
);
118 WERROR (*AddPrinterDriver
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
119 struct spoolss_AddPrinterDriver
*r
);
120 WERROR (*DeletePrinterDriver
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
121 struct spoolss_DeletePrinterDriver
*r
);
122 WERROR (*GetPrinterDriverDirectory
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
123 struct spoolss_GetPrinterDriverDirectory
*r
);
126 WERROR (*EnumPorts
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
127 struct spoolss_EnumPorts
*r
);
128 WERROR (*OpenPort
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
129 struct spoolss_OpenPrinterEx
*r
,
130 const char *port_name
,
131 struct ntptr_GenericHandle
**port
);
132 WERROR (*XcvDataPort
)(struct ntptr_GenericHandle
*port
, TALLOC_CTX
*mem_ctx
,
133 struct spoolss_XcvData
*r
);
135 /* Monitor functions */
136 WERROR (*EnumMonitors
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
137 struct spoolss_EnumMonitors
*r
);
138 WERROR (*OpenMonitor
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
139 struct spoolss_OpenPrinterEx
*r
,
140 const char *monitor_name
,
141 struct ntptr_GenericHandle
**monitor
);
142 WERROR (*XcvDataMonitor
)(struct ntptr_GenericHandle
*monitor
, TALLOC_CTX
*mem_ctx
,
143 struct spoolss_XcvData
*r
);
145 /* PrintProcessor functions */
146 WERROR (*EnumPrintProcessors
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
147 struct spoolss_EnumPrintProcessors
*r
);
149 /* Printer functions */
150 WERROR (*EnumPrinters
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
151 struct spoolss_EnumPrinters
*r
);
152 WERROR (*OpenPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
153 struct spoolss_OpenPrinterEx
*r
,
154 const char *printer_name
,
155 struct ntptr_GenericHandle
**printer
);
156 WERROR (*AddPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
157 struct spoolss_AddPrinter
*r
,
158 struct ntptr_GenericHandle
**printer
);
159 WERROR (*GetPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
160 struct spoolss_GetPrinter
*r
);
161 WERROR (*SetPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
162 struct spoolss_SetPrinter
*r
);
163 WERROR (*DeletePrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
164 struct spoolss_DeletePrinter
*r
);
165 WERROR (*XcvDataPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
166 struct spoolss_XcvData
*r
);
168 /* Printer Driver functions */
169 WERROR (*GetPrinterDriver
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
170 struct spoolss_GetPrinterDriver
*r
);
172 /* Printer PrinterData functions */
173 WERROR (*EnumPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
174 struct spoolss_EnumPrinterData
*r
);
175 WERROR (*GetPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
176 struct spoolss_GetPrinterData
*r
);
177 WERROR (*SetPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
178 struct spoolss_SetPrinterData
*r
);
179 WERROR (*DeletePrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
180 struct spoolss_DeletePrinterData
*r
);
182 /* Printer Form functions */
183 WERROR (*EnumPrinterForms
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
184 struct spoolss_EnumForms
*r
);
185 WERROR (*AddPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
186 struct spoolss_AddForm
*r
);
187 WERROR (*GetPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
188 struct spoolss_GetForm
*r
);
189 WERROR (*SetPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
190 struct spoolss_SetForm
*r
);
191 WERROR (*DeletePrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
192 struct spoolss_DeleteForm
*r
);
194 /* Printer Job functions */
195 WERROR (*EnumJobs
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
196 struct spoolss_EnumJobs
*r
);
197 WERROR (*AddJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
198 struct spoolss_AddJob
*r
);
199 WERROR (*ScheduleJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
200 struct spoolss_ScheduleJob
*r
);
201 WERROR (*GetJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
202 struct spoolss_GetJob
*r
);
203 WERROR (*SetJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
204 struct spoolss_SetJob
*r
);
206 /* Printer Printing functions */
207 WERROR (*StartDocPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
208 struct spoolss_StartDocPrinter
*r
);
209 WERROR (*EndDocPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
210 struct spoolss_EndDocPrinter
*r
);
211 WERROR (*StartPagePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
212 struct spoolss_StartPagePrinter
*r
);
213 WERROR (*EndPagePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
214 struct spoolss_EndPagePrinter
*r
);
215 WERROR (*WritePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
216 struct spoolss_WritePrinter
*r
);
217 WERROR (*ReadPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
218 struct spoolss_ReadPrinter
*r
);
221 struct ntptr_context
{
222 const struct ntptr_ops
*ops
;
226 /* this structure is used by backends to determine the size of some critical types */
227 struct ntptr_critical_sizes
{
228 int interface_version
;
229 int sizeof_ntptr_critical_sizes
;
230 int sizeof_ntptr_context
;
231 int sizeof_ntptr_ops
;
233 #include "ntptr/ntptr_proto.h"