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 [v1_enum] enum {
24 REG_DWORD_BIG_ENDIAN
= 5,
27 REG_RESOURCE_LIST
= 8,
28 REG_FULL_RESOURCE_DESCRIPTOR
= 9,
29 REG_RESOURCE_REQUIREMENTS_LIST
= 10,
33 typedef [public,noejs
] struct {
34 [value
(strlen_m_term
(name
)*2)] uint16 name_len
;
35 [value
(strlen_m_term
(name
)*2)] uint16 name_size
;
36 [string,charset
(UTF16
)] uint16
*name
;
41 WERROR winreg_OpenHKCR
(
42 [in] uint16
*system_name
,
43 [in] uint32 access_mask
,
44 [out,ref] policy_handle
*handle
49 WERROR winreg_OpenHKCU
(
50 [in] uint16
*system_name
,
51 [in] uint32 access_mask
,
52 [out,ref] policy_handle
*handle
57 WERROR winreg_OpenHKLM
(
58 [in] uint16
*system_name
,
59 [in] uint32 access_mask
,
60 [out,ref] policy_handle
*handle
65 WERROR winreg_OpenHKPD
(
66 [in] uint16
*system_name
,
67 [in] uint32 access_mask
,
68 [out,ref] policy_handle
*handle
73 WERROR winreg_OpenHKU
(
74 [in] uint16
*system_name
,
75 [in] uint32 access_mask
,
76 [out,ref] policy_handle
*handle
81 WERROR winreg_CloseKey
(
82 [in,out,ref] policy_handle
*handle
89 [size_is(size
),length_is(len
)] uint8
*data
;
100 typedef [v1_enum] enum {
101 REG_ACTION_NONE
= 0, /* used by caller */
102 REG_CREATED_NEW_KEY
= 1,
103 REG_OPENED_EXISTING_KEY
= 2
104 } winreg_CreateAction
;
106 WERROR winreg_CreateKey
(
107 [in,ref] policy_handle
*handle,
108 [in] winreg_String name
,
109 [in] winreg_String class
,
111 [in] uint32 access_mask
,
112 [in,unique] winreg_SecBuf
*secdesc
,
113 [out,ref] policy_handle
*new_handle
,
114 [in,out,unique] winreg_CreateAction
*action_taken
119 WERROR winreg_DeleteKey
(
120 [in,ref] policy_handle
*handle,
121 [in] winreg_String key
126 WERROR winreg_DeleteValue
(
127 [in,ref] policy_handle
*handle,
128 [in] winreg_String value
132 [value
(strlen_m_term
(name
)*2)] uint16 length
;
133 /* size cannot be auto-set by value() as it is the
134 amount of space the server is allowed to use for this
135 string in the reply, not its current size */
137 [size_is(size
/2),length_is(length
/2),charset
(UTF16
)] uint16
*name
;
140 WERROR winreg_EnumKey
(
141 [in,ref] policy_handle
*handle,
142 [in] uint32 enum_index
,
143 [in,out,ref] winreg_StringBuf
*name
,
144 [in,out,unique] winreg_StringBuf
*class
,
145 [in,out,unique] NTTIME
*last_changed_time
151 WERROR winreg_EnumValue
(
152 [in,ref] policy_handle
*handle,
153 [in] uint32 enum_index
,
154 [in,out,ref] winreg_StringBuf
*name
,
155 [in,out,unique] winreg_Type
*type
,
156 [in,out,unique,size_is(*size
),length_is(*length
)] uint8
*value
,
157 [in,out,unique] uint32
*size
,
158 [in,out,unique] uint32
*length
163 WERROR winreg_FlushKey
(
164 [in,ref] policy_handle
*handle
169 WERROR winreg_GetKeySecurity
(
170 [in,ref] policy_handle
*handle,
171 [in] security_secinfo sec_info
,
172 [in,out,ref] KeySecurityData
*sd
177 WERROR winreg_LoadKey
(
178 [in,ref] policy_handle
*handle,
179 [in] winreg_String
*keyname
,
180 [in] winreg_String
*filename
185 WERROR winreg_NotifyChangeKeyValue
(
186 [in,ref] policy_handle
*handle,
187 [in] uint8 watch_subtree
,
188 [in] uint32 notify_filter
,
190 [in] winreg_String string1
,
191 [in] winreg_String string2
,
197 WERROR winreg_OpenKey
(
198 [in,ref] policy_handle
*handle,
199 [in] winreg_String keyname
,
201 [in] uint32 access_mask
,
202 [out,ref] policy_handle
*handle
207 WERROR winreg_QueryInfoKey
(
208 [in,ref] policy_handle
*handle,
209 [in] winreg_String class_in
,
210 [out] winreg_String
*class_out
,
211 [out] uint32 num_subkeys
,
212 [out] uint32 max_subkeylen
,
213 [out] uint32 max_subkeysize
,
214 [out] uint32 num_values
,
215 [out] uint32 max_valnamelen
,
216 [out] uint32 max_valbufsize
,
217 [out] uint32 secdescsize
,
218 [out] NTTIME last_changed_time
223 WERROR winreg_QueryValue
(
224 [in,ref] policy_handle
*handle,
225 [in] winreg_String value_name
,
226 [in,out] winreg_Type
*type
,
227 [in,out,size_is(*size
),length_is(*length
)] uint8
*data
,
228 [in,out] uint32
*size
,
229 [in,out] uint32
*length
234 WERROR winreg_ReplaceKey
(
239 WERROR winreg_RestoreKey
(
244 WERROR winreg_SaveKey
(
249 WERROR winreg_SetKeySecurity
(
250 [in,ref] policy_handle
*handle,
251 [in] uint32 access_mask
,
252 [in,out,ref] KeySecurityData
*data
257 WERROR winreg_SetValue
(
258 [in,ref] policy_handle
*handle,
259 [in] winreg_String name
,
260 [in] winreg_Type type
,
261 [in,size_is(size
),ref] uint8
*data
,
267 WERROR winreg_UnLoadKey
(
272 WERROR winreg_InitiateSystemShutdown
(
273 [in] uint16
*hostname
,
274 [in] initshutdown_String
*message,
276 [in] uint8 force_apps
,
282 WERROR winreg_AbortSystemShutdown
(
288 WERROR winreg_GetVersion
(
289 [in,ref] policy_handle
*handle,
295 WERROR winreg_OpenHKCC
(
296 [in] uint16
*system_name
,
297 [in] uint32 access_mask
,
298 [out,ref] policy_handle
*handle
303 WERROR winreg_OpenHKDD
(
304 [in] uint16
*system_name
,
305 [in] uint32 access_mask
,
306 [out,ref] policy_handle
*handle
314 } QueryMultipleValue
;
318 WERROR winreg_QueryMultipleValues
(
319 [in,ref] policy_handle
*key_handle
,
320 [in,out,ref,size_is(num_values
),length_is(num_values
)] QueryMultipleValue
*values
,
321 [in] uint32 num_values
,
322 [in,out,size_is(*buffer_size
),length_is(*buffer_size
)] uint8
*buffer
,
323 [in,out,ref] uint32
*buffer_size
328 WERROR winreg_InitiateSystemShutdownEx
(
329 [in] uint16
*hostname
,
330 [in] initshutdown_String
*message,
332 [in] uint8 force_apps
,
339 WERROR winreg_SaveKeyEx
(
344 WERROR winreg_OpenHKPT
(
345 [in] uint16
*system_name
,
346 [in] uint32 access_mask
,
347 [out,ref] policy_handle
*handle
352 WERROR winreg_OpenHKPN
(
353 [in] uint16
*system_name
,
354 [in] uint32 access_mask
,
355 [out,ref] policy_handle
*handle
360 WERROR winreg_QueryMultipleValues2
(