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 3 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, see <http://www.gnu.org/licenses/>.
22 /* modules can use the following to determine if the interface has changed */
23 #define NTPTR_INTERFACE_VERSION 0
27 enum ntptr_HandleType
{
34 struct ntptr_GenericHandle
{
35 enum ntptr_HandleType type
;
36 struct ntptr_context
*ntptr
;
37 const char *object_name
;
42 struct spoolss_OpenPrinterEx
;
43 struct spoolss_EnumPrinterData
;
44 struct spoolss_DeletePrinterData
;
45 struct spoolss_AddForm
;
46 struct spoolss_GetForm
;
47 struct spoolss_SetForm
;
48 struct spoolss_DeleteForm
;
49 struct spoolss_AddPrinterDriver
;
50 struct spoolss_DeletePrinterDriver
;
51 struct spoolss_GetPrinterDriverDirectory
;
52 struct spoolss_AddPrinter
;
53 struct spoolss_GetPrinter
;
54 struct spoolss_SetPrinter
;
55 struct spoolss_DeletePrinter
;
56 struct spoolss_GetPrinterDriver
;
57 struct spoolss_AddJob
;
58 struct spoolss_EnumJobs
;
59 struct spoolss_SetJob
;
60 struct spoolss_GetJob
;
61 struct spoolss_ScheduleJob
;
62 struct spoolss_ReadPrinter
;
63 struct spoolss_WritePrinter
;
64 struct spoolss_StartDocPrinter
;
65 struct spoolss_EndDocPrinter
;
66 struct spoolss_StartPagePrinter
;
67 struct spoolss_EndPagePrinter
;
68 struct spoolss_GetPrinterData
;
69 struct spoolss_SetPrinterData
;
70 struct spoolss_EnumPrinterDrivers
;
71 struct spoolss_EnumMonitors
;
72 struct spoolss_EnumPrinters
;
73 struct spoolss_EnumForms
;
74 struct spoolss_EnumPorts
;
75 struct spoolss_EnumPrintProcessors
;
76 struct spoolss_XcvData
;
77 struct spoolss_GetPrintProcessorDirectory
;
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
);
148 WERROR (*GetPrintProcessorDirectory
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
149 struct spoolss_GetPrintProcessorDirectory
*r
);
151 /* Printer functions */
152 WERROR (*EnumPrinters
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
153 struct spoolss_EnumPrinters
*r
);
154 WERROR (*OpenPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
155 struct spoolss_OpenPrinterEx
*r
,
156 const char *printer_name
,
157 struct ntptr_GenericHandle
**printer
);
158 WERROR (*AddPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
159 struct spoolss_AddPrinter
*r
,
160 struct ntptr_GenericHandle
**printer
);
161 WERROR (*GetPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
162 struct spoolss_GetPrinter
*r
);
163 WERROR (*SetPrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
164 struct spoolss_SetPrinter
*r
);
165 WERROR (*DeletePrinter
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
166 struct spoolss_DeletePrinter
*r
);
167 WERROR (*XcvDataPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
168 struct spoolss_XcvData
*r
);
170 /* Printer Driver functions */
171 WERROR (*GetPrinterDriver
)(struct ntptr_context
*ntptr
, TALLOC_CTX
*mem_ctx
,
172 struct spoolss_GetPrinterDriver
*r
);
174 /* Printer PrinterData functions */
175 WERROR (*EnumPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
176 struct spoolss_EnumPrinterData
*r
);
177 WERROR (*GetPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
178 struct spoolss_GetPrinterData
*r
);
179 WERROR (*SetPrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
180 struct spoolss_SetPrinterData
*r
);
181 WERROR (*DeletePrinterData
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
182 struct spoolss_DeletePrinterData
*r
);
184 /* Printer Form functions */
185 WERROR (*EnumPrinterForms
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
186 struct spoolss_EnumForms
*r
);
187 WERROR (*AddPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
188 struct spoolss_AddForm
*r
);
189 WERROR (*GetPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
190 struct spoolss_GetForm
*r
);
191 WERROR (*SetPrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
192 struct spoolss_SetForm
*r
);
193 WERROR (*DeletePrinterForm
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
194 struct spoolss_DeleteForm
*r
);
196 /* Printer Job functions */
197 WERROR (*EnumJobs
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
198 struct spoolss_EnumJobs
*r
);
199 WERROR (*AddJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
200 struct spoolss_AddJob
*r
);
201 WERROR (*ScheduleJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
202 struct spoolss_ScheduleJob
*r
);
203 WERROR (*GetJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
204 struct spoolss_GetJob
*r
);
205 WERROR (*SetJob
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
206 struct spoolss_SetJob
*r
);
208 /* Printer Printing functions */
209 WERROR (*StartDocPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
210 struct spoolss_StartDocPrinter
*r
);
211 WERROR (*EndDocPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
212 struct spoolss_EndDocPrinter
*r
);
213 WERROR (*StartPagePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
214 struct spoolss_StartPagePrinter
*r
);
215 WERROR (*EndPagePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
216 struct spoolss_EndPagePrinter
*r
);
217 WERROR (*WritePrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
218 struct spoolss_WritePrinter
*r
);
219 WERROR (*ReadPrinter
)(struct ntptr_GenericHandle
*printer
, TALLOC_CTX
*mem_ctx
,
220 struct spoolss_ReadPrinter
*r
);
223 struct ntptr_context
{
224 const struct ntptr_ops
*ops
;
226 struct tevent_context
*ev_ctx
;
227 struct loadparm_context
*lp_ctx
;
230 /* this structure is used by backends to determine the size of some critical types */
231 struct ntptr_critical_sizes
{
232 int interface_version
;
233 int sizeof_ntptr_critical_sizes
;
234 int sizeof_ntptr_context
;
235 int sizeof_ntptr_ops
;
238 struct loadparm_context
;
240 #include "ntptr/ntptr_proto.h"