[IDL]
[reactos.git] / reactos / include / reactos / idl / winreg.idl
1 /*
2 * Directory Service Setup interface definition
3 */
4
5 #include <ms-dtyp.idl>
6
7 typedef [context_handle] HANDLE RPC_HKEY;
8 typedef RPC_HKEY *PRPC_HKEY;
9
10 typedef [handle] PWCHAR PREGISTRY_SERVER_NAME;
11
12 typedef struct value_ent
13 {
14 PRPC_UNICODE_STRING ve_valuename;
15 DWORD ve_valuelen;
16 LPDWORD ve_valueptr;
17 DWORD ve_type;
18 } RVALENT, *PRVALENT;
19
20 typedef ULONG REGSAM;
21
22 typedef struct _RPC_SECURITY_DESCRIPTOR
23 {
24 [size_is(cbInSecurityDescriptor), length_is(cbOutSecurityDescriptor)] PBYTE lpSecurityDescriptor;
25 DWORD cbInSecurityDescriptor;
26 DWORD cbOutSecurityDescriptor;
27 } RPC_SECURITY_DESCRIPTOR, *PRPC_SECURITY_DESCRIPTOR;
28
29 typedef struct _RPC_SECURITY_ATTRIBUTES
30 {
31 DWORD nLength;
32 RPC_SECURITY_DESCRIPTOR RpcSecurityDescriptor;
33 BOOLEAN bInheritHandle;
34 } RPC_SECURITY_ATTRIBUTES, *PRPC_SECURITY_ATTRIBUTES;
35
36 [
37 uuid(338CD001-2244-31F1-AAAA-900038001003),
38 version(1.0),
39 pointer_default(unique),
40 endpoint("ncacn_np:[\\pipe\\winreg]")
41 #ifndef __midl
42 ,explicit_handle
43 #endif
44 ]
45 interface winreg
46 {
47 /* Function 0 */
48 error_status_t
49 __stdcall
50 OpenClassesRoot(
51 [in, unique] PREGISTRY_SERVER_NAME ServerName,
52 [in] REGSAM samDesired,
53 [out] PRPC_HKEY phKey);
54
55 /* Function 1 */
56 error_status_t
57 __stdcall
58 OpenCurrentUser(
59 [in, unique] PREGISTRY_SERVER_NAME ServerName,
60 [in] REGSAM samDesired,
61 [out] PRPC_HKEY phKey);
62
63 /* Function 2 */
64 error_status_t
65 __stdcall
66 OpenLocalMachine(
67 [in, unique] PREGISTRY_SERVER_NAME ServerName,
68 [in] REGSAM samDesired,
69 [out] PRPC_HKEY phKey);
70
71 /* Function 3 */
72 error_status_t
73 __stdcall
74 OpenPerformanceData(
75 [in, unique] PREGISTRY_SERVER_NAME ServerName,
76 [in] REGSAM samDesired,
77 [out] PRPC_HKEY phKey);
78
79 /* Function 4 */
80 error_status_t
81 __stdcall
82 OpenUsers(
83 [in, unique] PREGISTRY_SERVER_NAME ServerName,
84 [in] REGSAM samDesired,
85 [out] PRPC_HKEY phKey);
86
87 /* Function 5 */
88 error_status_t
89 __stdcall
90 BaseRegCloseKey(
91 [in, out] PRPC_HKEY hKey);
92
93 /* Function 6 */
94 error_status_t
95 __stdcall
96 BaseRegCreateKey(
97 [in] RPC_HKEY hKey,
98 [in] PRPC_UNICODE_STRING lpSubKey,
99 [in] PRPC_UNICODE_STRING lpClass,
100 [in] DWORD dwOptions,
101 [in] REGSAM samDesired,
102 [in, unique] PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes,
103 [out] PRPC_HKEY phkResult,
104 [in, out, unique] LPDWORD lpdwDisposition);
105
106 /* Function 7 */
107 error_status_t
108 __stdcall
109 BaseRegDeleteKey(
110 [in] RPC_HKEY hKey,
111 [in] PRPC_UNICODE_STRING lpSubKey);
112
113 /* Function 8 */
114 error_status_t
115 __stdcall
116 BaseRegDeleteValue(
117 [in] RPC_HKEY hKey,
118 [in] PRPC_UNICODE_STRING lpValueName);
119
120 /* Function 9 */
121 error_status_t
122 __stdcall
123 BaseRegEnumKey(
124 [in] RPC_HKEY hKey,
125 [in] DWORD dwIndex,
126 [in] PRPC_UNICODE_STRING lpNameIn,
127 [out] PRPC_UNICODE_STRING lpNameOut,
128 [in, unique] PRPC_UNICODE_STRING lpClassIn,
129 [out] PRPC_UNICODE_STRING *lplpClassOut,
130 [in, out, unique] PFILETIME lpftLastWriteTime);
131
132 /* Function 10 */
133 error_status_t
134 __stdcall
135 BaseRegEnumValue(
136 [in] RPC_HKEY hKey,
137 [in] DWORD dwIndex,
138 [in] PRPC_UNICODE_STRING lpValueNameIn,
139 [out] PRPC_UNICODE_STRING lpValueNameOut,
140 [in, out, unique] LPDWORD lpType,
141 [in, out, unique, size_is(lpcbData ? *lpcbData : 0), length_is(lpcbLen ? *lpcbLen : 0)] LPBYTE lpData, /* range(0, 0x4000000) */
142 [in, out, unique] LPDWORD lpcbData,
143 [in, out, unique] LPDWORD lpcbLen);
144
145 /* Function 11 */
146 error_status_t
147 __stdcall
148 BaseRegFlushKey(
149 [in] RPC_HKEY hKey);
150
151 /* Function 12 */
152 error_status_t
153 __stdcall
154 BaseRegGetKeySecurity(
155 [in] RPC_HKEY hKey,
156 [in] SECURITY_INFORMATION SecurityInformation,
157 [in] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptorIn,
158 [out] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptorOut);
159
160 /* Function 13 */
161 error_status_t
162 __stdcall
163 BaseRegLoadKey(
164 [in] RPC_HKEY hKey,
165 [in] PRPC_UNICODE_STRING lpSubKey,
166 [in] PRPC_UNICODE_STRING lpFile);
167
168 /* Function 14 */
169 void
170 __stdcall
171 Opnum14NotImplemented(void);
172
173 /* Function 15 */
174 error_status_t
175 __stdcall
176 BaseRegOpenKey(
177 [in] RPC_HKEY hKey,
178 [in] PRPC_UNICODE_STRING lpSubKey,
179 [in] DWORD dwOptions,
180 [in] REGSAM samDesired,
181 [out] PRPC_HKEY phkResult);
182
183 /* Function 16 */
184 error_status_t
185 __stdcall
186 BaseRegQueryInfoKey(
187 [in] RPC_HKEY hKey,
188 [in] PRPC_UNICODE_STRING lpClassIn,
189 [out] PRPC_UNICODE_STRING lpClassOut,
190 [out] LPDWORD lpcSubKeys,
191 [out] LPDWORD lpcbMaxSubKeyLen,
192 [out] LPDWORD lpcbMaxClassLen,
193 [out] LPDWORD lpcValues,
194 [out] LPDWORD lpcbMaxValueNameLen,
195 [out] LPDWORD lpcbMaxValueLen,
196 [out] LPDWORD lpcbSecurityDescriptor,
197 [out] PFILETIME lpftLastWriteTime);
198
199 /* Function 17 */
200 error_status_t
201 __stdcall
202 BaseRegQueryValue(
203 [in] RPC_HKEY hKey,
204 [in] PRPC_UNICODE_STRING lpValueName,
205 [in, out, unique] LPDWORD lpType,
206 [in, out, unique, size_is(lpcbData ? *lpcbData : 0), length_is(lpcbLen ? *lpcbLen : 0)] LPBYTE lpData, /* range(0, 0x4000000) */
207 [in, out, unique] LPDWORD lpcbData,
208 [in, out, unique] LPDWORD lpcbLen);
209
210 /* Function 18 */
211 error_status_t
212 __stdcall
213 BaseRegReplaceKey(
214 [in] RPC_HKEY hKey,
215 [in] PRPC_UNICODE_STRING lpSubKey,
216 [in] PRPC_UNICODE_STRING lpNewFile,
217 [in] PRPC_UNICODE_STRING lpOldFile);
218
219 /* Function 19 */
220 error_status_t
221 __stdcall
222 BaseRegRestoreKey(
223 [in] RPC_HKEY hKey,
224 [in] PRPC_UNICODE_STRING lpFile,
225 [in] DWORD Flags);
226
227 /* Function 20 */
228 error_status_t
229 __stdcall
230 BaseRegSaveKey(
231 [in] RPC_HKEY hKey,
232 [in] PRPC_UNICODE_STRING lpFile,
233 [in, unique] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes);
234
235 /* Function 21 */
236 error_status_t
237 __stdcall
238 BaseRegSetKeySecurity(
239 [in] RPC_HKEY hKey,
240 [in] SECURITY_INFORMATION SecurityInformation,
241 [in] PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor);
242
243 /* Function 22 */
244 error_status_t
245 __stdcall
246 BaseRegSetValue(
247 [in] RPC_HKEY hKey,
248 [in] PRPC_UNICODE_STRING lpValueName,
249 [in] DWORD dwType,
250 [in, size_is(cbData)] LPBYTE lpData,
251 [in] DWORD cbData);
252
253 /* Function 23 */
254 error_status_t
255 __stdcall
256 BaseRegUnLoadKey(
257 [in] RPC_HKEY hKey,
258 [in] PRPC_UNICODE_STRING lpSubKey);
259
260 /* Function 24 */
261 ULONG
262 __stdcall
263 BaseInitiateSystemShutdown(
264 [in, unique] PREGISTRY_SERVER_NAME ServerName,
265 [in, unique] PRPC_UNICODE_STRING lpMessage,
266 [in] ULONG dwTimeout,
267 [in] BOOLEAN bForceAppsClosed,
268 [in] BOOLEAN bRebootAfterShutdown);
269
270 /* Function 25 */
271 ULONG
272 __stdcall
273 BaseAbortSystemShutdown(
274 [in, unique] PREGISTRY_SERVER_NAME ServerName);
275
276 /* Function 26 */
277 error_status_t
278 __stdcall
279 BaseRegGetVersion(
280 [in] RPC_HKEY hKey,
281 [out] LPDWORD lpdwVersion);
282
283 /* Function 27 */
284 error_status_t
285 __stdcall
286 OpenCurrentConfig(
287 [in, unique] PREGISTRY_SERVER_NAME ServerName,
288 [in] REGSAM samDesired,
289 [out] PRPC_HKEY phKey);
290
291 /* Function 28 */
292 void
293 __stdcall
294 Opnum28NotImplemented(void);
295
296 /* Function 29 */
297 error_status_t
298 __stdcall
299 BaseRegQueryMultipleValues(
300 [in] RPC_HKEY hKey,
301 [in, size_is(num_vals), length_is(num_vals)] PRVALENT val_listIn,
302 [out, size_is(num_vals), length_is(num_vals)] PRVALENT val_listOut,
303 [in] DWORD num_vals,
304 [in, out, unique, size_is(*ldwTotsize), length_is(*ldwTotsize)] char *lpvalueBuf,
305 [in, out, ref] LPDWORD ldwTotsize);
306
307 /* Function 30 */
308 ULONG
309 __stdcall
310 BaseInitiateSystemShutdownEx(
311 [in, unique] PREGISTRY_SERVER_NAME ServerName,
312 [in, unique] PRPC_UNICODE_STRING lpMessage,
313 [in] ULONG dwTimeout,
314 [in] BOOLEAN bForceAppsClosed,
315 [in] BOOLEAN bRebootAfterShutdown,
316 [in] ULONG dwReason);
317
318 /* Function 31 */
319 error_status_t
320 __stdcall
321 BaseRegSaveKeyEx(
322 [in] RPC_HKEY hKey,
323 [in] PRPC_UNICODE_STRING lpFile,
324 [in, unique] PRPC_SECURITY_ATTRIBUTES pSecurityAttributes,
325 [in] DWORD Flags);
326
327 /* Function 32 */
328 error_status_t
329 __stdcall
330 OpenPerformanceText(
331 [in, unique] PREGISTRY_SERVER_NAME ServerName,
332 [in] REGSAM samDesired,
333 [out] PRPC_HKEY phKey);
334
335 /* Function 33 */
336 error_status_t
337 __stdcall
338 OpenPerformanceNlsText(
339 [in, unique] PREGISTRY_SERVER_NAME ServerName,
340 [in] REGSAM samDesired,
341 [out] PRPC_HKEY phKey);
342
343 /* Function 34 */
344 error_status_t
345 __stdcall
346 BaseRegQueryMultipleValues2(
347 [in] RPC_HKEY hKey,
348 [in, size_is(num_vals), length_is(num_vals)] PRVALENT val_listIn,
349 [out, size_is(num_vals), length_is(num_vals)] PRVALENT val_listOut,
350 [in] DWORD num_vals,
351 [in, out, unique, size_is(*ldwTotsize), length_is(*ldwTotsize)] char *lpvalueBuf,
352 [in] LPDWORD ldwTotsize,
353 [out] LPDWORD ldwRequiredSize);
354
355 /* Function 35 */
356 error_status_t
357 __stdcall
358 BaseRegDeleteKeyEx(
359 [in] RPC_HKEY hKey,
360 [in] PRPC_UNICODE_STRING lpSubKey,
361 [in] REGSAM AccessMask,
362 [in] DWORD Reserved);
363 }