xref: /titanic_52/usr/src/uts/common/smbsrv/ndl/winreg.ndl (revision f96bd5c800e73e351b0b6e4bd7f00b578dad29bb)
1da6c28aaSamw/*
2da6c28aaSamw * CDDL HEADER START
3da6c28aaSamw *
4da6c28aaSamw * The contents of this file are subject to the terms of the
5da6c28aaSamw * Common Development and Distribution License (the "License").
6da6c28aaSamw * You may not use this file except in compliance with the License.
7da6c28aaSamw *
8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9da6c28aaSamw * or http://www.opensolaris.org/os/licensing.
10da6c28aaSamw * See the License for the specific language governing permissions
11da6c28aaSamw * and limitations under the License.
12da6c28aaSamw *
13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each
14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the
16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying
17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner]
18da6c28aaSamw *
19da6c28aaSamw * CDDL HEADER END
20da6c28aaSamw */
21da6c28aaSamw/*
22*f96bd5c8SAlan Wright * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
23da6c28aaSamw * Use is subject to license terms.
24da6c28aaSamw */
25da6c28aaSamw
26da6c28aaSamw#ifndef _MLSVC_WINREG_NDL_
27da6c28aaSamw#define _MLSVC_WINREG_NDL_
28da6c28aaSamw
29da6c28aaSamw/*
30da6c28aaSamw * Windows Registry (WINREG) RPC interface definition.
313db3f65cSamw *
323db3f65cSamw * The Windows registry is split into a number of hives, which are divided
333db3f65cSamw * by function.  The hive names are abbreviated and prefixed by HKEY or HK.
343db3f65cSamw *
353db3f65cSamw * HKEY_CLASSES_ROOT     (HKCR)	Information about registered applications
363db3f65cSamw * HKEY_CURRENT_USER     (HKCU)	Settings for the current logged in user.
373db3f65cSamw * HKEY_LOCAL_MACHINE    (HKLM)	Settings for all users on the computer.
383db3f65cSamw * HKEY_USERS            (HKU)	HKEY_CURRENT_USER subkeys for user accounts.
393db3f65cSamw * HKEY_CURRENT_CONFIG   (HKCC)	Runtime configuration information.
403db3f65cSamw * HKEY_PERFORMANCE_DATA (HKPD)	Runtime performance data.
413db3f65cSamw * HKEY_DYN_DATA         (HKDD)	Runtime data for Windows 9x applications.
423db3f65cSamw * HKEY_PERFORMANCE_TEXT (HKPT)	Runtime performance information.
433db3f65cSamw * HKEY_PERFORMANCE_NLS  (HKPN)	Runtime performance information.
44da6c28aaSamw */
45da6c28aaSamw
46da6c28aaSamw#include "ndrtypes.ndl"
47da6c28aaSamw
483db3f65cSamw/* Windows NT */
49dc20a302Sas200622#define WINREG_OPNUM_OpenHKCR		0x00
50dc20a302Sas200622#define WINREG_OPNUM_OpenHKCU		0x01
51da6c28aaSamw#define WINREG_OPNUM_OpenHKLM		0x02
52dc20a302Sas200622#define WINREG_OPNUM_OpenHKPD		0x03
53da6c28aaSamw#define WINREG_OPNUM_OpenHKUsers	0x04
54da6c28aaSamw#define WINREG_OPNUM_Close		0x05
55da6c28aaSamw#define WINREG_OPNUM_CreateKey		0x06
56da6c28aaSamw#define WINREG_OPNUM_DeleteKey		0x07
57da6c28aaSamw#define WINREG_OPNUM_DeleteValue	0x08
58da6c28aaSamw#define WINREG_OPNUM_EnumKey		0x09
59da6c28aaSamw#define WINREG_OPNUM_EnumValue		0x0a
60da6c28aaSamw#define WINREG_OPNUM_FlushKey		0x0b
61da6c28aaSamw#define WINREG_OPNUM_GetKeySec		0x0c
62dc20a302Sas200622#define WINREG_OPNUM_LoadKey		0x0d
63dc20a302Sas200622#define WINREG_OPNUM_NotifyChange	0x0e
64da6c28aaSamw#define WINREG_OPNUM_OpenKey		0x0f
65da6c28aaSamw#define WINREG_OPNUM_QueryKey		0x10
66da6c28aaSamw#define WINREG_OPNUM_QueryValue		0x11
67dc20a302Sas200622#define WINREG_OPNUM_ReplaceKey		0x12
68dc20a302Sas200622#define WINREG_OPNUM_RestoreKey		0x13
69dc20a302Sas200622#define WINREG_OPNUM_SaveKey		0x14
70da6c28aaSamw#define WINREG_OPNUM_SetKeySec		0x15
713db3f65cSamw
723db3f65cSamw/* Windows 2000 */
73da6c28aaSamw#define WINREG_OPNUM_CreateValue	0x16
74dc20a302Sas200622#define WINREG_OPNUM_UnloadKey		0x17
75da6c28aaSamw#define WINREG_OPNUM_Shutdown		0x18
76dc20a302Sas200622#define WINREG_OPNUM_AbortShutdown	0x19
77da6c28aaSamw#define WINREG_OPNUM_GetVersion		0x1a
783db3f65cSamw#define WINREG_OPNUM_OpenHKCC		0x1b
793db3f65cSamw#define WINREG_OPNUM_OpenHKDD		0x1c
803db3f65cSamw#define WINREG_OPNUM_QueryMultiValues	0x1d
813db3f65cSamw#define WINREG_OPNUM_ShutdownEx		0x1e
823db3f65cSamw
833db3f65cSamw/* Windows XP and Windows Server 2003 */
843db3f65cSamw#define WINREG_OPNUM_SavekeyEx		0x1f
853db3f65cSamw#define WINREG_OPNUM_OpenHKPT		0x20
863db3f65cSamw#define WINREG_OPNUM_OpenHKPN		0x21
873db3f65cSamw
883db3f65cSamw/* Windows 2003 SP1 */
893db3f65cSamw#define WINREG_OPNUM_QueryMultiValues2	0x22
903db3f65cSamw#define WINREG_OPNUM_DeleteKeyEx	0x23
913db3f65cSamw
923db3f65cSamw#define	WINREG_TYPE_NONE		0
933db3f65cSamw#define WINREG_SZ			1
943db3f65cSamw#define WINREG_EXPAND_SZ		2
953db3f65cSamw#define WINREG_BINARY			3
963db3f65cSamw#define WINREG_DWORD			4
973db3f65cSamw#define WINREG_DWORD_BIG_ENDIAN		5
983db3f65cSamw#define WINREG_LINK			6
993db3f65cSamw#define WINREG_MULTI_SZ			7
1003db3f65cSamw#define WINREG_RESOURCE_LIST		8
1013db3f65cSamw#define WINREG_RESOURCE_DESC		9
1023db3f65cSamw#define WINREG_RESOURCE_REQ_LIST	10
1033db3f65cSamw#define WINREG_QWORD			11
1043db3f65cSamw
1053db3f65cSamw#define	WINREG_ACCESS_QUERY_VALUE	0x00000001
1063db3f65cSamw#define WINREG_ACCESS_SET_VALUE		0x00000002
1073db3f65cSamw#define WINREG_ACCESS_CREATE_KEY	0x00000004
1083db3f65cSamw#define WINREG_ACCESS_ENUMERATE		0x00000008
1093db3f65cSamw#define WINREG_ACCESS_NOTIFY		0x00000010
1103db3f65cSamw#define WINREG_ACCESS_CREATE_LINK	0x00000020
1113db3f65cSamw#define WINREG_ACCESS_KEY64		0x00000100
1123db3f65cSamw#define WINREG_ACCESS_KEY32		0x00000200
113da6c28aaSamw
1148d7e4166Sjose borregoCONTEXT_HANDLE(winreg_handle) winreg_handle_t;
115da6c28aaSamw
116dc20a302Sas200622struct winreg_string_desc {
117da6c28aaSamw	WORD	length;
118da6c28aaSamw	WORD	allosize;
119da6c28aaSamw	LPTSTR	str;
120da6c28aaSamw};
121dc20a302Sas200622typedef struct winreg_string_desc winreg_string_t;
122da6c28aaSamw
123da6c28aaSamw/*
124da6c28aaSamw * Fake Varying/Conformant with a funny conformant.
125da6c28aaSamw */
126dc20a302Sas200622struct winreg_value {
127da6c28aaSamw	DWORD	vc_first_is;	/* 0 */
128da6c28aaSamw	DWORD	vc_length_is;
129da6c28aaSamw    SIZE_IS(vc_length_is)
130da6c28aaSamw	BYTE	value[ANY_SIZE_ARRAY];
131da6c28aaSamw};
132da6c28aaSamw
13389dc44ceSjose borregostruct winreg_vcs {
13489dc44ceSjose borrego	DWORD	vc_first_is;	/* 0 */
13589dc44ceSjose borrego	DWORD	vc_length_is;
13689dc44ceSjose borrego    SIZE_IS(vc_length_is)
13789dc44ceSjose borrego	WORD	value[ANY_SIZE_ARRAY];
13889dc44ceSjose borrego};
13989dc44ceSjose borrego
1403db3f65cSamwstruct winreg_vcbuf {
1413db3f65cSamw	WORD wclen;
1423db3f65cSamw	WORD wcsize;
14389dc44ceSjose borrego	struct winreg_vcs *buf;
1443db3f65cSamw};
1453db3f65cSamwtypedef struct winreg_vcbuf winreg_vcbuf_t;
1463db3f65cSamw
147da6c28aaSamwstruct file_time {
148da6c28aaSamw	DWORD	low;
149da6c28aaSamw	DWORD	high;
150da6c28aaSamw};
151da6c28aaSamwtypedef struct file_time file_time_t;
152da6c28aaSamw
1533db3f65cSamwstruct winreg_secdesc {
154*f96bd5c8SAlan Wright	struct winreg_value	*sd_buf;
155*f96bd5c8SAlan Wright	DWORD			sd_len;
156*f96bd5c8SAlan Wright	DWORD			sd_size;
1573db3f65cSamw};
1583db3f65cSamw
159dc20a302Sas200622OPERATION(WINREG_OPNUM_OpenHKCR)
160dc20a302Sas200622struct winreg_OpenHKCR {
161dc20a302Sas200622	IN  DWORD		*server;
162da6c28aaSamw	IN  DWORD		access_mask;
163dc20a302Sas200622	OUT winreg_handle_t	handle;
164da6c28aaSamw	OUT DWORD		status;
165da6c28aaSamw};
166da6c28aaSamw
167dc20a302Sas200622OPERATION(WINREG_OPNUM_OpenHKCU)
168dc20a302Sas200622struct winreg_OpenHKCU {
169dc20a302Sas200622	IN  DWORD		*server;
170dc20a302Sas200622	IN  DWORD		access_mask;
171dc20a302Sas200622	OUT winreg_handle_t	handle;
172dc20a302Sas200622	OUT DWORD		status;
173dc20a302Sas200622};
174dc20a302Sas200622
175dc20a302Sas200622OPERATION(WINREG_OPNUM_OpenHKLM)
176dc20a302Sas200622struct winreg_OpenHKLM {
177dc20a302Sas200622	IN  DWORD		*server;
178dc20a302Sas200622	IN  DWORD		access_mask;
179dc20a302Sas200622	OUT winreg_handle_t	handle;
180dc20a302Sas200622	OUT DWORD		status;
181dc20a302Sas200622};
182dc20a302Sas200622
183dc20a302Sas200622OPERATION(WINREG_OPNUM_OpenHKPD)
184dc20a302Sas200622struct winreg_OpenHKPD {
185dc20a302Sas200622	IN  DWORD		*server;
186dc20a302Sas200622	IN  DWORD		access_mask;
187dc20a302Sas200622	OUT winreg_handle_t	handle;
188dc20a302Sas200622	OUT DWORD		status;
189dc20a302Sas200622};
190da6c28aaSamw
191da6c28aaSamwOPERATION(WINREG_OPNUM_OpenHKUsers)
192dc20a302Sas200622struct winreg_OpenHKUsers {
193dc20a302Sas200622	IN  DWORD		*server;
194da6c28aaSamw	IN  DWORD		access_mask;
195dc20a302Sas200622	OUT winreg_handle_t	handle;
196da6c28aaSamw	OUT DWORD		status;
197da6c28aaSamw};
198da6c28aaSamw
199da6c28aaSamw
200da6c28aaSamwOPERATION(WINREG_OPNUM_Close)
201dc20a302Sas200622struct winreg_Close {
202dc20a302Sas200622	IN  winreg_handle_t	handle;
203dc20a302Sas200622	OUT winreg_handle_t	result_handle;
204da6c28aaSamw	OUT DWORD		status;
205da6c28aaSamw};
206da6c28aaSamw
2073db3f65cSamw#define	WINREG_ACTION_NONE		0
2083db3f65cSamw#define	WINREG_ACTION_NEW_KEY		1
2093db3f65cSamw#define	WINREG_ACTION_EXISTING_KEY	2
210da6c28aaSamw
211da6c28aaSamwOPERATION(WINREG_OPNUM_CreateKey)
212dc20a302Sas200622struct winreg_CreateKey {
213dc20a302Sas200622	IN winreg_handle_t	handle;
214dc20a302Sas200622	IN winreg_string_t	subkey;
2153db3f65cSamw	IN winreg_string_t	keyclass;
2163db3f65cSamw	IN DWORD		options;
2173db3f65cSamw	IN DWORD		access_mask;
2183db3f65cSamw	IN DWORD		*sd;
2193db3f65cSamw	OUT winreg_handle_t	result_handle;
2203db3f65cSamw	OUT DWORD		*action;
221da6c28aaSamw	OUT DWORD		status;
222da6c28aaSamw};
223da6c28aaSamw
224da6c28aaSamw
225da6c28aaSamwOPERATION(WINREG_OPNUM_DeleteKey)
226dc20a302Sas200622struct winreg_DeleteKey {
227dc20a302Sas200622	IN winreg_handle_t	handle;
228dc20a302Sas200622	IN winreg_string_t	subkey;
229da6c28aaSamw	OUT DWORD		status;
230da6c28aaSamw};
231da6c28aaSamw
232da6c28aaSamw
233da6c28aaSamwOPERATION(WINREG_OPNUM_DeleteValue)
234dc20a302Sas200622struct winreg_DeleteValue {
235dc20a302Sas200622	IN winreg_handle_t	handle;
236dc20a302Sas200622	IN winreg_string_t	name;
237da6c28aaSamw	OUT DWORD		status;
238da6c28aaSamw};
239da6c28aaSamw
2403db3f65cSamw/*
2413db3f65cSamw * Some of the OUT parameters are also supplied
2423db3f65cSamw * as IN parameters but we can ignore them.
2433db3f65cSamw */
2443db3f65cSamwOPERATION(WINREG_OPNUM_EnumKey)
2453db3f65cSamwstruct winreg_EnumKey {
2463db3f65cSamw	IN	winreg_handle_t	handle;
2473db3f65cSamw	IN	DWORD	index;
24889dc44ceSjose borrego	IN	winreg_string_t	name_in;
249b1352070SAlan Wright	IN	winreg_string_t	*class_in;
25089dc44ceSjose borrego	OUT	winreg_string_t	name_out;
25189dc44ceSjose borrego	OUT	winreg_string_t	*class_out;
2523db3f65cSamw	INOUT	file_time_t	*change_time;
2533db3f65cSamw	OUT	DWORD		status;
2543db3f65cSamw};
255da6c28aaSamw
256da6c28aaSamw/*
257da6c28aaSamw * Some of the OUT parameters are also supplied
258da6c28aaSamw * as IN parameters but we can ignore them.
259da6c28aaSamw */
260da6c28aaSamwOPERATION(WINREG_OPNUM_EnumValue)
261dc20a302Sas200622struct winreg_EnumValue {
262dc20a302Sas200622	IN winreg_handle_t	handle;
263da6c28aaSamw	IN DWORD		index;
264da6c28aaSamw	/* IN	ignore the remaining input data */
265da6c28aaSamw
2663db3f65cSamw	OUT winreg_vcbuf_t	name;
267da6c28aaSamw	OUT DWORD		*type;
268dc20a302Sas200622	OUT struct winreg_value *value;
269da6c28aaSamw	OUT DWORD		*value_size;
270da6c28aaSamw	OUT DWORD		*value_size_total;
271da6c28aaSamw	OUT DWORD		status;
272da6c28aaSamw};
273da6c28aaSamw
274dc20a302Sas200622OPERATION(WINREG_OPNUM_FlushKey)
275dc20a302Sas200622struct winreg_FlushKey {
276dc20a302Sas200622	IN winreg_handle_t	handle;
277dc20a302Sas200622	OUT DWORD		status;
278dc20a302Sas200622};
279dc20a302Sas200622
280dc20a302Sas200622OPERATION(WINREG_OPNUM_GetKeySec)
281dc20a302Sas200622struct winreg_GetKeySec {
282dc20a302Sas200622	IN		winreg_handle_t		handle;
283dc20a302Sas200622	IN		DWORD			sec_info;
284*f96bd5c8SAlan Wright	OUT REFERENCE	struct winreg_secdesc	*sd;
285dc20a302Sas200622	OUT		DWORD			status;
286dc20a302Sas200622};
287dc20a302Sas200622
288dc20a302Sas200622OPERATION(WINREG_OPNUM_NotifyChange)
289dc20a302Sas200622struct winreg_NotifyChange {
290dc20a302Sas200622	IN  winreg_handle_t	handle;
291dc20a302Sas200622	IN  DWORD		watch_subtree;
292dc20a302Sas200622	IN  DWORD		notify_filter;
293dc20a302Sas200622	OUT DWORD		status;
294dc20a302Sas200622};
295da6c28aaSamw
296da6c28aaSamwOPERATION(WINREG_OPNUM_OpenKey)
297dc20a302Sas200622struct winreg_OpenKey {
298dc20a302Sas200622	IN  winreg_handle_t	handle;
299dc20a302Sas200622	IN  winreg_string_t	name;
3003db3f65cSamw	IN  DWORD		options;
301da6c28aaSamw	IN  DWORD		access_mask;
302dc20a302Sas200622	OUT winreg_handle_t	result_handle;
303da6c28aaSamw	OUT DWORD		status;
304da6c28aaSamw};
305da6c28aaSamw
306da6c28aaSamw
307da6c28aaSamwOPERATION(WINREG_OPNUM_QueryKey)
308dc20a302Sas200622struct winreg_QueryKey {
309dc20a302Sas200622	IN  winreg_handle_t	handle;
3103db3f65cSamw	INOUT winreg_string_t	name;
3113db3f65cSamw	OUT DWORD 		num_subkeys;
312da6c28aaSamw	OUT DWORD 		max_subkey_len;
313da6c28aaSamw	OUT DWORD 		max_class_len;
3143db3f65cSamw	OUT DWORD 		num_values;
315da6c28aaSamw	OUT DWORD 		max_value_namelen;
316da6c28aaSamw	OUT DWORD 		max_value_len;
3173db3f65cSamw	OUT DWORD 		secdesc_size;
318da6c28aaSamw	OUT file_time_t 	last_write_time;
319da6c28aaSamw	OUT DWORD		status;
320da6c28aaSamw};
321da6c28aaSamw
322da6c28aaSamw
323da6c28aaSamw/*
324da6c28aaSamw * Some of the OUT parameters are also supplied
325da6c28aaSamw * as IN parameters but we can ignore them.
326da6c28aaSamw */
327da6c28aaSamwOPERATION(WINREG_OPNUM_QueryValue)
328dc20a302Sas200622struct winreg_QueryValue {
329dc20a302Sas200622	IN  winreg_handle_t	handle;
330dc20a302Sas200622	IN  winreg_string_t	value_name;
331da6c28aaSamw	/* IN	ignore the remaining input data */
332da6c28aaSamw
333da6c28aaSamw	OUT DWORD		*type;
334dc20a302Sas200622	OUT struct winreg_value	*value;
335da6c28aaSamw	OUT DWORD		*value_size;
336da6c28aaSamw	OUT DWORD		*value_size_total;
337da6c28aaSamw	OUT DWORD		status;
338da6c28aaSamw};
339da6c28aaSamw
340da6c28aaSamw
341dc20a302Sas200622OPERATION(WINREG_OPNUM_SetKeySec)
342dc20a302Sas200622struct winreg_SetKeySec {
343dc20a302Sas200622	IN winreg_handle_t	handle;
344dc20a302Sas200622	IN DWORD		access_mask;
345dc20a302Sas200622	IN DWORD		sd;
346dc20a302Sas200622	OUT DWORD		status;
347dc20a302Sas200622};
348dc20a302Sas200622
349da6c28aaSamwOPERATION(WINREG_OPNUM_CreateValue)
350dc20a302Sas200622struct winreg_CreateValue {
351dc20a302Sas200622	IN winreg_handle_t	handle;
352dc20a302Sas200622	IN winreg_string_t	name;
3533db3f65cSamw	IN winreg_string_t	class;
3543db3f65cSamw	IN DWORD		options;
355da6c28aaSamw	/* IN	ignore the remaining input data */
356da6c28aaSamw
357da6c28aaSamw	OUT DWORD		status;
358da6c28aaSamw};
359da6c28aaSamw
360da6c28aaSamw
361da6c28aaSamw/*
362da6c28aaSamw * The real structure of shutdown passes some strings, a timeout
363da6c28aaSamw * and reboot/shutdown flags but this allows us to accept the call,
364da6c28aaSamw * without anything appearing in the log, and return access denied.
365da6c28aaSamw */
366da6c28aaSamwOPERATION(WINREG_OPNUM_Shutdown)
367dc20a302Sas200622struct winreg_Shutdown {
368da6c28aaSamw	IN DWORD		ignored;
369da6c28aaSamw	OUT DWORD		status;
370da6c28aaSamw};
371da6c28aaSamw
3723db3f65cSamwOPERATION(WINREG_OPNUM_AbortShutdown)
3733db3f65cSamwstruct winreg_AbortShutdown {
3743db3f65cSamw	IN DWORD		ignored;
3753db3f65cSamw	OUT DWORD		status;
3763db3f65cSamw};
377da6c28aaSamw
378da6c28aaSamwOPERATION(WINREG_OPNUM_GetVersion)
379dc20a302Sas200622struct winreg_GetVersion {
380dc20a302Sas200622	IN winreg_handle_t	handle;
381da6c28aaSamw	OUT DWORD		version;
382da6c28aaSamw	OUT DWORD		status;
383da6c28aaSamw};
384da6c28aaSamw
3853db3f65cSamwOPERATION(WINREG_OPNUM_OpenHKCC)
3863db3f65cSamwstruct winreg_OpenHKCC {
3873db3f65cSamw	IN  DWORD		*server;
3883db3f65cSamw	IN  DWORD		access_mask;
3893db3f65cSamw	OUT winreg_handle_t	handle;
3903db3f65cSamw	OUT DWORD		status;
3913db3f65cSamw};
3923db3f65cSamw
3933db3f65cSamwOPERATION(WINREG_OPNUM_OpenHKDD)
3943db3f65cSamwstruct winreg_OpenHKDD {
3953db3f65cSamw	IN  DWORD		*server;
3963db3f65cSamw	IN  DWORD		access_mask;
3973db3f65cSamw	OUT winreg_handle_t	handle;
3983db3f65cSamw	OUT DWORD		status;
3993db3f65cSamw};
4003db3f65cSamw
4013db3f65cSamwOPERATION(WINREG_OPNUM_OpenHKPT)
4023db3f65cSamwstruct winreg_OpenHKPT {
4033db3f65cSamw	IN  DWORD		*server;
4043db3f65cSamw	IN  DWORD		access_mask;
4053db3f65cSamw	OUT winreg_handle_t	handle;
4063db3f65cSamw	OUT DWORD		status;
4073db3f65cSamw};
4083db3f65cSamw
4093db3f65cSamwOPERATION(WINREG_OPNUM_OpenHKPN)
4103db3f65cSamwstruct winreg_OpenHKPN {
4113db3f65cSamw	IN  DWORD		*server;
4123db3f65cSamw	IN  DWORD		access_mask;
4133db3f65cSamw	OUT winreg_handle_t	handle;
4143db3f65cSamw	OUT DWORD		status;
4153db3f65cSamw};
416da6c28aaSamw
417da6c28aaSamw/*
418da6c28aaSamw * The WINREG interface.
419da6c28aaSamw */
420da6c28aaSamwINTERFACE(0)
421da6c28aaSamwunion winreg_interface {
422dc20a302Sas200622	CASE(WINREG_OPNUM_OpenHKCR)
423dc20a302Sas200622		struct winreg_OpenHKCR		OpenHKCR;
424dc20a302Sas200622	CASE(WINREG_OPNUM_OpenHKCU)
425dc20a302Sas200622		struct winreg_OpenHKCU		OpenHKCU;
426da6c28aaSamw	CASE(WINREG_OPNUM_OpenHKLM)
427dc20a302Sas200622		struct winreg_OpenHKLM		OpenHKLM;
428dc20a302Sas200622	CASE(WINREG_OPNUM_OpenHKPD)
429dc20a302Sas200622		struct winreg_OpenHKPD		OpenHKPD;
430da6c28aaSamw	CASE(WINREG_OPNUM_OpenHKUsers)
431dc20a302Sas200622		struct winreg_OpenHKUsers	OpenHKUsers;
432da6c28aaSamw	CASE(WINREG_OPNUM_Close)
433dc20a302Sas200622		struct winreg_Close		Close;
434da6c28aaSamw	CASE(WINREG_OPNUM_CreateKey)
435dc20a302Sas200622		struct winreg_CreateKey		CreateKey;
436da6c28aaSamw	CASE(WINREG_OPNUM_DeleteKey)
437dc20a302Sas200622		struct winreg_DeleteKey		DeleteKey;
438da6c28aaSamw	CASE(WINREG_OPNUM_DeleteValue)
439dc20a302Sas200622		struct winreg_DeleteValue	DeleteValue;
4403db3f65cSamw	CASE(WINREG_OPNUM_EnumKey)
4413db3f65cSamw		struct winreg_EnumKey		EnumKey;
4423db3f65cSamw	CASE(WINREG_OPNUM_EnumValue)
4433db3f65cSamw		struct winreg_EnumValue		EnumValue;
444dc20a302Sas200622	CASE(WINREG_OPNUM_FlushKey)
445dc20a302Sas200622		struct winreg_FlushKey		FlushKey;
446dc20a302Sas200622	CASE(WINREG_OPNUM_GetKeySec)
447dc20a302Sas200622		struct winreg_GetKeySec		GetKeySec;
448dc20a302Sas200622	CASE(WINREG_OPNUM_NotifyChange)
449dc20a302Sas200622		struct winreg_NotifyChange	NotifyChange;
450da6c28aaSamw	CASE(WINREG_OPNUM_OpenKey)
451dc20a302Sas200622		struct winreg_OpenKey		OpenKey;
452da6c28aaSamw	CASE(WINREG_OPNUM_QueryKey)
453dc20a302Sas200622		struct winreg_QueryKey		QueryKey;
454da6c28aaSamw	CASE(WINREG_OPNUM_QueryValue)
455dc20a302Sas200622		struct winreg_QueryValue	QueryValue;
456dc20a302Sas200622	CASE(WINREG_OPNUM_SetKeySec)
457dc20a302Sas200622		struct winreg_SetKeySec		SetKeySec;
458da6c28aaSamw	CASE(WINREG_OPNUM_CreateValue)
459dc20a302Sas200622		struct winreg_CreateValue	CreateValue;
460da6c28aaSamw	CASE(WINREG_OPNUM_Shutdown)
461dc20a302Sas200622		struct winreg_Shutdown		Shutdown;
4623db3f65cSamw	CASE(WINREG_OPNUM_AbortShutdown)
4633db3f65cSamw		struct winreg_AbortShutdown	AbortShutdown;
464da6c28aaSamw	CASE(WINREG_OPNUM_GetVersion)
465dc20a302Sas200622		struct winreg_GetVersion	GetVersion;
4663db3f65cSamw	CASE(WINREG_OPNUM_OpenHKCC)
4673db3f65cSamw		struct winreg_OpenHKCC		OpenHKCC;
4683db3f65cSamw	CASE(WINREG_OPNUM_OpenHKDD)
4693db3f65cSamw		struct winreg_OpenHKDD		OpenHKDD;
4703db3f65cSamw	CASE(WINREG_OPNUM_OpenHKPT)
4713db3f65cSamw		struct winreg_OpenHKPT		OpenHKPT;
4723db3f65cSamw	CASE(WINREG_OPNUM_OpenHKPN)
4733db3f65cSamw		struct winreg_OpenHKPN		OpenHKPN;
474da6c28aaSamw};
475da6c28aaSamwtypedef union winreg_interface	winreg_interface_t;
476da6c28aaSamwEXTERNTYPEINFO(winreg_interface)
477da6c28aaSamw
478da6c28aaSamw#endif /* _MLSVC_WINREG_NDL_ */
479