2 winreg interface definition
6 uuid("338cd001-2244-31f1-aaaa-900038001003"),
8 endpoint("ncacn_np:[\\pipe\\winreg]","ncacn_ip_tcp:","ncalrpc:"),
9 pointer_default(unique),
10 pointer_default_top
(unique),
11 helpstring("Remote Registry Service"),
12 depends
(lsa
,initshutdown
,security
),
16 declare bitmap security_secinfo
;
18 typedef [bitmap32bit
] bitmap
{
21 typedef [v1_enum] enum {
27 REG_DWORD_BIG_ENDIAN
= 5,
30 REG_RESOURCE_LIST
= 8,
31 REG_FULL_RESOURCE_DESCRIPTOR
= 9,
32 REG_RESOURCE_REQUIREMENTS_LIST
= 10,
36 typedef [public,noejs
] struct {
37 [value
(strlen_m_term
(name
)*2)] uint16 name_len
;
38 [value
(strlen_m_term
(name
)*2)] uint16 name_size
;
39 [string,charset
(UTF16
)] uint16
*name
;
44 WERROR winreg_OpenHKCR
(
45 [in] uint16
*system_name
,
46 [in] winreg_AccessMask access_mask
,
47 [out,ref] policy_handle
*handle
52 WERROR winreg_OpenHKCU
(
53 [in] uint16
*system_name
,
54 [in] winreg_AccessMask access_mask
,
55 [out,ref] policy_handle
*handle
60 WERROR winreg_OpenHKLM
(
61 [in] uint16
*system_name
,
62 [in] winreg_AccessMask access_mask
,
63 [out,ref] policy_handle
*handle
68 WERROR winreg_OpenHKPD
(
69 [in] uint16
*system_name
,
70 [in] winreg_AccessMask access_mask
,
71 [out,ref] policy_handle
*handle
76 WERROR winreg_OpenHKU
(
77 [in] uint16
*system_name
,
78 [in] winreg_AccessMask access_mask
,
79 [out,ref] policy_handle
*handle
84 WERROR winreg_CloseKey
(
85 [in,out,ref] policy_handle
*handle
92 [size_is(size
),length_is(len
)] uint8
*data
;
103 typedef [v1_enum] enum {
104 REG_ACTION_NONE
= 0, /* used by caller */
105 REG_CREATED_NEW_KEY
= 1,
106 REG_OPENED_EXISTING_KEY
= 2
107 } winreg_CreateAction
;
109 WERROR winreg_CreateKey
(
110 [in,ref] policy_handle
*handle,
111 [in] winreg_String name
,
112 [in] winreg_String keyclass
,
114 [in] winreg_AccessMask access_mask
,
115 [in,unique] winreg_SecBuf
*secdesc
,
116 [out,ref] policy_handle
*new_handle
,
117 [in,out,unique] winreg_CreateAction
*action_taken
122 WERROR winreg_DeleteKey
(
123 [in,ref] policy_handle
*handle,
124 [in] winreg_String key
129 WERROR winreg_DeleteValue
(
130 [in,ref] policy_handle
*handle,
131 [in] winreg_String value
135 [value
(strlen_m_term
(name
)*2)] uint16 length
;
136 /* size cannot be auto-set by value() as it is the
137 amount of space the server is allowed to use for this
138 string in the reply, not its current size */
140 [size_is(size
/2),length_is(length
/2),charset
(UTF16
)] uint16
*name
;
143 WERROR winreg_EnumKey
(
144 [in,ref] policy_handle
*handle,
145 [in] uint32 enum_index
,
146 [in,out,ref] winreg_StringBuf
*name
,
147 [in,out,unique] winreg_StringBuf
*keyclass
,
148 [in,out,unique] NTTIME
*last_changed_time
154 WERROR winreg_EnumValue
(
155 [in,ref] policy_handle
*handle,
156 [in] uint32 enum_index
,
157 [in,out,ref] winreg_StringBuf
*name
,
158 [in,out,unique] winreg_Type
*type
,
159 [in,out,unique,size_is(*size
),length_is(*length
)] uint8
*value
,
160 [in,out,unique] uint32
*size
,
161 [in,out,unique] uint32
*length
166 WERROR winreg_FlushKey
(
167 [in,ref] policy_handle
*handle
172 WERROR winreg_GetKeySecurity
(
173 [in,ref] policy_handle
*handle,
174 [in] security_secinfo sec_info
,
175 [in,out,ref] KeySecurityData
*sd
180 WERROR winreg_LoadKey
(
181 [in,ref] policy_handle
*handle,
182 [in] winreg_String
*keyname
,
183 [in] winreg_String
*filename
188 WERROR winreg_NotifyChangeKeyValue
(
189 [in,ref] policy_handle
*handle,
190 [in] uint8 watch_subtree
,
191 [in] uint32 notify_filter
,
193 [in] winreg_String string1
,
194 [in] winreg_String string2
,
200 WERROR winreg_OpenKey
(
201 [in,ref] policy_handle
*parent_handle
,
202 [in] winreg_String keyname
,
204 [in] winreg_AccessMask access_mask
,
205 [out,ref] policy_handle
*handle
210 WERROR winreg_QueryInfoKey
(
211 [in,ref] policy_handle
*handle,
212 [in] winreg_String class_in
,
213 [out] winreg_String
*class_out
,
214 [out] uint32
*num_subkeys
,
215 [out] uint32
*max_subkeylen
,
216 [out] uint32
*max_subkeysize
,
217 [out] uint32
*num_values
,
218 [out] uint32
*max_valnamelen
,
219 [out] uint32
*max_valbufsize
,
220 [out] uint32
*secdescsize
,
221 [out] NTTIME
*last_changed_time
226 WERROR winreg_QueryValue
(
227 [in,ref] policy_handle
*handle,
228 [in] winreg_String value_name
,
229 [in,out] winreg_Type
*type
,
230 [in,out,size_is(*size
),length_is(*length
)] uint8
*data
,
231 [in,out] uint32
*size
,
232 [in,out] uint32
*length
237 WERROR winreg_ReplaceKey
(
242 WERROR winreg_RestoreKey
(
247 WERROR winreg_SaveKey
(
252 WERROR winreg_SetKeySecurity
(
253 [in,ref] policy_handle
*handle,
254 [in] winreg_AccessMask access_mask
,
255 [in,out,ref] KeySecurityData
*sd
260 WERROR winreg_SetValue
(
261 [in,ref] policy_handle
*handle,
262 [in] winreg_String name
,
263 [in] winreg_Type type
,
264 [in,size_is(size
),ref] uint8
*data
,
270 WERROR winreg_UnLoadKey
(
275 WERROR winreg_InitiateSystemShutdown
(
276 [in] uint16
*hostname
,
277 [in] initshutdown_String
*message,
279 [in] uint8 force_apps
,
285 WERROR winreg_AbortSystemShutdown
(
291 WERROR winreg_GetVersion
(
292 [in,ref] policy_handle
*handle,
293 [out] uint32
*version
298 WERROR winreg_OpenHKCC
(
299 [in] uint16
*system_name
,
300 [in] winreg_AccessMask access_mask
,
301 [out,ref] policy_handle
*handle
306 WERROR winreg_OpenHKDD
(
307 [in] uint16
*system_name
,
308 [in] winreg_AccessMask access_mask
,
309 [out,ref] policy_handle
*handle
317 } QueryMultipleValue
;
321 WERROR winreg_QueryMultipleValues
(
322 [in,ref] policy_handle
*key_handle
,
323 [in,out,ref,size_is(num_values
),length_is(num_values
)] QueryMultipleValue
*values
,
324 [in] uint32 num_values
,
325 [in,out,size_is(*buffer_size
),length_is(*buffer_size
)] uint8
*buffer
,
326 [in,out,ref] uint32
*buffer_size
331 WERROR winreg_InitiateSystemShutdownEx
(
332 [in] uint16
*hostname
,
333 [in] initshutdown_String
*message,
335 [in] uint8 force_apps
,
342 WERROR winreg_SaveKeyEx
(
347 WERROR winreg_OpenHKPT
(
348 [in] uint16
*system_name
,
349 [in] winreg_AccessMask access_mask
,
350 [out,ref] policy_handle
*handle
355 WERROR winreg_OpenHKPN
(
356 [in] uint16
*system_name
,
357 [in] winreg_AccessMask access_mask
,
358 [out,ref] policy_handle
*handle
363 WERROR winreg_QueryMultipleValues2
(