epan/dissectors/pidl/ C99 drsuapi
[wireshark-sm.git] / epan / dissectors / packet-dcerpc-winreg.c
blob050b2cd4fe883b4023ab049807b4921f71610aed
1 /* DO NOT EDIT
2 This file was automatically generated by Pidl
3 from winreg.idl and winreg.cnf.
5 Pidl is a perl based IDL compiler for DCE/RPC idl files.
6 It is maintained by the Samba team, not the Wireshark team.
7 Instructions on how to download and install Pidl can be
8 found at https://wiki.wireshark.org/Pidl
9 */
12 #include "config.h"
13 #include <string.h>
14 #include <wsutil/array.h>
15 #include <epan/packet.h>
16 #include <epan/tfs.h>
18 #include "packet-dcerpc.h"
19 #include "packet-dcerpc-nt.h"
20 #include "packet-windows-common.h"
21 #include "packet-dcerpc-winreg.h"
22 void proto_register_dcerpc_winreg(void);
23 void proto_reg_handoff_dcerpc_winreg(void);
25 /* Ett declarations */
26 static int ett_dcerpc_winreg;
27 static int ett_winreg_security_secinfo;
28 static int ett_winreg_winreg_AccessMask;
29 static int ett_winreg_winreg_String;
30 static int ett_winreg_KeySecurityData;
31 static int ett_winreg_winreg_SecBuf;
32 static int ett_winreg_winreg_KeyOptions;
33 static int ett_winreg_winreg_StringBuf;
34 static int ett_winreg_winreg_ValNameBuf;
35 static int ett_winreg_winreg_NotifyChangeType;
36 static int ett_winreg_winreg_RestoreKeyFlags;
37 static int ett_winreg_KeySecurityAttribute;
38 static int ett_winreg_QueryMultipleValue;
41 /* Header field declarations */
42 static int hf_winreg_KeySecurityAttribute_data_size;
43 static int hf_winreg_KeySecurityAttribute_inherit;
44 static int hf_winreg_KeySecurityAttribute_sec_data;
45 static int hf_winreg_KeySecurityData_data;
46 static int hf_winreg_KeySecurityData_len;
47 static int hf_winreg_KeySecurityData_size;
48 static int hf_winreg_QueryMultipleValue_ve_type;
49 static int hf_winreg_QueryMultipleValue_ve_valuelen;
50 static int hf_winreg_QueryMultipleValue_ve_valuename;
51 static int hf_winreg_QueryMultipleValue_ve_valueptr;
52 static int hf_winreg_access_mask;
53 static int hf_winreg_handle;
54 static int hf_winreg_opnum;
55 static int hf_winreg_sd;
56 static int hf_winreg_sd_actual_size;
57 static int hf_winreg_sd_max_size;
58 static int hf_winreg_sd_offset;
59 static int hf_winreg_system_name;
60 static int hf_winreg_werror;
61 static int hf_winreg_winreg_AbortSystemShutdown_server;
62 static int hf_winreg_winreg_AccessMask_KEY_CREATE_LINK;
63 static int hf_winreg_winreg_AccessMask_KEY_CREATE_SUB_KEY;
64 static int hf_winreg_winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS;
65 static int hf_winreg_winreg_AccessMask_KEY_NOTIFY;
66 static int hf_winreg_winreg_AccessMask_KEY_QUERY_VALUE;
67 static int hf_winreg_winreg_AccessMask_KEY_SET_VALUE;
68 static int hf_winreg_winreg_AccessMask_KEY_WOW64_32KEY;
69 static int hf_winreg_winreg_AccessMask_KEY_WOW64_64KEY;
70 static int hf_winreg_winreg_CreateKey_action_taken;
71 static int hf_winreg_winreg_CreateKey_keyclass;
72 static int hf_winreg_winreg_CreateKey_name;
73 static int hf_winreg_winreg_CreateKey_new_handle;
74 static int hf_winreg_winreg_CreateKey_options;
75 static int hf_winreg_winreg_CreateKey_secdesc;
76 static int hf_winreg_winreg_DeleteKeyEx_access_mask;
77 static int hf_winreg_winreg_DeleteKeyEx_handle;
78 static int hf_winreg_winreg_DeleteKeyEx_key;
79 static int hf_winreg_winreg_DeleteKeyEx_reserved;
80 static int hf_winreg_winreg_DeleteKey_key;
81 static int hf_winreg_winreg_DeleteValue_value;
82 static int hf_winreg_winreg_EnumKey_enum_index;
83 static int hf_winreg_winreg_EnumKey_keyclass;
84 static int hf_winreg_winreg_EnumKey_last_changed_time;
85 static int hf_winreg_winreg_EnumKey_name;
86 static int hf_winreg_winreg_EnumValue_enum_index;
87 static int hf_winreg_winreg_EnumValue_length;
88 static int hf_winreg_winreg_EnumValue_name;
89 static int hf_winreg_winreg_EnumValue_size;
90 static int hf_winreg_winreg_EnumValue_type;
91 static int hf_winreg_winreg_EnumValue_value;
92 static int hf_winreg_winreg_GetKeySecurity_sec_info;
93 static int hf_winreg_winreg_GetVersion_version;
94 static int hf_winreg_winreg_InitiateSystemShutdownEx_do_reboot;
95 static int hf_winreg_winreg_InitiateSystemShutdownEx_force_apps;
96 static int hf_winreg_winreg_InitiateSystemShutdownEx_hostname;
97 static int hf_winreg_winreg_InitiateSystemShutdownEx_message;
98 static int hf_winreg_winreg_InitiateSystemShutdownEx_reason;
99 static int hf_winreg_winreg_InitiateSystemShutdownEx_timeout;
100 static int hf_winreg_winreg_InitiateSystemShutdown_do_reboot;
101 static int hf_winreg_winreg_InitiateSystemShutdown_force_apps;
102 static int hf_winreg_winreg_InitiateSystemShutdown_hostname;
103 static int hf_winreg_winreg_InitiateSystemShutdown_message;
104 static int hf_winreg_winreg_InitiateSystemShutdown_timeout;
105 static int hf_winreg_winreg_KeyOptions_REG_OPTION_BACKUP_RESTORE;
106 static int hf_winreg_winreg_KeyOptions_REG_OPTION_CREATE_LINK;
107 static int hf_winreg_winreg_KeyOptions_REG_OPTION_OPEN_LINK;
108 static int hf_winreg_winreg_KeyOptions_REG_OPTION_VOLATILE;
109 static int hf_winreg_winreg_LoadKey_filename;
110 static int hf_winreg_winreg_LoadKey_keyname;
111 static int hf_winreg_winreg_NotifyChangeKeyValue_notify_filter;
112 static int hf_winreg_winreg_NotifyChangeKeyValue_string1;
113 static int hf_winreg_winreg_NotifyChangeKeyValue_string2;
114 static int hf_winreg_winreg_NotifyChangeKeyValue_unknown;
115 static int hf_winreg_winreg_NotifyChangeKeyValue_unknown2;
116 static int hf_winreg_winreg_NotifyChangeKeyValue_watch_subtree;
117 static int hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_ATTRIBUTES;
118 static int hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_LAST_SET;
119 static int hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_NAME;
120 static int hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_SECURITY;
121 static int hf_winreg_winreg_OpenHKCU_access_mask;
122 static int hf_winreg_winreg_OpenHKPD_access_mask;
123 static int hf_winreg_winreg_OpenKey_access_mask;
124 static int hf_winreg_winreg_OpenKey_keyname;
125 static int hf_winreg_winreg_OpenKey_options;
126 static int hf_winreg_winreg_OpenKey_parent_handle;
127 static int hf_winreg_winreg_QueryInfoKey_classname;
128 static int hf_winreg_winreg_QueryInfoKey_last_changed_time;
129 static int hf_winreg_winreg_QueryInfoKey_max_classlen;
130 static int hf_winreg_winreg_QueryInfoKey_max_subkeylen;
131 static int hf_winreg_winreg_QueryInfoKey_max_valbufsize;
132 static int hf_winreg_winreg_QueryInfoKey_max_valnamelen;
133 static int hf_winreg_winreg_QueryInfoKey_num_subkeys;
134 static int hf_winreg_winreg_QueryInfoKey_num_values;
135 static int hf_winreg_winreg_QueryInfoKey_secdescsize;
136 static int hf_winreg_winreg_QueryMultipleValues2_buffer;
137 static int hf_winreg_winreg_QueryMultipleValues2_key_handle;
138 static int hf_winreg_winreg_QueryMultipleValues2_needed;
139 static int hf_winreg_winreg_QueryMultipleValues2_num_values;
140 static int hf_winreg_winreg_QueryMultipleValues2_offered;
141 static int hf_winreg_winreg_QueryMultipleValues2_values_in;
142 static int hf_winreg_winreg_QueryMultipleValues2_values_out;
143 static int hf_winreg_winreg_QueryMultipleValues_buffer;
144 static int hf_winreg_winreg_QueryMultipleValues_buffer_size;
145 static int hf_winreg_winreg_QueryMultipleValues_key_handle;
146 static int hf_winreg_winreg_QueryMultipleValues_num_values;
147 static int hf_winreg_winreg_QueryMultipleValues_values_in;
148 static int hf_winreg_winreg_QueryMultipleValues_values_out;
149 static int hf_winreg_winreg_QueryValue_data;
150 static int hf_winreg_winreg_QueryValue_data_length;
151 static int hf_winreg_winreg_QueryValue_data_size;
152 static int hf_winreg_winreg_QueryValue_type;
153 static int hf_winreg_winreg_QueryValue_value_name;
154 static int hf_winreg_winreg_ReplaceKey_handle;
155 static int hf_winreg_winreg_ReplaceKey_new_file;
156 static int hf_winreg_winreg_ReplaceKey_old_file;
157 static int hf_winreg_winreg_ReplaceKey_subkey;
158 static int hf_winreg_winreg_RestoreKeyFlags_REG_FORCE_RESTORE;
159 static int hf_winreg_winreg_RestoreKeyFlags_REG_NO_LAZY_FLUSH;
160 static int hf_winreg_winreg_RestoreKeyFlags_REG_REFRESH_HIVE;
161 static int hf_winreg_winreg_RestoreKeyFlags_REG_WHOLE_HIVE_VOLATILE;
162 static int hf_winreg_winreg_RestoreKey_filename;
163 static int hf_winreg_winreg_RestoreKey_flags;
164 static int hf_winreg_winreg_RestoreKey_handle;
165 static int hf_winreg_winreg_SaveKeyEx_filename;
166 static int hf_winreg_winreg_SaveKeyEx_flags;
167 static int hf_winreg_winreg_SaveKeyEx_handle;
168 static int hf_winreg_winreg_SaveKeyEx_sec_attrib;
169 static int hf_winreg_winreg_SaveKey_filename;
170 static int hf_winreg_winreg_SaveKey_handle;
171 static int hf_winreg_winreg_SaveKey_sec_attrib;
172 static int hf_winreg_winreg_SecBuf_inherit;
173 static int hf_winreg_winreg_SecBuf_length;
174 static int hf_winreg_winreg_SecBuf_sd;
175 static int hf_winreg_winreg_SetKeySecurity_sec_info;
176 static int hf_winreg_winreg_SetValue_data;
177 static int hf_winreg_winreg_SetValue_name;
178 static int hf_winreg_winreg_SetValue_size;
179 static int hf_winreg_winreg_SetValue_type;
180 static int hf_winreg_winreg_StringBuf_length;
181 static int hf_winreg_winreg_StringBuf_name;
182 static int hf_winreg_winreg_StringBuf_size;
183 static int hf_winreg_winreg_String_name;
184 static int hf_winreg_winreg_String_name_len;
185 static int hf_winreg_winreg_String_name_size;
186 static int hf_winreg_winreg_UnLoadKey_handle;
187 static int hf_winreg_winreg_UnLoadKey_subkey;
188 static int hf_winreg_winreg_ValNameBuf_length;
189 static int hf_winreg_winreg_ValNameBuf_name;
190 static int hf_winreg_winreg_ValNameBuf_size;
192 static int proto_dcerpc_winreg;
193 /* Version information */
196 static e_guid_t uuid_dcerpc_winreg = {
197 0x338cd001, 0x2244, 0x31f1,
198 { 0xaa, 0xaa, 0x90, 0x00, 0x38, 0x00, 0x10, 0x03 }
200 static uint16_t ver_dcerpc_winreg = 1;
202 static const true_false_string winreg_AccessMask_KEY_QUERY_VALUE_tfs = {
203 "KEY_QUERY_VALUE is SET",
204 "KEY_QUERY_VALUE is NOT SET",
206 static const true_false_string winreg_AccessMask_KEY_SET_VALUE_tfs = {
207 "KEY_SET_VALUE is SET",
208 "KEY_SET_VALUE is NOT SET",
210 static const true_false_string winreg_AccessMask_KEY_CREATE_SUB_KEY_tfs = {
211 "KEY_CREATE_SUB_KEY is SET",
212 "KEY_CREATE_SUB_KEY is NOT SET",
214 static const true_false_string winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS_tfs = {
215 "KEY_ENUMERATE_SUB_KEYS is SET",
216 "KEY_ENUMERATE_SUB_KEYS is NOT SET",
218 static const true_false_string winreg_AccessMask_KEY_NOTIFY_tfs = {
219 "KEY_NOTIFY is SET",
220 "KEY_NOTIFY is NOT SET",
222 static const true_false_string winreg_AccessMask_KEY_CREATE_LINK_tfs = {
223 "KEY_CREATE_LINK is SET",
224 "KEY_CREATE_LINK is NOT SET",
226 static const true_false_string winreg_AccessMask_KEY_WOW64_64KEY_tfs = {
227 "KEY_WOW64_64KEY is SET",
228 "KEY_WOW64_64KEY is NOT SET",
230 static const true_false_string winreg_AccessMask_KEY_WOW64_32KEY_tfs = {
231 "KEY_WOW64_32KEY is SET",
232 "KEY_WOW64_32KEY is NOT SET",
234 static int winreg_dissect_element_String_name_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
235 static int winreg_dissect_element_String_name_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
236 static int winreg_dissect_element_String_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
237 static int winreg_dissect_element_String_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
238 static int winreg_dissect_element_KeySecurityData_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
239 static int winreg_dissect_element_KeySecurityData_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
240 static int winreg_dissect_element_KeySecurityData_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
241 static int winreg_dissect_element_KeySecurityData_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
242 static int winreg_dissect_element_SecBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
243 static int winreg_dissect_element_SecBuf_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
244 static int winreg_dissect_element_SecBuf_inherit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
245 static const true_false_string winreg_KeyOptions_REG_OPTION_VOLATILE_tfs = {
246 "REG_OPTION_VOLATILE is SET",
247 "REG_OPTION_VOLATILE is NOT SET",
249 static const true_false_string winreg_KeyOptions_REG_OPTION_CREATE_LINK_tfs = {
250 "REG_OPTION_CREATE_LINK is SET",
251 "REG_OPTION_CREATE_LINK is NOT SET",
253 static const true_false_string winreg_KeyOptions_REG_OPTION_BACKUP_RESTORE_tfs = {
254 "REG_OPTION_BACKUP_RESTORE is SET",
255 "REG_OPTION_BACKUP_RESTORE is NOT SET",
257 static const true_false_string winreg_KeyOptions_REG_OPTION_OPEN_LINK_tfs = {
258 "REG_OPTION_OPEN_LINK is SET",
259 "REG_OPTION_OPEN_LINK is NOT SET",
261 const value_string winreg_winreg_CreateAction_vals[] = {
262 { REG_ACTION_NONE, "REG_ACTION_NONE" },
263 { REG_CREATED_NEW_KEY, "REG_CREATED_NEW_KEY" },
264 { REG_OPENED_EXISTING_KEY, "REG_OPENED_EXISTING_KEY" },
265 { 0, NULL }
267 static int winreg_dissect_element_StringBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
268 static int winreg_dissect_element_StringBuf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
269 static int winreg_dissect_element_StringBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
270 static int winreg_dissect_element_StringBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
271 static int winreg_dissect_element_StringBuf_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
272 static int winreg_dissect_element_ValNameBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
273 static int winreg_dissect_element_ValNameBuf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
274 static int winreg_dissect_element_ValNameBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
275 static int winreg_dissect_element_ValNameBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
276 static int winreg_dissect_element_ValNameBuf_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
277 static const true_false_string winreg_NotifyChangeType_REG_NOTIFY_CHANGE_NAME_tfs = {
278 "REG_NOTIFY_CHANGE_NAME is SET",
279 "REG_NOTIFY_CHANGE_NAME is NOT SET",
281 static const true_false_string winreg_NotifyChangeType_REG_NOTIFY_CHANGE_ATTRIBUTES_tfs = {
282 "REG_NOTIFY_CHANGE_ATTRIBUTES is SET",
283 "REG_NOTIFY_CHANGE_ATTRIBUTES is NOT SET",
285 static const true_false_string winreg_NotifyChangeType_REG_NOTIFY_CHANGE_LAST_SET_tfs = {
286 "REG_NOTIFY_CHANGE_LAST_SET is SET",
287 "REG_NOTIFY_CHANGE_LAST_SET is NOT SET",
289 static const true_false_string winreg_NotifyChangeType_REG_NOTIFY_CHANGE_SECURITY_tfs = {
290 "REG_NOTIFY_CHANGE_SECURITY is SET",
291 "REG_NOTIFY_CHANGE_SECURITY is NOT SET",
293 static const true_false_string winreg_RestoreKeyFlags_REG_WHOLE_HIVE_VOLATILE_tfs = {
294 "REG_WHOLE_HIVE_VOLATILE is SET",
295 "REG_WHOLE_HIVE_VOLATILE is NOT SET",
297 static const true_false_string winreg_RestoreKeyFlags_REG_REFRESH_HIVE_tfs = {
298 "REG_REFRESH_HIVE is SET",
299 "REG_REFRESH_HIVE is NOT SET",
301 static const true_false_string winreg_RestoreKeyFlags_REG_NO_LAZY_FLUSH_tfs = {
302 "REG_NO_LAZY_FLUSH is SET",
303 "REG_NO_LAZY_FLUSH is NOT SET",
305 static const true_false_string winreg_RestoreKeyFlags_REG_FORCE_RESTORE_tfs = {
306 "REG_FORCE_RESTORE is SET",
307 "REG_FORCE_RESTORE is NOT SET",
309 static int winreg_dissect_element_KeySecurityAttribute_data_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
310 static int winreg_dissect_element_KeySecurityAttribute_sec_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
311 static int winreg_dissect_element_KeySecurityAttribute_inherit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
312 static int winreg_dissect_element_QueryMultipleValue_ve_valuename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
313 static int winreg_dissect_element_QueryMultipleValue_ve_valuename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
314 static int winreg_dissect_element_QueryMultipleValue_ve_valuelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
315 static int winreg_dissect_element_QueryMultipleValue_ve_valueptr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
316 static int winreg_dissect_element_QueryMultipleValue_ve_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
317 static int winreg_dissect_element_OpenHKCR_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
318 static int winreg_dissect_element_OpenHKCR_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
319 static int winreg_dissect_element_OpenHKCR_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
320 static int winreg_dissect_element_OpenHKCR_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
321 static int winreg_dissect_element_OpenHKCR_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
322 static int winreg_dissect_element_OpenHKCU_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
323 static int winreg_dissect_element_OpenHKCU_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
324 static int winreg_dissect_element_OpenHKCU_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
325 static int winreg_dissect_element_OpenHKCU_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
326 static int winreg_dissect_element_OpenHKCU_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
327 static int winreg_dissect_element_OpenHKLM_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
328 static int winreg_dissect_element_OpenHKLM_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
329 static int winreg_dissect_element_OpenHKLM_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
330 static int winreg_dissect_element_OpenHKLM_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
331 static int winreg_dissect_element_OpenHKLM_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
332 static int winreg_dissect_element_OpenHKPD_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
333 static int winreg_dissect_element_OpenHKPD_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
334 static int winreg_dissect_element_OpenHKPD_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
335 static int winreg_dissect_element_OpenHKPD_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
336 static int winreg_dissect_element_OpenHKPD_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
337 static int winreg_dissect_element_OpenHKU_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
338 static int winreg_dissect_element_OpenHKU_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
339 static int winreg_dissect_element_OpenHKU_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
340 static int winreg_dissect_element_OpenHKU_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
341 static int winreg_dissect_element_OpenHKU_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
342 static int winreg_dissect_element_CloseKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
343 static int winreg_dissect_element_CloseKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
344 static int winreg_dissect_element_CreateKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
345 static int winreg_dissect_element_CreateKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
346 static int winreg_dissect_element_CreateKey_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
347 static int winreg_dissect_element_CreateKey_keyclass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
348 static int winreg_dissect_element_CreateKey_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
349 static int winreg_dissect_element_CreateKey_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
350 static int winreg_dissect_element_CreateKey_secdesc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
351 static int winreg_dissect_element_CreateKey_secdesc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
352 static int winreg_dissect_element_CreateKey_new_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
353 static int winreg_dissect_element_CreateKey_new_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
354 static int winreg_dissect_element_CreateKey_action_taken(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
355 static int winreg_dissect_element_CreateKey_action_taken_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
356 static int winreg_dissect_element_DeleteKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
357 static int winreg_dissect_element_DeleteKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
358 static int winreg_dissect_element_DeleteKey_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
359 static int winreg_dissect_element_DeleteValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
360 static int winreg_dissect_element_DeleteValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
361 static int winreg_dissect_element_DeleteValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
362 static int winreg_dissect_element_EnumKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
363 static int winreg_dissect_element_EnumKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
364 static int winreg_dissect_element_EnumKey_enum_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
365 static int winreg_dissect_element_EnumKey_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
366 static int winreg_dissect_element_EnumKey_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
367 static int winreg_dissect_element_EnumKey_keyclass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
368 static int winreg_dissect_element_EnumKey_keyclass_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
369 static int winreg_dissect_element_EnumKey_last_changed_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
370 static int winreg_dissect_element_EnumKey_last_changed_time_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
371 static int winreg_dissect_element_EnumValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
372 static int winreg_dissect_element_EnumValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
373 static int winreg_dissect_element_EnumValue_enum_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
374 static int winreg_dissect_element_EnumValue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
375 static int winreg_dissect_element_EnumValue_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
376 static int winreg_dissect_element_EnumValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
377 static int winreg_dissect_element_EnumValue_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
378 static int winreg_dissect_element_EnumValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
379 static int winreg_dissect_element_EnumValue_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
380 static int winreg_dissect_element_EnumValue_value__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
381 static int winreg_dissect_element_EnumValue_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
382 static int winreg_dissect_element_EnumValue_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
383 static int winreg_dissect_element_EnumValue_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
384 static int winreg_dissect_element_EnumValue_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
385 static int winreg_dissect_element_FlushKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
386 static int winreg_dissect_element_FlushKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
387 static int winreg_dissect_element_GetKeySecurity_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
388 static int winreg_dissect_element_GetKeySecurity_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
389 static int winreg_dissect_element_GetKeySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
390 static int winreg_dissect_element_GetKeySecurity_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
391 static int winreg_dissect_element_GetKeySecurity_sd_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
392 static int winreg_dissect_element_LoadKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
393 static int winreg_dissect_element_LoadKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
394 static int winreg_dissect_element_LoadKey_keyname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
395 static int winreg_dissect_element_LoadKey_keyname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
396 static int winreg_dissect_element_LoadKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
397 static int winreg_dissect_element_LoadKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
398 static int winreg_dissect_element_NotifyChangeKeyValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
399 static int winreg_dissect_element_NotifyChangeKeyValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
400 static int winreg_dissect_element_NotifyChangeKeyValue_watch_subtree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
401 static int winreg_dissect_element_NotifyChangeKeyValue_notify_filter(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
402 static int winreg_dissect_element_NotifyChangeKeyValue_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
403 static int winreg_dissect_element_NotifyChangeKeyValue_string1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
404 static int winreg_dissect_element_NotifyChangeKeyValue_string2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
405 static int winreg_dissect_element_NotifyChangeKeyValue_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
406 static int winreg_dissect_element_OpenKey_parent_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
407 static int winreg_dissect_element_OpenKey_parent_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
408 static int winreg_dissect_element_OpenKey_keyname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
409 static int winreg_dissect_element_OpenKey_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
410 static int winreg_dissect_element_OpenKey_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
411 static int winreg_dissect_element_OpenKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
412 static int winreg_dissect_element_OpenKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
413 static int winreg_dissect_element_QueryInfoKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
414 static int winreg_dissect_element_QueryInfoKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
415 static int winreg_dissect_element_QueryInfoKey_classname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
416 static int winreg_dissect_element_QueryInfoKey_classname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
417 static int winreg_dissect_element_QueryInfoKey_num_subkeys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
418 static int winreg_dissect_element_QueryInfoKey_num_subkeys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
419 static int winreg_dissect_element_QueryInfoKey_max_subkeylen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
420 static int winreg_dissect_element_QueryInfoKey_max_subkeylen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
421 static int winreg_dissect_element_QueryInfoKey_max_classlen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
422 static int winreg_dissect_element_QueryInfoKey_max_classlen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
423 static int winreg_dissect_element_QueryInfoKey_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
424 static int winreg_dissect_element_QueryInfoKey_num_values_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
425 static int winreg_dissect_element_QueryInfoKey_max_valnamelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
426 static int winreg_dissect_element_QueryInfoKey_max_valnamelen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
427 static int winreg_dissect_element_QueryInfoKey_max_valbufsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
428 static int winreg_dissect_element_QueryInfoKey_max_valbufsize_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
429 static int winreg_dissect_element_QueryInfoKey_secdescsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
430 static int winreg_dissect_element_QueryInfoKey_secdescsize_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
431 static int winreg_dissect_element_QueryInfoKey_last_changed_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
432 static int winreg_dissect_element_QueryInfoKey_last_changed_time_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
433 static int winreg_dissect_element_QueryValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
434 static int winreg_dissect_element_QueryValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
435 static int winreg_dissect_element_QueryValue_value_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
436 static int winreg_dissect_element_QueryValue_value_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
437 static int winreg_dissect_element_QueryValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
438 static int winreg_dissect_element_QueryValue_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
439 static int winreg_dissect_element_QueryValue_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
440 static int winreg_dissect_element_QueryValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
441 static int winreg_dissect_element_QueryValue_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
442 static int winreg_dissect_element_QueryValue_data_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
443 static int winreg_dissect_element_QueryValue_data_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
444 static int winreg_dissect_element_QueryValue_data_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
445 static int winreg_dissect_element_QueryValue_data_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
446 static int winreg_dissect_element_ReplaceKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
447 static int winreg_dissect_element_ReplaceKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
448 static int winreg_dissect_element_ReplaceKey_subkey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
449 static int winreg_dissect_element_ReplaceKey_subkey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
450 static int winreg_dissect_element_ReplaceKey_new_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
451 static int winreg_dissect_element_ReplaceKey_new_file_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
452 static int winreg_dissect_element_ReplaceKey_old_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
453 static int winreg_dissect_element_ReplaceKey_old_file_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
454 static int winreg_dissect_element_RestoreKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
455 static int winreg_dissect_element_RestoreKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
456 static int winreg_dissect_element_RestoreKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
457 static int winreg_dissect_element_RestoreKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
458 static int winreg_dissect_element_RestoreKey_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
459 static int winreg_dissect_element_SaveKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
460 static int winreg_dissect_element_SaveKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
461 static int winreg_dissect_element_SaveKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
462 static int winreg_dissect_element_SaveKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
463 static int winreg_dissect_element_SaveKey_sec_attrib(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
464 static int winreg_dissect_element_SaveKey_sec_attrib_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
465 static int winreg_dissect_element_SetKeySecurity_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
466 static int winreg_dissect_element_SetKeySecurity_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
467 static int winreg_dissect_element_SetKeySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
468 static int winreg_dissect_element_SetKeySecurity_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
469 static int winreg_dissect_element_SetKeySecurity_sd_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
470 static int winreg_dissect_element_SetValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
471 static int winreg_dissect_element_SetValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
472 static int winreg_dissect_element_SetValue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
473 static int winreg_dissect_element_SetValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
474 static int winreg_dissect_element_SetValue_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
475 static int winreg_dissect_element_SetValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
476 static int winreg_dissect_element_SetValue_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
477 static int winreg_dissect_element_SetValue_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
478 static int winreg_dissect_element_UnLoadKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
479 static int winreg_dissect_element_UnLoadKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
480 static int winreg_dissect_element_UnLoadKey_subkey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
481 static int winreg_dissect_element_UnLoadKey_subkey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
482 static int winreg_dissect_element_InitiateSystemShutdown_hostname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
483 static int winreg_dissect_element_InitiateSystemShutdown_hostname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
484 static int winreg_dissect_element_InitiateSystemShutdown_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
485 static int winreg_dissect_element_InitiateSystemShutdown_message_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
486 static int winreg_dissect_element_InitiateSystemShutdown_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
487 static int winreg_dissect_element_InitiateSystemShutdown_force_apps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
488 static int winreg_dissect_element_InitiateSystemShutdown_do_reboot(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
489 static int winreg_dissect_element_AbortSystemShutdown_server(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
490 static int winreg_dissect_element_AbortSystemShutdown_server_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
491 static int winreg_dissect_element_GetVersion_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
492 static int winreg_dissect_element_GetVersion_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
493 static int winreg_dissect_element_GetVersion_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
494 static int winreg_dissect_element_GetVersion_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
495 static int winreg_dissect_element_OpenHKCC_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
496 static int winreg_dissect_element_OpenHKCC_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
497 static int winreg_dissect_element_OpenHKCC_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
498 static int winreg_dissect_element_OpenHKCC_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
499 static int winreg_dissect_element_OpenHKCC_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
500 static int winreg_dissect_element_OpenHKDD_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
501 static int winreg_dissect_element_OpenHKDD_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
502 static int winreg_dissect_element_OpenHKDD_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
503 static int winreg_dissect_element_OpenHKDD_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
504 static int winreg_dissect_element_OpenHKDD_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
505 static int winreg_dissect_element_QueryMultipleValues_key_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
506 static int winreg_dissect_element_QueryMultipleValues_key_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
507 static int winreg_dissect_element_QueryMultipleValues_values_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
508 static int winreg_dissect_element_QueryMultipleValues_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
509 static int winreg_dissect_element_QueryMultipleValues_values_in__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
510 static int winreg_dissect_element_QueryMultipleValues_values_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
511 static int winreg_dissect_element_QueryMultipleValues_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
512 static int winreg_dissect_element_QueryMultipleValues_values_out__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
513 static int winreg_dissect_element_QueryMultipleValues_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
514 static int winreg_dissect_element_QueryMultipleValues_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
515 static int winreg_dissect_element_QueryMultipleValues_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
516 static int winreg_dissect_element_QueryMultipleValues_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
517 static int winreg_dissect_element_QueryMultipleValues_buffer_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
518 static int winreg_dissect_element_QueryMultipleValues_buffer_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
519 static int winreg_dissect_element_InitiateSystemShutdownEx_hostname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
520 static int winreg_dissect_element_InitiateSystemShutdownEx_hostname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
521 static int winreg_dissect_element_InitiateSystemShutdownEx_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
522 static int winreg_dissect_element_InitiateSystemShutdownEx_message_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
523 static int winreg_dissect_element_InitiateSystemShutdownEx_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
524 static int winreg_dissect_element_InitiateSystemShutdownEx_force_apps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
525 static int winreg_dissect_element_InitiateSystemShutdownEx_do_reboot(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
526 static int winreg_dissect_element_InitiateSystemShutdownEx_reason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
527 static int winreg_dissect_element_SaveKeyEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
528 static int winreg_dissect_element_SaveKeyEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
529 static int winreg_dissect_element_SaveKeyEx_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
530 static int winreg_dissect_element_SaveKeyEx_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
531 static int winreg_dissect_element_SaveKeyEx_sec_attrib(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
532 static int winreg_dissect_element_SaveKeyEx_sec_attrib_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
533 static int winreg_dissect_element_SaveKeyEx_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
534 static int winreg_dissect_element_OpenHKPT_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
535 static int winreg_dissect_element_OpenHKPT_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
536 static int winreg_dissect_element_OpenHKPT_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
537 static int winreg_dissect_element_OpenHKPT_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
538 static int winreg_dissect_element_OpenHKPT_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
539 static int winreg_dissect_element_OpenHKPN_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
540 static int winreg_dissect_element_OpenHKPN_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
541 static int winreg_dissect_element_OpenHKPN_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
542 static int winreg_dissect_element_OpenHKPN_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
543 static int winreg_dissect_element_OpenHKPN_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
544 static int winreg_dissect_element_QueryMultipleValues2_key_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
545 static int winreg_dissect_element_QueryMultipleValues2_key_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
546 static int winreg_dissect_element_QueryMultipleValues2_values_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
547 static int winreg_dissect_element_QueryMultipleValues2_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
548 static int winreg_dissect_element_QueryMultipleValues2_values_in__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
549 static int winreg_dissect_element_QueryMultipleValues2_values_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
550 static int winreg_dissect_element_QueryMultipleValues2_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
551 static int winreg_dissect_element_QueryMultipleValues2_values_out__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
552 static int winreg_dissect_element_QueryMultipleValues2_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
553 static int winreg_dissect_element_QueryMultipleValues2_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
554 static int winreg_dissect_element_QueryMultipleValues2_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
555 static int winreg_dissect_element_QueryMultipleValues2_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
556 static int winreg_dissect_element_QueryMultipleValues2_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
557 static int winreg_dissect_element_QueryMultipleValues2_offered_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
558 static int winreg_dissect_element_QueryMultipleValues2_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
559 static int winreg_dissect_element_QueryMultipleValues2_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
560 static int winreg_dissect_element_DeleteKeyEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
561 static int winreg_dissect_element_DeleteKeyEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
562 static int winreg_dissect_element_DeleteKeyEx_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
563 static int winreg_dissect_element_DeleteKeyEx_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
564 static int winreg_dissect_element_DeleteKeyEx_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
565 static int winreg_dissect_element_DeleteKeyEx_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
566 #include "packet-dcerpc-lsa.h"
567 static void
568 winreg_specific_rights(tvbuff_t *tvb, int offset, proto_tree *tree, uint32_t access)
570 static int* const access_flags[] = {
571 &hf_winreg_winreg_AccessMask_KEY_WOW64_32KEY,
572 &hf_winreg_winreg_AccessMask_KEY_WOW64_64KEY,
573 &hf_winreg_winreg_AccessMask_KEY_CREATE_LINK,
574 &hf_winreg_winreg_AccessMask_KEY_NOTIFY,
575 &hf_winreg_winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS,
576 &hf_winreg_winreg_AccessMask_KEY_CREATE_SUB_KEY,
577 &hf_winreg_winreg_AccessMask_KEY_SET_VALUE,
578 &hf_winreg_winreg_AccessMask_KEY_QUERY_VALUE,
579 NULL
581 proto_tree_add_bitmask_list_value(tree, tvb, offset, 4, access_flags, access);
583 static struct access_mask_info winreg_access_mask_info = {
584 "WINREG", /* Name of specific rights */
585 winreg_specific_rights, /* Dissection function */
586 NULL, /* Generic mapping table */
587 NULL /* Standard mapping table */
589 static int
590 winreg_dissect_element_KeySecurityData_data_(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
592 uint32_t len;
593 if(di->conformant_run){
594 /*just a run to handle conformant arrays, nothing to dissect */
595 return offset;
597 /* this is a varying and conformant array */
598 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_max_size, NULL);
599 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_offset, NULL);
600 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_winreg_sd_actual_size, &len);
601 dissect_nt_sec_desc(tvb, offset, pinfo, tree, drep, true, len,
602 &winreg_access_mask_info);
603 offset += len;
604 return offset;
607 winreg_dissect_bitmap_AccessMask(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep, int hf_index _U_, uint32_t param _U_)
609 offset = dissect_nt_access_mask(
610 tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask,
611 &winreg_access_mask_info, NULL);
612 return offset;
614 /* winreg_String :
615 * typedef [public,noejs] struct {
616 * [value(strlen_m_term(name)*2)] uint16 name_len;
617 * [value(strlen_m_term(name)*2)] uint16 name_size;
618 * [string,charset(UTF16)] uint16 *name;
619 * } winreg_String;
621 static int
622 cnf_dissect_winreg_String(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, uint8_t *drep, uint32_t param, int hfindex)
624 proto_item *item = NULL;
625 proto_tree *tree = NULL;
626 int old_offset;
627 header_field_info *hf_info;
628 ALIGN_TO_4_BYTES;
629 old_offset = offset;
630 hf_info=proto_registrar_get_nth(hfindex);
631 if (parent_tree) {
632 tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 0, ett_winreg_winreg_String, &item, "%s: ", hf_info->name);
635 offset = winreg_dissect_element_String_name_len(tvb, offset, pinfo, tree, di, drep);
636 offset = winreg_dissect_element_String_name_size(tvb, offset, pinfo, tree, di, drep);
637 offset = dissect_ndr_pointer_cb(
638 tvb, offset, pinfo, tree, di, drep,
639 dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
640 hf_info->name, hfindex, cb_wstr_postprocess,
641 GINT_TO_POINTER(param));
642 proto_item_set_len(item, offset-old_offset);
643 return offset;
647 /* IDL: bitmap { */
648 /* IDL: } */
651 winreg_dissect_bitmap_security_secinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
653 uint32_t flags;
654 ALIGN_TO_4_BYTES;
656 proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, DREP_ENC_INTEGER(drep));
658 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
660 return offset;
664 /* IDL: bitmap { */
665 /* IDL: KEY_QUERY_VALUE = 0x00000001 , */
666 /* IDL: KEY_SET_VALUE = 0x00000002 , */
667 /* IDL: KEY_CREATE_SUB_KEY = 0x00000004 , */
668 /* IDL: KEY_ENUMERATE_SUB_KEYS = 0x00000008 , */
669 /* IDL: KEY_NOTIFY = 0x00000010 , */
670 /* IDL: KEY_CREATE_LINK = 0x00000020 , */
671 /* IDL: KEY_WOW64_64KEY = 0x00000100 , */
672 /* IDL: KEY_WOW64_32KEY = 0x00000200 , */
673 /* IDL: } */
676 /* IDL: struct { */
677 /* IDL: [value(strlen_m_term(name)*2)] uint16 name_len; */
678 /* IDL: [value(strlen_m_term(name)*2)] uint16 name_size; */
679 /* IDL: [charset(UTF16)] [unique(1)] uint16 *name; */
680 /* IDL: } */
682 static int
683 winreg_dissect_element_String_name_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
685 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_String_name_len, 0);
687 return offset;
690 static int
691 winreg_dissect_element_String_name_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
693 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_String_name_size, 0);
695 return offset;
698 static int
699 winreg_dissect_element_String_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
701 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_String_name_, NDR_POINTER_UNIQUE, "Pointer to Name (uint16)",hf_winreg_winreg_String_name);
703 return offset;
706 static int
707 winreg_dissect_element_String_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
709 char *data;
711 offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_winreg_winreg_String_name, false, &data);
712 proto_item_append_text(tree, ": %s", data);
714 return offset;
718 winreg_dissect_struct_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
720 proto_item *item = NULL;
721 proto_tree *tree = NULL;
722 int old_offset;
724 ALIGN_TO_4_BYTES;
726 old_offset = offset;
728 if (parent_tree) {
729 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
730 tree = proto_item_add_subtree(item, ett_winreg_winreg_String);
733 offset = winreg_dissect_element_String_name_len(tvb, offset, pinfo, tree, di, drep);
735 offset = winreg_dissect_element_String_name_size(tvb, offset, pinfo, tree, di, drep);
737 offset = winreg_dissect_element_String_name(tvb, offset, pinfo, tree, di, drep);
740 proto_item_set_len(item, offset-old_offset);
743 if (di->call_data->flags & DCERPC_IS_NDR64) {
744 ALIGN_TO_4_BYTES;
747 return offset;
751 /* IDL: struct { */
752 /* IDL: [length_is(len)] [size_is(size)] [unique(1)] uint8 *data; */
753 /* IDL: uint32 size; */
754 /* IDL: uint32 len; */
755 /* IDL: } */
757 static int
758 winreg_dissect_element_KeySecurityData_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
760 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_KeySecurityData_data_, NDR_POINTER_UNIQUE, "Pointer to Data (uint8)",hf_winreg_KeySecurityData_data);
762 return offset;
765 static int
766 winreg_dissect_element_KeySecurityData_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
768 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_KeySecurityData_size, 0);
770 return offset;
773 static int
774 winreg_dissect_element_KeySecurityData_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
776 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_KeySecurityData_len, 0);
778 return offset;
782 winreg_dissect_struct_KeySecurityData(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
784 proto_item *item = NULL;
785 proto_tree *tree = NULL;
786 int old_offset;
788 ALIGN_TO_5_BYTES;
790 old_offset = offset;
792 if (parent_tree) {
793 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
794 tree = proto_item_add_subtree(item, ett_winreg_KeySecurityData);
797 offset = winreg_dissect_element_KeySecurityData_data(tvb, offset, pinfo, tree, di, drep);
799 offset = winreg_dissect_element_KeySecurityData_size(tvb, offset, pinfo, tree, di, drep);
801 offset = winreg_dissect_element_KeySecurityData_len(tvb, offset, pinfo, tree, di, drep);
804 proto_item_set_len(item, offset-old_offset);
807 if (di->call_data->flags & DCERPC_IS_NDR64) {
808 ALIGN_TO_5_BYTES;
811 return offset;
815 /* IDL: struct { */
816 /* IDL: uint32 length; */
817 /* IDL: KeySecurityData sd; */
818 /* IDL: uint8 inherit; */
819 /* IDL: } */
821 static int
822 winreg_dissect_element_SecBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
824 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SecBuf_length, 0);
826 return offset;
829 static int
830 winreg_dissect_element_SecBuf_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
832 offset = winreg_dissect_struct_KeySecurityData(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_SecBuf_sd,0);
834 return offset;
837 static int
838 winreg_dissect_element_SecBuf_inherit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
840 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SecBuf_inherit, 0);
842 return offset;
846 winreg_dissect_struct_SecBuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
848 proto_item *item = NULL;
849 proto_tree *tree = NULL;
850 int old_offset;
852 ALIGN_TO_5_BYTES;
854 old_offset = offset;
856 if (parent_tree) {
857 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
858 tree = proto_item_add_subtree(item, ett_winreg_winreg_SecBuf);
861 offset = winreg_dissect_element_SecBuf_length(tvb, offset, pinfo, tree, di, drep);
863 offset = winreg_dissect_element_SecBuf_sd(tvb, offset, pinfo, tree, di, drep);
865 offset = winreg_dissect_element_SecBuf_inherit(tvb, offset, pinfo, tree, di, drep);
868 proto_item_set_len(item, offset-old_offset);
871 if (di->call_data->flags & DCERPC_IS_NDR64) {
872 ALIGN_TO_5_BYTES;
875 return offset;
879 /* IDL: bitmap { */
880 /* IDL: REG_OPTION_VOLATILE = 0x00000001 , */
881 /* IDL: REG_OPTION_CREATE_LINK = 0x00000002 , */
882 /* IDL: REG_OPTION_BACKUP_RESTORE = 0x00000004 , */
883 /* IDL: REG_OPTION_OPEN_LINK = 0x00000008 , */
884 /* IDL: } */
887 winreg_dissect_bitmap_KeyOptions(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
889 proto_item *item;
890 static int * const winreg_winreg_KeyOptions_fields[] = {
891 &hf_winreg_winreg_KeyOptions_REG_OPTION_VOLATILE,
892 &hf_winreg_winreg_KeyOptions_REG_OPTION_CREATE_LINK,
893 &hf_winreg_winreg_KeyOptions_REG_OPTION_BACKUP_RESTORE,
894 &hf_winreg_winreg_KeyOptions_REG_OPTION_OPEN_LINK,
895 NULL
897 uint32_t flags;
898 ALIGN_TO_4_BYTES;
900 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
901 ett_winreg_winreg_KeyOptions, winreg_winreg_KeyOptions_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
903 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
905 if (!flags)
906 proto_item_append_text(item, ": (No values set)");
908 if (flags & (~0x0000000f)) {
909 flags &= (~0x0000000f);
910 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
913 return offset;
917 /* IDL: enum { */
918 /* IDL: REG_ACTION_NONE=0, */
919 /* IDL: REG_CREATED_NEW_KEY=1, */
920 /* IDL: REG_OPENED_EXISTING_KEY=2, */
921 /* IDL: } */
924 winreg_dissect_enum_CreateAction(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t *param _U_)
926 uint32_t parameter=0;
927 if (param) {
928 parameter = *param;
930 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
931 if (param) {
932 *param = parameter;
934 return offset;
938 /* IDL: struct { */
939 /* IDL: [value(strlen_m_term_null(name)*2)] uint16 length; */
940 /* IDL: uint16 size; */
941 /* IDL: [charset(UTF16)] [length_is(length/2)] [size_is(size/2)] [unique(1)] uint16 *name; */
942 /* IDL: } */
944 static int
945 winreg_dissect_element_StringBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
947 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_StringBuf_length, 0);
949 return offset;
952 static int
953 winreg_dissect_element_StringBuf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
955 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_StringBuf_size, 0);
957 return offset;
960 static int
961 winreg_dissect_element_StringBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
963 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_StringBuf_name_, NDR_POINTER_UNIQUE, "Pointer to Name (uint16)",hf_winreg_winreg_StringBuf_name);
965 return offset;
968 static int
969 winreg_dissect_element_StringBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
971 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_StringBuf_name__);
973 return offset;
976 static int
977 winreg_dissect_element_StringBuf_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
979 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_StringBuf_name, 0);
981 return offset;
985 winreg_dissect_struct_StringBuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
987 proto_item *item = NULL;
988 proto_tree *tree = NULL;
989 int old_offset;
991 ALIGN_TO_5_BYTES;
993 old_offset = offset;
995 if (parent_tree) {
996 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
997 tree = proto_item_add_subtree(item, ett_winreg_winreg_StringBuf);
1000 offset = winreg_dissect_element_StringBuf_length(tvb, offset, pinfo, tree, di, drep);
1002 offset = winreg_dissect_element_StringBuf_size(tvb, offset, pinfo, tree, di, drep);
1004 offset = winreg_dissect_element_StringBuf_name(tvb, offset, pinfo, tree, di, drep);
1007 proto_item_set_len(item, offset-old_offset);
1010 if (di->call_data->flags & DCERPC_IS_NDR64) {
1011 ALIGN_TO_5_BYTES;
1014 return offset;
1018 /* IDL: struct { */
1019 /* IDL: [value(strlen_m_term(name)*2)] uint16 length; */
1020 /* IDL: uint16 size; */
1021 /* IDL: [charset(UTF16)] [length_is(length/2)] [size_is(size/2)] [unique(1)] uint16 *name; */
1022 /* IDL: } */
1024 static int
1025 winreg_dissect_element_ValNameBuf_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1027 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_ValNameBuf_length, 0);
1029 return offset;
1032 static int
1033 winreg_dissect_element_ValNameBuf_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1035 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_ValNameBuf_size, 0);
1037 return offset;
1040 static int
1041 winreg_dissect_element_ValNameBuf_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1043 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ValNameBuf_name_, NDR_POINTER_UNIQUE, "Pointer to Name (uint16)",hf_winreg_winreg_ValNameBuf_name);
1045 return offset;
1048 static int
1049 winreg_dissect_element_ValNameBuf_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1051 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ValNameBuf_name__);
1053 return offset;
1056 static int
1057 winreg_dissect_element_ValNameBuf_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1059 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_ValNameBuf_name, 0);
1061 return offset;
1065 winreg_dissect_struct_ValNameBuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
1067 proto_item *item = NULL;
1068 proto_tree *tree = NULL;
1069 int old_offset;
1071 ALIGN_TO_5_BYTES;
1073 old_offset = offset;
1075 if (parent_tree) {
1076 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1077 tree = proto_item_add_subtree(item, ett_winreg_winreg_ValNameBuf);
1080 offset = winreg_dissect_element_ValNameBuf_length(tvb, offset, pinfo, tree, di, drep);
1082 offset = winreg_dissect_element_ValNameBuf_size(tvb, offset, pinfo, tree, di, drep);
1084 offset = winreg_dissect_element_ValNameBuf_name(tvb, offset, pinfo, tree, di, drep);
1087 proto_item_set_len(item, offset-old_offset);
1090 if (di->call_data->flags & DCERPC_IS_NDR64) {
1091 ALIGN_TO_5_BYTES;
1094 return offset;
1098 /* IDL: bitmap { */
1099 /* IDL: REG_NOTIFY_CHANGE_NAME = 0x00000001 , */
1100 /* IDL: REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 , */
1101 /* IDL: REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 , */
1102 /* IDL: REG_NOTIFY_CHANGE_SECURITY = 0x00000008 , */
1103 /* IDL: } */
1106 winreg_dissect_bitmap_NotifyChangeType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
1108 proto_item *item;
1109 static int * const winreg_winreg_NotifyChangeType_fields[] = {
1110 &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_NAME,
1111 &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_ATTRIBUTES,
1112 &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_LAST_SET,
1113 &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_SECURITY,
1114 NULL
1116 uint32_t flags;
1117 ALIGN_TO_4_BYTES;
1119 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
1120 ett_winreg_winreg_NotifyChangeType, winreg_winreg_NotifyChangeType_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
1122 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1124 if (!flags)
1125 proto_item_append_text(item, ": (No values set)");
1127 if (flags & (~0x0000000f)) {
1128 flags &= (~0x0000000f);
1129 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
1132 return offset;
1136 /* IDL: bitmap { */
1137 /* IDL: REG_WHOLE_HIVE_VOLATILE = 0x00000001 , */
1138 /* IDL: REG_REFRESH_HIVE = 0x00000002 , */
1139 /* IDL: REG_NO_LAZY_FLUSH = 0x00000004 , */
1140 /* IDL: REG_FORCE_RESTORE = 0x00000008 , */
1141 /* IDL: } */
1144 winreg_dissect_bitmap_RestoreKeyFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
1146 proto_item *item;
1147 static int * const winreg_winreg_RestoreKeyFlags_fields[] = {
1148 &hf_winreg_winreg_RestoreKeyFlags_REG_WHOLE_HIVE_VOLATILE,
1149 &hf_winreg_winreg_RestoreKeyFlags_REG_REFRESH_HIVE,
1150 &hf_winreg_winreg_RestoreKeyFlags_REG_NO_LAZY_FLUSH,
1151 &hf_winreg_winreg_RestoreKeyFlags_REG_FORCE_RESTORE,
1152 NULL
1154 uint32_t flags;
1155 ALIGN_TO_4_BYTES;
1157 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
1158 ett_winreg_winreg_RestoreKeyFlags, winreg_winreg_RestoreKeyFlags_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
1160 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1162 if (!flags)
1163 proto_item_append_text(item, ": (No values set)");
1165 if (flags & (~0x0000000f)) {
1166 flags &= (~0x0000000f);
1167 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
1170 return offset;
1174 /* IDL: struct { */
1175 /* IDL: uint32 data_size; */
1176 /* IDL: KeySecurityData sec_data; */
1177 /* IDL: uint8 inherit; */
1178 /* IDL: } */
1180 static int
1181 winreg_dissect_element_KeySecurityAttribute_data_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1183 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_KeySecurityAttribute_data_size, 0);
1185 return offset;
1188 static int
1189 winreg_dissect_element_KeySecurityAttribute_sec_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1191 offset = winreg_dissect_struct_KeySecurityData(tvb,offset,pinfo,tree,di,drep,hf_winreg_KeySecurityAttribute_sec_data,0);
1193 return offset;
1196 static int
1197 winreg_dissect_element_KeySecurityAttribute_inherit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1199 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_KeySecurityAttribute_inherit, 0);
1201 return offset;
1205 winreg_dissect_struct_KeySecurityAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
1207 proto_item *item = NULL;
1208 proto_tree *tree = NULL;
1209 int old_offset;
1211 ALIGN_TO_5_BYTES;
1213 old_offset = offset;
1215 if (parent_tree) {
1216 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1217 tree = proto_item_add_subtree(item, ett_winreg_KeySecurityAttribute);
1220 offset = winreg_dissect_element_KeySecurityAttribute_data_size(tvb, offset, pinfo, tree, di, drep);
1222 offset = winreg_dissect_element_KeySecurityAttribute_sec_data(tvb, offset, pinfo, tree, di, drep);
1224 offset = winreg_dissect_element_KeySecurityAttribute_inherit(tvb, offset, pinfo, tree, di, drep);
1227 proto_item_set_len(item, offset-old_offset);
1230 if (di->call_data->flags & DCERPC_IS_NDR64) {
1231 ALIGN_TO_5_BYTES;
1234 return offset;
1238 /* IDL: struct { */
1239 /* IDL: [unique(1)] winreg_ValNameBuf *ve_valuename; */
1240 /* IDL: uint32 ve_valuelen; */
1241 /* IDL: uint32 ve_valueptr; */
1242 /* IDL: winreg_Type ve_type; */
1243 /* IDL: } */
1245 static int
1246 winreg_dissect_element_QueryMultipleValue_ve_valuename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1248 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValue_ve_valuename_, NDR_POINTER_UNIQUE, "Pointer to Ve Valuename (winreg_ValNameBuf)",hf_winreg_QueryMultipleValue_ve_valuename);
1250 return offset;
1253 static int
1254 winreg_dissect_element_QueryMultipleValue_ve_valuename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1256 offset = winreg_dissect_struct_ValNameBuf(tvb,offset,pinfo,tree,di,drep,hf_winreg_QueryMultipleValue_ve_valuename,0);
1258 return offset;
1261 static int
1262 winreg_dissect_element_QueryMultipleValue_ve_valuelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1264 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_QueryMultipleValue_ve_valuelen, 0);
1266 return offset;
1269 static int
1270 winreg_dissect_element_QueryMultipleValue_ve_valueptr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1272 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_QueryMultipleValue_ve_valueptr, 0);
1274 return offset;
1277 static int
1278 winreg_dissect_element_QueryMultipleValue_ve_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1280 offset=misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, hf_winreg_QueryMultipleValue_ve_type, 0);
1282 return offset;
1286 winreg_dissect_struct_QueryMultipleValue(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_, int hf_index _U_, uint32_t param _U_)
1288 proto_item *item = NULL;
1289 proto_tree *tree = NULL;
1290 int old_offset;
1292 ALIGN_TO_5_BYTES;
1294 old_offset = offset;
1296 if (parent_tree) {
1297 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1298 tree = proto_item_add_subtree(item, ett_winreg_QueryMultipleValue);
1301 offset = winreg_dissect_element_QueryMultipleValue_ve_valuename(tvb, offset, pinfo, tree, di, drep);
1303 offset = winreg_dissect_element_QueryMultipleValue_ve_valuelen(tvb, offset, pinfo, tree, di, drep);
1305 offset = winreg_dissect_element_QueryMultipleValue_ve_valueptr(tvb, offset, pinfo, tree, di, drep);
1307 offset = winreg_dissect_element_QueryMultipleValue_ve_type(tvb, offset, pinfo, tree, di, drep);
1310 proto_item_set_len(item, offset-old_offset);
1313 if (di->call_data->flags & DCERPC_IS_NDR64) {
1314 ALIGN_TO_5_BYTES;
1317 return offset;
1320 static int
1321 winreg_dissect_element_OpenHKCR_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1323 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCR_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
1325 return offset;
1328 static int
1329 winreg_dissect_element_OpenHKCR_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1331 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
1333 return offset;
1336 static int
1337 winreg_dissect_element_OpenHKCR_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1339 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
1341 return offset;
1344 static int
1345 winreg_dissect_element_OpenHKCR_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1347 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCR_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1349 return offset;
1352 static int
1353 winreg_dissect_element_OpenHKCR_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1355 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
1357 return offset;
1360 /* IDL: WERROR winreg_OpenHKCR( */
1361 /* IDL: [in] [unique(1)] uint16 *system_name, */
1362 /* IDL: [in] winreg_AccessMask access_mask, */
1363 /* IDL: [out] [ref] policy_handle *handle */
1364 /* IDL: ); */
1366 static int
1367 winreg_dissect_OpenHKCR_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1369 uint32_t status;
1371 di->dcerpc_procedure_name="OpenHKCR";
1372 offset = winreg_dissect_element_OpenHKCR_handle(tvb, offset, pinfo, tree, di, drep);
1373 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1375 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1377 if (status != 0)
1378 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1380 return offset;
1383 static int
1384 winreg_dissect_OpenHKCR_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1386 di->dcerpc_procedure_name="OpenHKCR";
1387 offset = winreg_dissect_element_OpenHKCR_system_name(tvb, offset, pinfo, tree, di, drep);
1388 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1389 offset = winreg_dissect_element_OpenHKCR_access_mask(tvb, offset, pinfo, tree, di, drep);
1390 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1391 return offset;
1394 static int
1395 winreg_dissect_element_OpenHKCU_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1397 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCU_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
1399 return offset;
1402 static int
1403 winreg_dissect_element_OpenHKCU_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1405 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
1407 return offset;
1410 static int
1411 winreg_dissect_element_OpenHKCU_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1413 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_OpenHKCU_access_mask, 0);
1415 return offset;
1418 static int
1419 winreg_dissect_element_OpenHKCU_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1421 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCU_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1423 return offset;
1426 static int
1427 winreg_dissect_element_OpenHKCU_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1429 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
1431 return offset;
1434 /* IDL: WERROR winreg_OpenHKCU( */
1435 /* IDL: [in] [unique(1)] uint16 *system_name, */
1436 /* IDL: [in] winreg_AccessMask access_mask, */
1437 /* IDL: [out] [ref] policy_handle *handle */
1438 /* IDL: ); */
1440 static int
1441 winreg_dissect_OpenHKCU_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1443 uint32_t status;
1445 di->dcerpc_procedure_name="OpenHKCU";
1446 offset = winreg_dissect_element_OpenHKCU_handle(tvb, offset, pinfo, tree, di, drep);
1447 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1449 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1451 if (status != 0)
1452 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1454 return offset;
1457 static int
1458 winreg_dissect_OpenHKCU_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1460 di->dcerpc_procedure_name="OpenHKCU";
1461 offset = winreg_dissect_element_OpenHKCU_system_name(tvb, offset, pinfo, tree, di, drep);
1462 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1463 offset = winreg_dissect_element_OpenHKCU_access_mask(tvb, offset, pinfo, tree, di, drep);
1464 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1465 return offset;
1468 static int
1469 winreg_dissect_element_OpenHKLM_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1471 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKLM_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
1473 return offset;
1476 static int
1477 winreg_dissect_element_OpenHKLM_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1479 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
1481 return offset;
1484 static int
1485 winreg_dissect_element_OpenHKLM_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1487 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
1489 return offset;
1492 static int
1493 winreg_dissect_element_OpenHKLM_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1495 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKLM_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1497 return offset;
1500 static int
1501 winreg_dissect_element_OpenHKLM_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1503 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
1505 return offset;
1508 /* IDL: WERROR winreg_OpenHKLM( */
1509 /* IDL: [in] [unique(1)] uint16 *system_name, */
1510 /* IDL: [in] winreg_AccessMask access_mask, */
1511 /* IDL: [out] [ref] policy_handle *handle */
1512 /* IDL: ); */
1514 static int
1515 winreg_dissect_OpenHKLM_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1517 uint32_t status;
1519 di->dcerpc_procedure_name="OpenHKLM";
1520 offset = winreg_dissect_element_OpenHKLM_handle(tvb, offset, pinfo, tree, di, drep);
1521 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1523 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1525 if (status != 0)
1526 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1528 return offset;
1531 static int
1532 winreg_dissect_OpenHKLM_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1534 di->dcerpc_procedure_name="OpenHKLM";
1535 offset = winreg_dissect_element_OpenHKLM_system_name(tvb, offset, pinfo, tree, di, drep);
1536 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1537 offset = winreg_dissect_element_OpenHKLM_access_mask(tvb, offset, pinfo, tree, di, drep);
1538 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1539 return offset;
1542 static int
1543 winreg_dissect_element_OpenHKPD_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1545 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPD_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
1547 return offset;
1550 static int
1551 winreg_dissect_element_OpenHKPD_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1553 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
1555 return offset;
1558 static int
1559 winreg_dissect_element_OpenHKPD_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1561 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_OpenHKPD_access_mask, 0);
1563 return offset;
1566 static int
1567 winreg_dissect_element_OpenHKPD_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1569 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPD_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1571 return offset;
1574 static int
1575 winreg_dissect_element_OpenHKPD_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1577 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
1579 return offset;
1582 /* IDL: WERROR winreg_OpenHKPD( */
1583 /* IDL: [in] [unique(1)] uint16 *system_name, */
1584 /* IDL: [in] winreg_AccessMask access_mask, */
1585 /* IDL: [out] [ref] policy_handle *handle */
1586 /* IDL: ); */
1588 static int
1589 winreg_dissect_OpenHKPD_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1591 uint32_t status;
1593 di->dcerpc_procedure_name="OpenHKPD";
1594 offset = winreg_dissect_element_OpenHKPD_handle(tvb, offset, pinfo, tree, di, drep);
1595 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1597 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1599 if (status != 0)
1600 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1602 return offset;
1605 static int
1606 winreg_dissect_OpenHKPD_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1608 di->dcerpc_procedure_name="OpenHKPD";
1609 offset = winreg_dissect_element_OpenHKPD_system_name(tvb, offset, pinfo, tree, di, drep);
1610 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1611 offset = winreg_dissect_element_OpenHKPD_access_mask(tvb, offset, pinfo, tree, di, drep);
1612 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1613 return offset;
1616 static int
1617 winreg_dissect_element_OpenHKU_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1619 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKU_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
1621 return offset;
1624 static int
1625 winreg_dissect_element_OpenHKU_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1627 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
1629 return offset;
1632 static int
1633 winreg_dissect_element_OpenHKU_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1635 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
1637 return offset;
1640 static int
1641 winreg_dissect_element_OpenHKU_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1643 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKU_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1645 return offset;
1648 static int
1649 winreg_dissect_element_OpenHKU_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1651 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
1653 return offset;
1656 /* IDL: WERROR winreg_OpenHKU( */
1657 /* IDL: [in] [unique(1)] uint16 *system_name, */
1658 /* IDL: [in] winreg_AccessMask access_mask, */
1659 /* IDL: [out] [ref] policy_handle *handle */
1660 /* IDL: ); */
1662 static int
1663 winreg_dissect_OpenHKU_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1665 uint32_t status;
1667 di->dcerpc_procedure_name="OpenHKU";
1668 offset = winreg_dissect_element_OpenHKU_handle(tvb, offset, pinfo, tree, di, drep);
1669 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1671 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1673 if (status != 0)
1674 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1676 return offset;
1679 static int
1680 winreg_dissect_OpenHKU_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1682 di->dcerpc_procedure_name="OpenHKU";
1683 offset = winreg_dissect_element_OpenHKU_system_name(tvb, offset, pinfo, tree, di, drep);
1684 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1685 offset = winreg_dissect_element_OpenHKU_access_mask(tvb, offset, pinfo, tree, di, drep);
1686 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1687 return offset;
1690 static int
1691 winreg_dissect_element_CloseKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1693 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_CloseKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1695 return offset;
1698 static int
1699 winreg_dissect_element_CloseKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1701 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_CLOSE);
1703 return offset;
1706 /* IDL: WERROR winreg_CloseKey( */
1707 /* IDL: [in] [out] [ref] policy_handle *handle */
1708 /* IDL: ); */
1710 static int
1711 winreg_dissect_CloseKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1713 uint32_t status;
1715 di->dcerpc_procedure_name="CloseKey";
1716 offset = winreg_dissect_element_CloseKey_handle(tvb, offset, pinfo, tree, di, drep);
1717 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1719 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1721 if (status != 0)
1722 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1724 return offset;
1727 static int
1728 winreg_dissect_CloseKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1730 di->dcerpc_procedure_name="CloseKey";
1731 offset = winreg_dissect_element_CloseKey_handle(tvb, offset, pinfo, tree, di, drep);
1732 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1733 return offset;
1736 static int
1737 winreg_dissect_element_CreateKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1739 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_CreateKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1741 return offset;
1744 static int
1745 winreg_dissect_element_CreateKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1747 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
1749 return offset;
1752 static int
1753 winreg_dissect_element_CreateKey_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1755 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 2|PIDL_SET_COL_INFO, hf_winreg_winreg_CreateKey_name);
1757 return offset;
1760 static int
1761 winreg_dissect_element_CreateKey_keyclass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1763 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_CreateKey_keyclass);
1765 return offset;
1768 static int
1769 winreg_dissect_element_CreateKey_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1771 offset = winreg_dissect_bitmap_KeyOptions(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_CreateKey_options, 0);
1773 return offset;
1776 static int
1777 winreg_dissect_element_CreateKey_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1779 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
1781 return offset;
1784 static int
1785 winreg_dissect_element_CreateKey_secdesc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1787 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_CreateKey_secdesc_, NDR_POINTER_UNIQUE, "Pointer to Secdesc (winreg_SecBuf)",hf_winreg_winreg_CreateKey_secdesc);
1789 return offset;
1792 static int
1793 winreg_dissect_element_CreateKey_secdesc_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1795 offset = winreg_dissect_struct_SecBuf(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_CreateKey_secdesc,0);
1797 return offset;
1800 static int
1801 winreg_dissect_element_CreateKey_new_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1803 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_CreateKey_new_handle_, NDR_POINTER_REF, "Pointer to New Handle (policy_handle)",hf_winreg_winreg_CreateKey_new_handle);
1805 return offset;
1808 static int
1809 winreg_dissect_element_CreateKey_new_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1811 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_CreateKey_new_handle, PIDL_POLHND_OPEN);
1813 return offset;
1816 static int
1817 winreg_dissect_element_CreateKey_action_taken(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1819 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_CreateKey_action_taken_, NDR_POINTER_UNIQUE, "Pointer to Action Taken (winreg_CreateAction)",hf_winreg_winreg_CreateKey_action_taken);
1821 return offset;
1824 static int
1825 winreg_dissect_element_CreateKey_action_taken_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1827 offset = winreg_dissect_enum_CreateAction(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_CreateKey_action_taken, 0);
1829 return offset;
1832 /* IDL: WERROR winreg_CreateKey( */
1833 /* IDL: [in] [ref] policy_handle *handle, */
1834 /* IDL: [in] winreg_String name, */
1835 /* IDL: [in] winreg_String keyclass, */
1836 /* IDL: [in] winreg_KeyOptions options, */
1837 /* IDL: [in] winreg_AccessMask access_mask, */
1838 /* IDL: [in] [unique(1)] winreg_SecBuf *secdesc, */
1839 /* IDL: [out] [ref] policy_handle *new_handle, */
1840 /* IDL: [in] [out] [unique(1)] winreg_CreateAction *action_taken */
1841 /* IDL: ); */
1843 static int
1844 winreg_dissect_CreateKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1846 uint32_t status;
1848 di->dcerpc_procedure_name="CreateKey";
1849 offset = winreg_dissect_element_CreateKey_new_handle(tvb, offset, pinfo, tree, di, drep);
1850 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1852 offset = winreg_dissect_element_CreateKey_action_taken(tvb, offset, pinfo, tree, di, drep);
1853 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1855 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1857 if (status != 0)
1858 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1860 return offset;
1863 static int
1864 winreg_dissect_CreateKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1866 di->dcerpc_procedure_name="CreateKey";
1867 offset = winreg_dissect_element_CreateKey_handle(tvb, offset, pinfo, tree, di, drep);
1868 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1869 offset = winreg_dissect_element_CreateKey_name(tvb, offset, pinfo, tree, di, drep);
1870 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1871 offset = winreg_dissect_element_CreateKey_keyclass(tvb, offset, pinfo, tree, di, drep);
1872 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1873 offset = winreg_dissect_element_CreateKey_options(tvb, offset, pinfo, tree, di, drep);
1874 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1875 offset = winreg_dissect_element_CreateKey_access_mask(tvb, offset, pinfo, tree, di, drep);
1876 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1877 offset = winreg_dissect_element_CreateKey_secdesc(tvb, offset, pinfo, tree, di, drep);
1878 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1879 offset = winreg_dissect_element_CreateKey_action_taken(tvb, offset, pinfo, tree, di, drep);
1880 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1881 return offset;
1884 static int
1885 winreg_dissect_element_DeleteKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1887 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_DeleteKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1889 return offset;
1892 static int
1893 winreg_dissect_element_DeleteKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1895 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
1897 return offset;
1900 static int
1901 winreg_dissect_element_DeleteKey_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1903 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 2|PIDL_SET_COL_INFO, hf_winreg_winreg_DeleteKey_key);
1905 return offset;
1908 /* IDL: WERROR winreg_DeleteKey( */
1909 /* IDL: [in] [ref] policy_handle *handle, */
1910 /* IDL: [in] winreg_String key */
1911 /* IDL: ); */
1913 static int
1914 winreg_dissect_DeleteKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1916 uint32_t status;
1918 di->dcerpc_procedure_name="DeleteKey";
1919 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1921 if (status != 0)
1922 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1924 return offset;
1927 static int
1928 winreg_dissect_DeleteKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1930 di->dcerpc_procedure_name="DeleteKey";
1931 offset = winreg_dissect_element_DeleteKey_handle(tvb, offset, pinfo, tree, di, drep);
1932 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1933 offset = winreg_dissect_element_DeleteKey_key(tvb, offset, pinfo, tree, di, drep);
1934 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1935 return offset;
1938 static int
1939 winreg_dissect_element_DeleteValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1941 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_DeleteValue_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1943 return offset;
1946 static int
1947 winreg_dissect_element_DeleteValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1949 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
1951 return offset;
1954 static int
1955 winreg_dissect_element_DeleteValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1957 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_DeleteValue_value);
1959 return offset;
1962 /* IDL: WERROR winreg_DeleteValue( */
1963 /* IDL: [in] [ref] policy_handle *handle, */
1964 /* IDL: [in] winreg_String value */
1965 /* IDL: ); */
1967 static int
1968 winreg_dissect_DeleteValue_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1970 uint32_t status;
1972 di->dcerpc_procedure_name="DeleteValue";
1973 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
1975 if (status != 0)
1976 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1978 return offset;
1981 static int
1982 winreg_dissect_DeleteValue_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1984 di->dcerpc_procedure_name="DeleteValue";
1985 offset = winreg_dissect_element_DeleteValue_handle(tvb, offset, pinfo, tree, di, drep);
1986 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1987 offset = winreg_dissect_element_DeleteValue_value(tvb, offset, pinfo, tree, di, drep);
1988 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1989 return offset;
1992 static int
1993 winreg_dissect_element_EnumKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1995 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
1997 return offset;
2000 static int
2001 winreg_dissect_element_EnumKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2003 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2005 return offset;
2008 static int
2009 winreg_dissect_element_EnumKey_enum_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2011 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumKey_enum_index, 0);
2013 return offset;
2016 static int
2017 winreg_dissect_element_EnumKey_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2019 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumKey_name_, NDR_POINTER_REF, "Pointer to Name (winreg_StringBuf)",hf_winreg_winreg_EnumKey_name);
2021 return offset;
2024 static int
2025 winreg_dissect_element_EnumKey_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2027 offset = winreg_dissect_struct_StringBuf(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_EnumKey_name,0);
2029 return offset;
2032 static int
2033 winreg_dissect_element_EnumKey_keyclass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2035 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumKey_keyclass_, NDR_POINTER_UNIQUE, "Pointer to Keyclass (winreg_StringBuf)",hf_winreg_winreg_EnumKey_keyclass);
2037 return offset;
2040 static int
2041 winreg_dissect_element_EnumKey_keyclass_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2043 offset = winreg_dissect_struct_StringBuf(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_EnumKey_keyclass,0);
2045 return offset;
2048 static int
2049 winreg_dissect_element_EnumKey_last_changed_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2051 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumKey_last_changed_time_, NDR_POINTER_UNIQUE, "Pointer to Last Changed Time (NTTIME)",hf_winreg_winreg_EnumKey_last_changed_time);
2053 return offset;
2056 static int
2057 winreg_dissect_element_EnumKey_last_changed_time_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2059 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumKey_last_changed_time);
2061 return offset;
2064 /* IDL: WERROR winreg_EnumKey( */
2065 /* IDL: [in] [ref] policy_handle *handle, */
2066 /* IDL: [in] uint32 enum_index, */
2067 /* IDL: [in] [out] [ref] winreg_StringBuf *name, */
2068 /* IDL: [in] [out] [unique(1)] winreg_StringBuf *keyclass, */
2069 /* IDL: [in] [out] [unique(1)] NTTIME *last_changed_time */
2070 /* IDL: ); */
2072 static int
2073 winreg_dissect_EnumKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2075 uint32_t status;
2077 di->dcerpc_procedure_name="EnumKey";
2078 offset = winreg_dissect_element_EnumKey_name(tvb, offset, pinfo, tree, di, drep);
2079 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2081 offset = winreg_dissect_element_EnumKey_keyclass(tvb, offset, pinfo, tree, di, drep);
2082 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2084 offset = winreg_dissect_element_EnumKey_last_changed_time(tvb, offset, pinfo, tree, di, drep);
2085 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2087 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2089 if (status != 0)
2090 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2092 return offset;
2095 static int
2096 winreg_dissect_EnumKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2098 di->dcerpc_procedure_name="EnumKey";
2099 offset = winreg_dissect_element_EnumKey_handle(tvb, offset, pinfo, tree, di, drep);
2100 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2101 offset = winreg_dissect_element_EnumKey_enum_index(tvb, offset, pinfo, tree, di, drep);
2102 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2103 offset = winreg_dissect_element_EnumKey_name(tvb, offset, pinfo, tree, di, drep);
2104 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2105 offset = winreg_dissect_element_EnumKey_keyclass(tvb, offset, pinfo, tree, di, drep);
2106 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2107 offset = winreg_dissect_element_EnumKey_last_changed_time(tvb, offset, pinfo, tree, di, drep);
2108 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2109 return offset;
2112 static int
2113 winreg_dissect_element_EnumValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2115 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2117 return offset;
2120 static int
2121 winreg_dissect_element_EnumValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2123 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2125 return offset;
2128 static int
2129 winreg_dissect_element_EnumValue_enum_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2131 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumValue_enum_index, 0);
2133 return offset;
2136 static int
2137 winreg_dissect_element_EnumValue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2139 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_name_, NDR_POINTER_REF, "Pointer to Name (winreg_ValNameBuf)",hf_winreg_winreg_EnumValue_name);
2141 return offset;
2144 static int
2145 winreg_dissect_element_EnumValue_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2147 offset = winreg_dissect_struct_ValNameBuf(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_EnumValue_name,0);
2149 return offset;
2152 static int
2153 winreg_dissect_element_EnumValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2155 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_type_, NDR_POINTER_UNIQUE, "Pointer to Type (winreg_Type)",hf_winreg_winreg_EnumValue_type);
2157 return offset;
2160 static int
2161 winreg_dissect_element_EnumValue_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2163 offset=misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumValue_type, 0);
2165 return offset;
2168 static int
2169 winreg_dissect_element_EnumValue_value(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2171 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_value_, NDR_POINTER_UNIQUE, "Pointer to Value (uint8)",hf_winreg_winreg_EnumValue_value);
2173 return offset;
2176 static int
2177 winreg_dissect_element_EnumValue_value_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2179 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_value__);
2181 return offset;
2184 static int
2185 winreg_dissect_element_EnumValue_value__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2187 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumValue_value, 0);
2189 return offset;
2192 static int
2193 winreg_dissect_element_EnumValue_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2195 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_size_, NDR_POINTER_UNIQUE, "Pointer to Size (uint32)",hf_winreg_winreg_EnumValue_size);
2197 return offset;
2200 static int
2201 winreg_dissect_element_EnumValue_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2203 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumValue_size, 0);
2205 return offset;
2208 static int
2209 winreg_dissect_element_EnumValue_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2211 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_EnumValue_length_, NDR_POINTER_UNIQUE, "Pointer to Length (uint32)",hf_winreg_winreg_EnumValue_length);
2213 return offset;
2216 static int
2217 winreg_dissect_element_EnumValue_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2219 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_EnumValue_length, 0);
2221 return offset;
2224 /* IDL: WERROR winreg_EnumValue( */
2225 /* IDL: [in] [ref] policy_handle *handle, */
2226 /* IDL: [in] uint32 enum_index, */
2227 /* IDL: [in] [out] [ref] winreg_ValNameBuf *name, */
2228 /* IDL: [in] [out] [unique(1)] winreg_Type *type, */
2229 /* IDL: [in] [length_is(length?*length:0)] [out] [range(0,0x4000000)] [size_is(size?*size:0)] [unique(1)] uint8 *value, */
2230 /* IDL: [in] [out] [unique(1)] uint32 *size, */
2231 /* IDL: [in] [out] [unique(1)] uint32 *length */
2232 /* IDL: ); */
2234 static int
2235 winreg_dissect_EnumValue_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2237 uint32_t status;
2239 di->dcerpc_procedure_name="EnumValue";
2240 offset = winreg_dissect_element_EnumValue_name(tvb, offset, pinfo, tree, di, drep);
2241 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2243 offset = winreg_dissect_element_EnumValue_type(tvb, offset, pinfo, tree, di, drep);
2244 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2246 offset = winreg_dissect_element_EnumValue_value(tvb, offset, pinfo, tree, di, drep);
2247 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2249 offset = winreg_dissect_element_EnumValue_size(tvb, offset, pinfo, tree, di, drep);
2250 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2252 offset = winreg_dissect_element_EnumValue_length(tvb, offset, pinfo, tree, di, drep);
2253 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2255 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2257 if (status != 0)
2258 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2260 return offset;
2263 static int
2264 winreg_dissect_EnumValue_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2266 di->dcerpc_procedure_name="EnumValue";
2267 offset = winreg_dissect_element_EnumValue_handle(tvb, offset, pinfo, tree, di, drep);
2268 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2269 offset = winreg_dissect_element_EnumValue_enum_index(tvb, offset, pinfo, tree, di, drep);
2270 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2271 offset = winreg_dissect_element_EnumValue_name(tvb, offset, pinfo, tree, di, drep);
2272 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2273 offset = winreg_dissect_element_EnumValue_type(tvb, offset, pinfo, tree, di, drep);
2274 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2275 offset = winreg_dissect_element_EnumValue_value(tvb, offset, pinfo, tree, di, drep);
2276 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2277 offset = winreg_dissect_element_EnumValue_size(tvb, offset, pinfo, tree, di, drep);
2278 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2279 offset = winreg_dissect_element_EnumValue_length(tvb, offset, pinfo, tree, di, drep);
2280 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2281 return offset;
2284 static int
2285 winreg_dissect_element_FlushKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2287 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_FlushKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2289 return offset;
2292 static int
2293 winreg_dissect_element_FlushKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2295 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2297 return offset;
2300 /* IDL: WERROR winreg_FlushKey( */
2301 /* IDL: [in] [ref] policy_handle *handle */
2302 /* IDL: ); */
2304 static int
2305 winreg_dissect_FlushKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2307 uint32_t status;
2309 di->dcerpc_procedure_name="FlushKey";
2310 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2312 if (status != 0)
2313 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2315 return offset;
2318 static int
2319 winreg_dissect_FlushKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2321 di->dcerpc_procedure_name="FlushKey";
2322 offset = winreg_dissect_element_FlushKey_handle(tvb, offset, pinfo, tree, di, drep);
2323 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2324 return offset;
2327 static int
2328 winreg_dissect_element_GetKeySecurity_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2330 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_GetKeySecurity_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2332 return offset;
2335 static int
2336 winreg_dissect_element_GetKeySecurity_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2338 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2340 return offset;
2343 static int
2344 winreg_dissect_element_GetKeySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2346 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_GetKeySecurity_sec_info, NULL);
2348 return offset;
2351 static int
2352 winreg_dissect_element_GetKeySecurity_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2354 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_GetKeySecurity_sd_, NDR_POINTER_REF, "Pointer to Sd (KeySecurityData)",hf_winreg_sd);
2356 return offset;
2359 static int
2360 winreg_dissect_element_GetKeySecurity_sd_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2362 offset = winreg_dissect_struct_KeySecurityData(tvb,offset,pinfo,tree,di,drep,hf_winreg_sd,0);
2364 return offset;
2367 /* IDL: WERROR winreg_GetKeySecurity( */
2368 /* IDL: [in] [ref] policy_handle *handle, */
2369 /* IDL: [in] security_secinfo sec_info, */
2370 /* IDL: [in] [out] [ref] KeySecurityData *sd */
2371 /* IDL: ); */
2373 static int
2374 winreg_dissect_GetKeySecurity_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2376 uint32_t status;
2378 di->dcerpc_procedure_name="GetKeySecurity";
2379 offset = winreg_dissect_element_GetKeySecurity_sd(tvb, offset, pinfo, tree, di, drep);
2380 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2382 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2384 if (status != 0)
2385 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2387 return offset;
2390 static int
2391 winreg_dissect_GetKeySecurity_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2393 di->dcerpc_procedure_name="GetKeySecurity";
2394 offset = winreg_dissect_element_GetKeySecurity_handle(tvb, offset, pinfo, tree, di, drep);
2395 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2396 offset = winreg_dissect_element_GetKeySecurity_sec_info(tvb, offset, pinfo, tree, di, drep);
2397 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2398 offset = winreg_dissect_element_GetKeySecurity_sd(tvb, offset, pinfo, tree, di, drep);
2399 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2400 return offset;
2403 static int
2404 winreg_dissect_element_LoadKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2406 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_LoadKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2408 return offset;
2411 static int
2412 winreg_dissect_element_LoadKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2414 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2416 return offset;
2419 static int
2420 winreg_dissect_element_LoadKey_keyname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2422 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_LoadKey_keyname_, NDR_POINTER_UNIQUE, "Pointer to Keyname (winreg_String)",hf_winreg_winreg_LoadKey_keyname);
2424 return offset;
2427 static int
2428 winreg_dissect_element_LoadKey_keyname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2430 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_LoadKey_keyname);
2432 return offset;
2435 static int
2436 winreg_dissect_element_LoadKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2438 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_LoadKey_filename_, NDR_POINTER_UNIQUE, "Pointer to Filename (winreg_String)",hf_winreg_winreg_LoadKey_filename);
2440 return offset;
2443 static int
2444 winreg_dissect_element_LoadKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2446 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_LoadKey_filename);
2448 return offset;
2451 /* IDL: WERROR winreg_LoadKey( */
2452 /* IDL: [in] [ref] policy_handle *handle, */
2453 /* IDL: [in] [unique(1)] winreg_String *keyname, */
2454 /* IDL: [in] [unique(1)] winreg_String *filename */
2455 /* IDL: ); */
2457 static int
2458 winreg_dissect_LoadKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2460 uint32_t status;
2462 di->dcerpc_procedure_name="LoadKey";
2463 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2465 if (status != 0)
2466 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2468 return offset;
2471 static int
2472 winreg_dissect_LoadKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2474 di->dcerpc_procedure_name="LoadKey";
2475 offset = winreg_dissect_element_LoadKey_handle(tvb, offset, pinfo, tree, di, drep);
2476 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2477 offset = winreg_dissect_element_LoadKey_keyname(tvb, offset, pinfo, tree, di, drep);
2478 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2479 offset = winreg_dissect_element_LoadKey_filename(tvb, offset, pinfo, tree, di, drep);
2480 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2481 return offset;
2484 static int
2485 winreg_dissect_element_NotifyChangeKeyValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2487 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_NotifyChangeKeyValue_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2489 return offset;
2492 static int
2493 winreg_dissect_element_NotifyChangeKeyValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2495 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2497 return offset;
2500 static int
2501 winreg_dissect_element_NotifyChangeKeyValue_watch_subtree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2503 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_NotifyChangeKeyValue_watch_subtree, 0);
2505 return offset;
2508 static int
2509 winreg_dissect_element_NotifyChangeKeyValue_notify_filter(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2511 offset = winreg_dissect_bitmap_NotifyChangeType(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_NotifyChangeKeyValue_notify_filter, 0);
2513 return offset;
2516 static int
2517 winreg_dissect_element_NotifyChangeKeyValue_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2519 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_NotifyChangeKeyValue_unknown, 0);
2521 return offset;
2524 static int
2525 winreg_dissect_element_NotifyChangeKeyValue_string1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2527 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_NotifyChangeKeyValue_string1);
2529 return offset;
2532 static int
2533 winreg_dissect_element_NotifyChangeKeyValue_string2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2535 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_NotifyChangeKeyValue_string2);
2537 return offset;
2540 static int
2541 winreg_dissect_element_NotifyChangeKeyValue_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2543 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_NotifyChangeKeyValue_unknown2, 0);
2545 return offset;
2548 /* IDL: WERROR winreg_NotifyChangeKeyValue( */
2549 /* IDL: [in] [ref] policy_handle *handle, */
2550 /* IDL: [in] uint8 watch_subtree, */
2551 /* IDL: [in] winreg_NotifyChangeType notify_filter, */
2552 /* IDL: [in] uint32 unknown, */
2553 /* IDL: [in] winreg_String string1, */
2554 /* IDL: [in] winreg_String string2, */
2555 /* IDL: [in] uint32 unknown2 */
2556 /* IDL: ); */
2558 static int
2559 winreg_dissect_NotifyChangeKeyValue_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2561 uint32_t status;
2563 di->dcerpc_procedure_name="NotifyChangeKeyValue";
2564 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2566 if (status != 0)
2567 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2569 return offset;
2572 static int
2573 winreg_dissect_NotifyChangeKeyValue_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2575 di->dcerpc_procedure_name="NotifyChangeKeyValue";
2576 offset = winreg_dissect_element_NotifyChangeKeyValue_handle(tvb, offset, pinfo, tree, di, drep);
2577 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2578 offset = winreg_dissect_element_NotifyChangeKeyValue_watch_subtree(tvb, offset, pinfo, tree, di, drep);
2579 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2580 offset = winreg_dissect_element_NotifyChangeKeyValue_notify_filter(tvb, offset, pinfo, tree, di, drep);
2581 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2582 offset = winreg_dissect_element_NotifyChangeKeyValue_unknown(tvb, offset, pinfo, tree, di, drep);
2583 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2584 offset = winreg_dissect_element_NotifyChangeKeyValue_string1(tvb, offset, pinfo, tree, di, drep);
2585 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2586 offset = winreg_dissect_element_NotifyChangeKeyValue_string2(tvb, offset, pinfo, tree, di, drep);
2587 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2588 offset = winreg_dissect_element_NotifyChangeKeyValue_unknown2(tvb, offset, pinfo, tree, di, drep);
2589 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2590 return offset;
2593 static int
2594 winreg_dissect_element_OpenKey_parent_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2596 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenKey_parent_handle_, NDR_POINTER_REF, "Pointer to Parent Handle (policy_handle)",hf_winreg_winreg_OpenKey_parent_handle);
2598 return offset;
2601 static int
2602 winreg_dissect_element_OpenKey_parent_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2604 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_OpenKey_parent_handle, 0);
2606 return offset;
2609 static int
2610 winreg_dissect_element_OpenKey_keyname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2612 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 2|PIDL_SET_COL_INFO|PIDL_STR_SAVE, hf_winreg_winreg_OpenKey_keyname);
2614 return offset;
2617 static int
2618 winreg_dissect_element_OpenKey_options(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2620 offset = winreg_dissect_bitmap_KeyOptions(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_OpenKey_options, 0);
2622 return offset;
2625 static int
2626 winreg_dissect_element_OpenKey_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2628 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_OpenKey_access_mask, 0);
2630 return offset;
2633 static int
2634 winreg_dissect_element_OpenKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2636 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2638 return offset;
2641 static int
2642 winreg_dissect_element_OpenKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2644 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
2646 return offset;
2649 /* IDL: WERROR winreg_OpenKey( */
2650 /* IDL: [in] [ref] policy_handle *parent_handle, */
2651 /* IDL: [in] winreg_String keyname, */
2652 /* IDL: [in] winreg_KeyOptions options, */
2653 /* IDL: [in] winreg_AccessMask access_mask, */
2654 /* IDL: [out] [ref] policy_handle *handle */
2655 /* IDL: ); */
2657 static int
2658 winreg_dissect_OpenKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2660 uint32_t status;
2662 di->dcerpc_procedure_name="OpenKey";
2663 offset = winreg_dissect_element_OpenKey_handle(tvb, offset, pinfo, tree, di, drep);
2664 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2666 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2668 if (status != 0)
2669 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2671 return offset;
2674 static int
2675 winreg_dissect_OpenKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2677 di->dcerpc_procedure_name="OpenKey";
2678 offset = winreg_dissect_element_OpenKey_parent_handle(tvb, offset, pinfo, tree, di, drep);
2679 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2680 offset = winreg_dissect_element_OpenKey_keyname(tvb, offset, pinfo, tree, di, drep);
2681 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2682 offset = winreg_dissect_element_OpenKey_options(tvb, offset, pinfo, tree, di, drep);
2683 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2684 offset = winreg_dissect_element_OpenKey_access_mask(tvb, offset, pinfo, tree, di, drep);
2685 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2686 return offset;
2689 static int
2690 winreg_dissect_element_QueryInfoKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2692 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2694 return offset;
2697 static int
2698 winreg_dissect_element_QueryInfoKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2700 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2702 return offset;
2705 static int
2706 winreg_dissect_element_QueryInfoKey_classname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2708 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_classname_, NDR_POINTER_REF, "Pointer to Classname (winreg_String)",hf_winreg_winreg_QueryInfoKey_classname);
2710 return offset;
2713 static int
2714 winreg_dissect_element_QueryInfoKey_classname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2716 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_QueryInfoKey_classname);
2718 return offset;
2721 static int
2722 winreg_dissect_element_QueryInfoKey_num_subkeys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2724 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_num_subkeys_, NDR_POINTER_REF, "Pointer to Num Subkeys (uint32)",hf_winreg_winreg_QueryInfoKey_num_subkeys);
2726 return offset;
2729 static int
2730 winreg_dissect_element_QueryInfoKey_num_subkeys_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2732 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_num_subkeys, 0);
2734 return offset;
2737 static int
2738 winreg_dissect_element_QueryInfoKey_max_subkeylen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2740 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_max_subkeylen_, NDR_POINTER_REF, "Pointer to Max Subkeylen (uint32)",hf_winreg_winreg_QueryInfoKey_max_subkeylen);
2742 return offset;
2745 static int
2746 winreg_dissect_element_QueryInfoKey_max_subkeylen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2748 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_max_subkeylen, 0);
2750 return offset;
2753 static int
2754 winreg_dissect_element_QueryInfoKey_max_classlen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2756 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_max_classlen_, NDR_POINTER_REF, "Pointer to Max Classlen (uint32)",hf_winreg_winreg_QueryInfoKey_max_classlen);
2758 return offset;
2761 static int
2762 winreg_dissect_element_QueryInfoKey_max_classlen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2764 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_max_classlen, 0);
2766 return offset;
2769 static int
2770 winreg_dissect_element_QueryInfoKey_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2772 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_num_values_, NDR_POINTER_REF, "Pointer to Num Values (uint32)",hf_winreg_winreg_QueryInfoKey_num_values);
2774 return offset;
2777 static int
2778 winreg_dissect_element_QueryInfoKey_num_values_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2780 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_num_values, 0);
2782 return offset;
2785 static int
2786 winreg_dissect_element_QueryInfoKey_max_valnamelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2788 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_max_valnamelen_, NDR_POINTER_REF, "Pointer to Max Valnamelen (uint32)",hf_winreg_winreg_QueryInfoKey_max_valnamelen);
2790 return offset;
2793 static int
2794 winreg_dissect_element_QueryInfoKey_max_valnamelen_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2796 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_max_valnamelen, 0);
2798 return offset;
2801 static int
2802 winreg_dissect_element_QueryInfoKey_max_valbufsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2804 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_max_valbufsize_, NDR_POINTER_REF, "Pointer to Max Valbufsize (uint32)",hf_winreg_winreg_QueryInfoKey_max_valbufsize);
2806 return offset;
2809 static int
2810 winreg_dissect_element_QueryInfoKey_max_valbufsize_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2812 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_max_valbufsize, 0);
2814 return offset;
2817 static int
2818 winreg_dissect_element_QueryInfoKey_secdescsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2820 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_secdescsize_, NDR_POINTER_REF, "Pointer to Secdescsize (uint32)",hf_winreg_winreg_QueryInfoKey_secdescsize);
2822 return offset;
2825 static int
2826 winreg_dissect_element_QueryInfoKey_secdescsize_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2828 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_secdescsize, 0);
2830 return offset;
2833 static int
2834 winreg_dissect_element_QueryInfoKey_last_changed_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2836 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryInfoKey_last_changed_time_, NDR_POINTER_REF, "Pointer to Last Changed Time (NTTIME)",hf_winreg_winreg_QueryInfoKey_last_changed_time);
2838 return offset;
2841 static int
2842 winreg_dissect_element_QueryInfoKey_last_changed_time_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2844 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryInfoKey_last_changed_time);
2846 return offset;
2849 /* IDL: WERROR winreg_QueryInfoKey( */
2850 /* IDL: [in] [ref] policy_handle *handle, */
2851 /* IDL: [in] [out] [ref] winreg_String *classname, */
2852 /* IDL: [out] [ref] uint32 *num_subkeys, */
2853 /* IDL: [out] [ref] uint32 *max_subkeylen, */
2854 /* IDL: [out] [ref] uint32 *max_classlen, */
2855 /* IDL: [out] [ref] uint32 *num_values, */
2856 /* IDL: [out] [ref] uint32 *max_valnamelen, */
2857 /* IDL: [out] [ref] uint32 *max_valbufsize, */
2858 /* IDL: [out] [ref] uint32 *secdescsize, */
2859 /* IDL: [out] [ref] NTTIME *last_changed_time */
2860 /* IDL: ); */
2862 static int
2863 winreg_dissect_QueryInfoKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2865 uint32_t status;
2867 di->dcerpc_procedure_name="QueryInfoKey";
2868 offset = winreg_dissect_element_QueryInfoKey_classname(tvb, offset, pinfo, tree, di, drep);
2869 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2871 offset = winreg_dissect_element_QueryInfoKey_num_subkeys(tvb, offset, pinfo, tree, di, drep);
2872 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2874 offset = winreg_dissect_element_QueryInfoKey_max_subkeylen(tvb, offset, pinfo, tree, di, drep);
2875 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2877 offset = winreg_dissect_element_QueryInfoKey_max_classlen(tvb, offset, pinfo, tree, di, drep);
2878 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2880 offset = winreg_dissect_element_QueryInfoKey_num_values(tvb, offset, pinfo, tree, di, drep);
2881 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2883 offset = winreg_dissect_element_QueryInfoKey_max_valnamelen(tvb, offset, pinfo, tree, di, drep);
2884 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2886 offset = winreg_dissect_element_QueryInfoKey_max_valbufsize(tvb, offset, pinfo, tree, di, drep);
2887 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2889 offset = winreg_dissect_element_QueryInfoKey_secdescsize(tvb, offset, pinfo, tree, di, drep);
2890 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2892 offset = winreg_dissect_element_QueryInfoKey_last_changed_time(tvb, offset, pinfo, tree, di, drep);
2893 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2895 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
2897 if (status != 0)
2898 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2900 return offset;
2903 static int
2904 winreg_dissect_QueryInfoKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2906 di->dcerpc_procedure_name="QueryInfoKey";
2907 offset = winreg_dissect_element_QueryInfoKey_handle(tvb, offset, pinfo, tree, di, drep);
2908 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2909 offset = winreg_dissect_element_QueryInfoKey_classname(tvb, offset, pinfo, tree, di, drep);
2910 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2911 return offset;
2914 static int
2915 winreg_dissect_element_QueryValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2917 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
2919 return offset;
2922 static int
2923 winreg_dissect_element_QueryValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2925 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
2927 return offset;
2930 static int
2931 winreg_dissect_element_QueryValue_value_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2933 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_value_name_, NDR_POINTER_REF, "Pointer to Value Name (winreg_String)",hf_winreg_winreg_QueryValue_value_name);
2935 return offset;
2938 static int
2939 winreg_dissect_element_QueryValue_value_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2941 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_QueryValue_value_name);
2943 return offset;
2946 static int
2947 winreg_dissect_element_QueryValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2949 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_type_, NDR_POINTER_UNIQUE, "Pointer to Type (winreg_Type)",hf_winreg_winreg_QueryValue_type);
2951 return offset;
2954 static int
2955 winreg_dissect_element_QueryValue_type_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2957 offset=misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryValue_type, 0);
2959 return offset;
2962 static int
2963 winreg_dissect_element_QueryValue_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2965 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_data_, NDR_POINTER_UNIQUE, "Pointer to Data (uint8)",hf_winreg_winreg_QueryValue_data);
2967 return offset;
2970 static int
2971 winreg_dissect_element_QueryValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2973 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_data__);
2975 return offset;
2978 static int
2979 winreg_dissect_element_QueryValue_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2981 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryValue_data, 0);
2983 return offset;
2986 static int
2987 winreg_dissect_element_QueryValue_data_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2989 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_data_size_, NDR_POINTER_UNIQUE, "Pointer to Data Size (uint32)",hf_winreg_winreg_QueryValue_data_size);
2991 return offset;
2994 static int
2995 winreg_dissect_element_QueryValue_data_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2997 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryValue_data_size, 0);
2999 return offset;
3002 static int
3003 winreg_dissect_element_QueryValue_data_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3005 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryValue_data_length_, NDR_POINTER_UNIQUE, "Pointer to Data Length (uint32)",hf_winreg_winreg_QueryValue_data_length);
3007 return offset;
3010 static int
3011 winreg_dissect_element_QueryValue_data_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3013 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryValue_data_length, 0);
3015 return offset;
3018 /* IDL: WERROR winreg_QueryValue( */
3019 /* IDL: [in] [ref] policy_handle *handle, */
3020 /* IDL: [in] [ref] winreg_String *value_name, */
3021 /* IDL: [in] [out] [unique(1)] winreg_Type *type, */
3022 /* IDL: [in] [length_is(data_length?*data_length:0)] [out] [range(0,0x4000000)] [size_is(data_size?*data_size:0)] [unique(1)] uint8 *data, */
3023 /* IDL: [in] [out] [unique(1)] uint32 *data_size, */
3024 /* IDL: [in] [out] [unique(1)] uint32 *data_length */
3025 /* IDL: ); */
3027 static int
3028 winreg_dissect_QueryValue_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3030 uint32_t status;
3032 di->dcerpc_procedure_name="QueryValue";
3033 offset = winreg_dissect_element_QueryValue_type(tvb, offset, pinfo, tree, di, drep);
3034 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3036 offset = winreg_dissect_element_QueryValue_data(tvb, offset, pinfo, tree, di, drep);
3037 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3039 offset = winreg_dissect_element_QueryValue_data_size(tvb, offset, pinfo, tree, di, drep);
3040 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3042 offset = winreg_dissect_element_QueryValue_data_length(tvb, offset, pinfo, tree, di, drep);
3043 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3045 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3047 if (status != 0)
3048 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3050 return offset;
3053 static int
3054 winreg_dissect_QueryValue_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3056 di->dcerpc_procedure_name="QueryValue";
3057 offset = winreg_dissect_element_QueryValue_handle(tvb, offset, pinfo, tree, di, drep);
3058 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3059 offset = winreg_dissect_element_QueryValue_value_name(tvb, offset, pinfo, tree, di, drep);
3060 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3061 offset = winreg_dissect_element_QueryValue_type(tvb, offset, pinfo, tree, di, drep);
3062 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3063 offset = winreg_dissect_element_QueryValue_data(tvb, offset, pinfo, tree, di, drep);
3064 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3065 offset = winreg_dissect_element_QueryValue_data_size(tvb, offset, pinfo, tree, di, drep);
3066 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3067 offset = winreg_dissect_element_QueryValue_data_length(tvb, offset, pinfo, tree, di, drep);
3068 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3069 return offset;
3072 static int
3073 winreg_dissect_element_ReplaceKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3075 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ReplaceKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_ReplaceKey_handle);
3077 return offset;
3080 static int
3081 winreg_dissect_element_ReplaceKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3083 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_ReplaceKey_handle, 0);
3085 return offset;
3088 static int
3089 winreg_dissect_element_ReplaceKey_subkey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3091 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ReplaceKey_subkey_, NDR_POINTER_REF, "Pointer to Subkey (winreg_String)",hf_winreg_winreg_ReplaceKey_subkey);
3093 return offset;
3096 static int
3097 winreg_dissect_element_ReplaceKey_subkey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3099 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_ReplaceKey_subkey);
3101 return offset;
3104 static int
3105 winreg_dissect_element_ReplaceKey_new_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3107 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ReplaceKey_new_file_, NDR_POINTER_REF, "Pointer to New File (winreg_String)",hf_winreg_winreg_ReplaceKey_new_file);
3109 return offset;
3112 static int
3113 winreg_dissect_element_ReplaceKey_new_file_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3115 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_ReplaceKey_new_file);
3117 return offset;
3120 static int
3121 winreg_dissect_element_ReplaceKey_old_file(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3123 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_ReplaceKey_old_file_, NDR_POINTER_REF, "Pointer to Old File (winreg_String)",hf_winreg_winreg_ReplaceKey_old_file);
3125 return offset;
3128 static int
3129 winreg_dissect_element_ReplaceKey_old_file_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3131 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_ReplaceKey_old_file);
3133 return offset;
3136 /* IDL: WERROR winreg_ReplaceKey( */
3137 /* IDL: [in] [ref] policy_handle *handle, */
3138 /* IDL: [in] [ref] winreg_String *subkey, */
3139 /* IDL: [in] [ref] winreg_String *new_file, */
3140 /* IDL: [in] [ref] winreg_String *old_file */
3141 /* IDL: ); */
3143 static int
3144 winreg_dissect_ReplaceKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3146 uint32_t status;
3148 di->dcerpc_procedure_name="ReplaceKey";
3149 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3151 if (status != 0)
3152 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3154 return offset;
3157 static int
3158 winreg_dissect_ReplaceKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3160 di->dcerpc_procedure_name="ReplaceKey";
3161 offset = winreg_dissect_element_ReplaceKey_handle(tvb, offset, pinfo, tree, di, drep);
3162 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3163 offset = winreg_dissect_element_ReplaceKey_subkey(tvb, offset, pinfo, tree, di, drep);
3164 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3165 offset = winreg_dissect_element_ReplaceKey_new_file(tvb, offset, pinfo, tree, di, drep);
3166 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3167 offset = winreg_dissect_element_ReplaceKey_old_file(tvb, offset, pinfo, tree, di, drep);
3168 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3169 return offset;
3172 static int
3173 winreg_dissect_element_RestoreKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3175 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_RestoreKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_RestoreKey_handle);
3177 return offset;
3180 static int
3181 winreg_dissect_element_RestoreKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3183 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_RestoreKey_handle, 0);
3185 return offset;
3188 static int
3189 winreg_dissect_element_RestoreKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3191 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_RestoreKey_filename_, NDR_POINTER_REF, "Pointer to Filename (winreg_String)",hf_winreg_winreg_RestoreKey_filename);
3193 return offset;
3196 static int
3197 winreg_dissect_element_RestoreKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3199 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_RestoreKey_filename);
3201 return offset;
3204 static int
3205 winreg_dissect_element_RestoreKey_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3207 offset = winreg_dissect_bitmap_RestoreKeyFlags(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_RestoreKey_flags, 0);
3209 return offset;
3212 /* IDL: WERROR winreg_RestoreKey( */
3213 /* IDL: [in] [ref] policy_handle *handle, */
3214 /* IDL: [in] [ref] winreg_String *filename, */
3215 /* IDL: [in] winreg_RestoreKeyFlags flags */
3216 /* IDL: ); */
3218 static int
3219 winreg_dissect_RestoreKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3221 uint32_t status;
3223 di->dcerpc_procedure_name="RestoreKey";
3224 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3226 if (status != 0)
3227 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3229 return offset;
3232 static int
3233 winreg_dissect_RestoreKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3235 di->dcerpc_procedure_name="RestoreKey";
3236 offset = winreg_dissect_element_RestoreKey_handle(tvb, offset, pinfo, tree, di, drep);
3237 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3238 offset = winreg_dissect_element_RestoreKey_filename(tvb, offset, pinfo, tree, di, drep);
3239 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3240 offset = winreg_dissect_element_RestoreKey_flags(tvb, offset, pinfo, tree, di, drep);
3241 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3242 return offset;
3245 static int
3246 winreg_dissect_element_SaveKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3248 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_SaveKey_handle);
3250 return offset;
3253 static int
3254 winreg_dissect_element_SaveKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3256 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SaveKey_handle, 0);
3258 return offset;
3261 static int
3262 winreg_dissect_element_SaveKey_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3264 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKey_filename_, NDR_POINTER_REF, "Pointer to Filename (winreg_String)",hf_winreg_winreg_SaveKey_filename);
3266 return offset;
3269 static int
3270 winreg_dissect_element_SaveKey_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3272 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_SaveKey_filename);
3274 return offset;
3277 static int
3278 winreg_dissect_element_SaveKey_sec_attrib(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3280 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKey_sec_attrib_, NDR_POINTER_UNIQUE, "Pointer to Sec Attrib (KeySecurityAttribute)",hf_winreg_winreg_SaveKey_sec_attrib);
3282 return offset;
3285 static int
3286 winreg_dissect_element_SaveKey_sec_attrib_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3288 offset = winreg_dissect_struct_KeySecurityAttribute(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_SaveKey_sec_attrib,0);
3290 return offset;
3293 /* IDL: WERROR winreg_SaveKey( */
3294 /* IDL: [in] [ref] policy_handle *handle, */
3295 /* IDL: [in] [ref] winreg_String *filename, */
3296 /* IDL: [in] [unique(1)] KeySecurityAttribute *sec_attrib */
3297 /* IDL: ); */
3299 static int
3300 winreg_dissect_SaveKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3302 uint32_t status;
3304 di->dcerpc_procedure_name="SaveKey";
3305 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3307 if (status != 0)
3308 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3310 return offset;
3313 static int
3314 winreg_dissect_SaveKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3316 di->dcerpc_procedure_name="SaveKey";
3317 offset = winreg_dissect_element_SaveKey_handle(tvb, offset, pinfo, tree, di, drep);
3318 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3319 offset = winreg_dissect_element_SaveKey_filename(tvb, offset, pinfo, tree, di, drep);
3320 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3321 offset = winreg_dissect_element_SaveKey_sec_attrib(tvb, offset, pinfo, tree, di, drep);
3322 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3323 return offset;
3326 static int
3327 winreg_dissect_element_SetKeySecurity_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3329 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetKeySecurity_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
3331 return offset;
3334 static int
3335 winreg_dissect_element_SetKeySecurity_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3337 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
3339 return offset;
3342 static int
3343 winreg_dissect_element_SetKeySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3345 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_GetKeySecurity_sec_info, NULL);
3347 return offset;
3350 static int
3351 winreg_dissect_element_SetKeySecurity_sd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3353 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetKeySecurity_sd_, NDR_POINTER_REF, "Pointer to Sd (KeySecurityData)",hf_winreg_sd);
3355 return offset;
3358 static int
3359 winreg_dissect_element_SetKeySecurity_sd_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3361 offset = winreg_dissect_struct_KeySecurityData(tvb,offset,pinfo,tree,di,drep,hf_winreg_sd,0);
3363 return offset;
3366 /* IDL: WERROR winreg_SetKeySecurity( */
3367 /* IDL: [in] [ref] policy_handle *handle, */
3368 /* IDL: [in] security_secinfo sec_info, */
3369 /* IDL: [in] [ref] KeySecurityData *sd */
3370 /* IDL: ); */
3372 static int
3373 winreg_dissect_SetKeySecurity_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3375 uint32_t status;
3377 di->dcerpc_procedure_name="SetKeySecurity";
3378 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3380 if (status != 0)
3381 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3383 return offset;
3386 static int
3387 winreg_dissect_SetKeySecurity_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3389 di->dcerpc_procedure_name="SetKeySecurity";
3390 offset = winreg_dissect_element_SetKeySecurity_handle(tvb, offset, pinfo, tree, di, drep);
3391 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3392 offset = winreg_dissect_element_SetKeySecurity_sec_info(tvb, offset, pinfo, tree, di, drep);
3393 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3394 offset = winreg_dissect_element_SetKeySecurity_sd(tvb, offset, pinfo, tree, di, drep);
3395 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3396 return offset;
3399 static int
3400 winreg_dissect_element_SetValue_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3402 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetValue_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
3404 return offset;
3407 static int
3408 winreg_dissect_element_SetValue_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3410 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
3412 return offset;
3415 static int
3416 winreg_dissect_element_SetValue_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3418 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 2|PIDL_SET_COL_INFO, hf_winreg_winreg_SetValue_name);
3420 return offset;
3423 static int
3424 winreg_dissect_element_SetValue_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3426 offset=misc_dissect_enum_winreg_Type(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SetValue_type, 0);
3428 return offset;
3431 static int
3432 winreg_dissect_element_SetValue_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3434 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetValue_data_, NDR_POINTER_REF, "Pointer to Data (uint8)",hf_winreg_winreg_SetValue_data);
3436 return offset;
3439 static int
3440 winreg_dissect_element_SetValue_data_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3442 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SetValue_data__);
3444 return offset;
3447 static int
3448 winreg_dissect_element_SetValue_data__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3450 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SetValue_data, 0);
3452 return offset;
3455 static int
3456 winreg_dissect_element_SetValue_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3458 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SetValue_size, 0);
3460 return offset;
3463 /* IDL: WERROR winreg_SetValue( */
3464 /* IDL: [in] [ref] policy_handle *handle, */
3465 /* IDL: [in] winreg_String name, */
3466 /* IDL: [in] winreg_Type type, */
3467 /* IDL: [in] [ref] [size_is(size)] uint8 *data, */
3468 /* IDL: [in] uint32 size */
3469 /* IDL: ); */
3471 static int
3472 winreg_dissect_SetValue_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3474 uint32_t status;
3476 di->dcerpc_procedure_name="SetValue";
3477 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3479 if (status != 0)
3480 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3482 return offset;
3485 static int
3486 winreg_dissect_SetValue_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3488 di->dcerpc_procedure_name="SetValue";
3489 offset = winreg_dissect_element_SetValue_handle(tvb, offset, pinfo, tree, di, drep);
3490 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3491 offset = winreg_dissect_element_SetValue_name(tvb, offset, pinfo, tree, di, drep);
3492 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3493 offset = winreg_dissect_element_SetValue_type(tvb, offset, pinfo, tree, di, drep);
3494 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3495 offset = winreg_dissect_element_SetValue_data(tvb, offset, pinfo, tree, di, drep);
3496 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3497 offset = winreg_dissect_element_SetValue_size(tvb, offset, pinfo, tree, di, drep);
3498 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3499 return offset;
3502 static int
3503 winreg_dissect_element_UnLoadKey_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3505 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_UnLoadKey_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_UnLoadKey_handle);
3507 return offset;
3510 static int
3511 winreg_dissect_element_UnLoadKey_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3513 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_UnLoadKey_handle, 0);
3515 return offset;
3518 static int
3519 winreg_dissect_element_UnLoadKey_subkey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3521 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_UnLoadKey_subkey_, NDR_POINTER_REF, "Pointer to Subkey (winreg_String)",hf_winreg_winreg_UnLoadKey_subkey);
3523 return offset;
3526 static int
3527 winreg_dissect_element_UnLoadKey_subkey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3529 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_UnLoadKey_subkey);
3531 return offset;
3534 /* IDL: WERROR winreg_UnLoadKey( */
3535 /* IDL: [in] [ref] policy_handle *handle, */
3536 /* IDL: [in] [ref] winreg_String *subkey */
3537 /* IDL: ); */
3539 static int
3540 winreg_dissect_UnLoadKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3542 uint32_t status;
3544 di->dcerpc_procedure_name="UnLoadKey";
3545 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3547 if (status != 0)
3548 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3550 return offset;
3553 static int
3554 winreg_dissect_UnLoadKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3556 di->dcerpc_procedure_name="UnLoadKey";
3557 offset = winreg_dissect_element_UnLoadKey_handle(tvb, offset, pinfo, tree, di, drep);
3558 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3559 offset = winreg_dissect_element_UnLoadKey_subkey(tvb, offset, pinfo, tree, di, drep);
3560 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3561 return offset;
3564 static int
3565 winreg_dissect_element_InitiateSystemShutdown_hostname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3567 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_InitiateSystemShutdown_hostname_, NDR_POINTER_UNIQUE, "Pointer to Hostname (uint16)",hf_winreg_winreg_InitiateSystemShutdown_hostname);
3569 return offset;
3572 static int
3573 winreg_dissect_element_InitiateSystemShutdown_hostname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3575 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdown_hostname, 0);
3577 return offset;
3580 static int
3581 winreg_dissect_element_InitiateSystemShutdown_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3583 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_InitiateSystemShutdown_message_, NDR_POINTER_UNIQUE, "Pointer to Message (lsa_StringLarge)",hf_winreg_winreg_InitiateSystemShutdown_message);
3585 return offset;
3588 static int
3589 winreg_dissect_element_InitiateSystemShutdown_message_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3591 offset=lsarpc_dissect_struct_lsa_StringLarge(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdown_message, 0);
3593 return offset;
3596 static int
3597 winreg_dissect_element_InitiateSystemShutdown_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3599 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdown_timeout, 0);
3601 return offset;
3604 static int
3605 winreg_dissect_element_InitiateSystemShutdown_force_apps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3607 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdown_force_apps, 0);
3609 return offset;
3612 static int
3613 winreg_dissect_element_InitiateSystemShutdown_do_reboot(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3615 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdown_do_reboot, 0);
3617 return offset;
3620 /* IDL: WERROR winreg_InitiateSystemShutdown( */
3621 /* IDL: [in] [unique(1)] uint16 *hostname, */
3622 /* IDL: [in] [unique(1)] lsa_StringLarge *message, */
3623 /* IDL: [in] uint32 timeout, */
3624 /* IDL: [in] uint8 force_apps, */
3625 /* IDL: [in] uint8 do_reboot */
3626 /* IDL: ); */
3628 static int
3629 winreg_dissect_InitiateSystemShutdown_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3631 uint32_t status;
3633 di->dcerpc_procedure_name="InitiateSystemShutdown";
3634 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3636 if (status != 0)
3637 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3639 return offset;
3642 static int
3643 winreg_dissect_InitiateSystemShutdown_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3645 di->dcerpc_procedure_name="InitiateSystemShutdown";
3646 offset = winreg_dissect_element_InitiateSystemShutdown_hostname(tvb, offset, pinfo, tree, di, drep);
3647 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3648 offset = winreg_dissect_element_InitiateSystemShutdown_message(tvb, offset, pinfo, tree, di, drep);
3649 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3650 offset = winreg_dissect_element_InitiateSystemShutdown_timeout(tvb, offset, pinfo, tree, di, drep);
3651 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3652 offset = winreg_dissect_element_InitiateSystemShutdown_force_apps(tvb, offset, pinfo, tree, di, drep);
3653 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3654 offset = winreg_dissect_element_InitiateSystemShutdown_do_reboot(tvb, offset, pinfo, tree, di, drep);
3655 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3656 return offset;
3659 static int
3660 winreg_dissect_element_AbortSystemShutdown_server(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3662 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_AbortSystemShutdown_server_, NDR_POINTER_UNIQUE, "Pointer to Server (uint16)",hf_winreg_winreg_AbortSystemShutdown_server);
3664 return offset;
3667 static int
3668 winreg_dissect_element_AbortSystemShutdown_server_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3670 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_AbortSystemShutdown_server, 0);
3672 return offset;
3675 /* IDL: WERROR winreg_AbortSystemShutdown( */
3676 /* IDL: [in] [unique(1)] uint16 *server */
3677 /* IDL: ); */
3679 static int
3680 winreg_dissect_AbortSystemShutdown_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3682 uint32_t status;
3684 di->dcerpc_procedure_name="AbortSystemShutdown";
3685 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3687 if (status != 0)
3688 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3690 return offset;
3693 static int
3694 winreg_dissect_AbortSystemShutdown_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3696 di->dcerpc_procedure_name="AbortSystemShutdown";
3697 offset = winreg_dissect_element_AbortSystemShutdown_server(tvb, offset, pinfo, tree, di, drep);
3698 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3699 return offset;
3702 static int
3703 winreg_dissect_element_GetVersion_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3705 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_GetVersion_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
3707 return offset;
3710 static int
3711 winreg_dissect_element_GetVersion_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3713 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, 0);
3715 return offset;
3718 static int
3719 winreg_dissect_element_GetVersion_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3721 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_GetVersion_version_, NDR_POINTER_REF, "Pointer to Version (uint32)",hf_winreg_winreg_GetVersion_version);
3723 return offset;
3726 static int
3727 winreg_dissect_element_GetVersion_version_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3729 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_GetVersion_version, 0);
3731 return offset;
3734 /* IDL: WERROR winreg_GetVersion( */
3735 /* IDL: [in] [ref] policy_handle *handle, */
3736 /* IDL: [out] [ref] uint32 *version */
3737 /* IDL: ); */
3739 static int
3740 winreg_dissect_GetVersion_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3742 uint32_t status;
3744 di->dcerpc_procedure_name="GetVersion";
3745 offset = winreg_dissect_element_GetVersion_version(tvb, offset, pinfo, tree, di, drep);
3746 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3748 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3750 if (status != 0)
3751 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3753 return offset;
3756 static int
3757 winreg_dissect_GetVersion_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3759 di->dcerpc_procedure_name="GetVersion";
3760 offset = winreg_dissect_element_GetVersion_handle(tvb, offset, pinfo, tree, di, drep);
3761 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3762 return offset;
3765 static int
3766 winreg_dissect_element_OpenHKCC_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3768 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCC_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
3770 return offset;
3773 static int
3774 winreg_dissect_element_OpenHKCC_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3776 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
3778 return offset;
3781 static int
3782 winreg_dissect_element_OpenHKCC_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3784 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
3786 return offset;
3789 static int
3790 winreg_dissect_element_OpenHKCC_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3792 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKCC_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
3794 return offset;
3797 static int
3798 winreg_dissect_element_OpenHKCC_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3800 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
3802 return offset;
3805 /* IDL: WERROR winreg_OpenHKCC( */
3806 /* IDL: [in] [unique(1)] uint16 *system_name, */
3807 /* IDL: [in] winreg_AccessMask access_mask, */
3808 /* IDL: [out] [ref] policy_handle *handle */
3809 /* IDL: ); */
3811 static int
3812 winreg_dissect_OpenHKCC_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3814 uint32_t status;
3816 di->dcerpc_procedure_name="OpenHKCC";
3817 offset = winreg_dissect_element_OpenHKCC_handle(tvb, offset, pinfo, tree, di, drep);
3818 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3820 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3822 if (status != 0)
3823 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3825 return offset;
3828 static int
3829 winreg_dissect_OpenHKCC_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3831 di->dcerpc_procedure_name="OpenHKCC";
3832 offset = winreg_dissect_element_OpenHKCC_system_name(tvb, offset, pinfo, tree, di, drep);
3833 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3834 offset = winreg_dissect_element_OpenHKCC_access_mask(tvb, offset, pinfo, tree, di, drep);
3835 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3836 return offset;
3839 static int
3840 winreg_dissect_element_OpenHKDD_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3842 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKDD_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
3844 return offset;
3847 static int
3848 winreg_dissect_element_OpenHKDD_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3850 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
3852 return offset;
3855 static int
3856 winreg_dissect_element_OpenHKDD_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3858 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
3860 return offset;
3863 static int
3864 winreg_dissect_element_OpenHKDD_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3866 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKDD_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
3868 return offset;
3871 static int
3872 winreg_dissect_element_OpenHKDD_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3874 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
3876 return offset;
3879 /* IDL: WERROR winreg_OpenHKDD( */
3880 /* IDL: [in] [unique(1)] uint16 *system_name, */
3881 /* IDL: [in] winreg_AccessMask access_mask, */
3882 /* IDL: [out] [ref] policy_handle *handle */
3883 /* IDL: ); */
3885 static int
3886 winreg_dissect_OpenHKDD_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3888 uint32_t status;
3890 di->dcerpc_procedure_name="OpenHKDD";
3891 offset = winreg_dissect_element_OpenHKDD_handle(tvb, offset, pinfo, tree, di, drep);
3892 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3894 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
3896 if (status != 0)
3897 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3899 return offset;
3902 static int
3903 winreg_dissect_OpenHKDD_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3905 di->dcerpc_procedure_name="OpenHKDD";
3906 offset = winreg_dissect_element_OpenHKDD_system_name(tvb, offset, pinfo, tree, di, drep);
3907 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3908 offset = winreg_dissect_element_OpenHKDD_access_mask(tvb, offset, pinfo, tree, di, drep);
3909 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3910 return offset;
3913 static int
3914 winreg_dissect_element_QueryMultipleValues_key_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3916 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_key_handle_, NDR_POINTER_REF, "Pointer to Key Handle (policy_handle)",hf_winreg_winreg_QueryMultipleValues_key_handle);
3918 return offset;
3921 static int
3922 winreg_dissect_element_QueryMultipleValues_key_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3924 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues_key_handle, 0);
3926 return offset;
3929 static int
3930 winreg_dissect_element_QueryMultipleValues_values_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3932 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_in_, NDR_POINTER_REF, "Pointer to Values In (QueryMultipleValue)",hf_winreg_winreg_QueryMultipleValues_values_in);
3934 return offset;
3937 static int
3938 winreg_dissect_element_QueryMultipleValues_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3940 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_in__);
3942 return offset;
3945 static int
3946 winreg_dissect_element_QueryMultipleValues_values_in__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3948 offset = winreg_dissect_struct_QueryMultipleValue(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_QueryMultipleValues_values_in,0);
3950 return offset;
3953 static int
3954 winreg_dissect_element_QueryMultipleValues_values_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3956 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_out_, NDR_POINTER_REF, "Pointer to Values Out (QueryMultipleValue)",hf_winreg_winreg_QueryMultipleValues_values_out);
3958 return offset;
3961 static int
3962 winreg_dissect_element_QueryMultipleValues_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3964 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_values_out__);
3966 return offset;
3969 static int
3970 winreg_dissect_element_QueryMultipleValues_values_out__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3972 offset = winreg_dissect_struct_QueryMultipleValue(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_QueryMultipleValues_values_out,0);
3974 return offset;
3977 static int
3978 winreg_dissect_element_QueryMultipleValues_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3980 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues_num_values, 0);
3982 return offset;
3985 static int
3986 winreg_dissect_element_QueryMultipleValues_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3988 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_buffer_, NDR_POINTER_UNIQUE, "Pointer to Buffer (uint8)",hf_winreg_winreg_QueryMultipleValues_buffer);
3990 return offset;
3993 static int
3994 winreg_dissect_element_QueryMultipleValues_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3996 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_buffer__);
3998 return offset;
4001 static int
4002 winreg_dissect_element_QueryMultipleValues_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4004 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues_buffer, 0);
4006 return offset;
4009 static int
4010 winreg_dissect_element_QueryMultipleValues_buffer_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4012 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues_buffer_size_, NDR_POINTER_REF, "Pointer to Buffer Size (uint32)",hf_winreg_winreg_QueryMultipleValues_buffer_size);
4014 return offset;
4017 static int
4018 winreg_dissect_element_QueryMultipleValues_buffer_size_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4020 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues_buffer_size, 0);
4022 return offset;
4025 /* IDL: WERROR winreg_QueryMultipleValues( */
4026 /* IDL: [in] [ref] policy_handle *key_handle, */
4027 /* IDL: [in] [length_is(num_values)] [ref] [size_is(num_values)] QueryMultipleValue *values_in, */
4028 /* IDL: [length_is(num_values)] [out] [ref] [size_is(num_values)] QueryMultipleValue *values_out, */
4029 /* IDL: [in] uint32 num_values, */
4030 /* IDL: [in] [length_is(*buffer_size)] [out] [size_is(*buffer_size)] [unique(1)] uint8 *buffer, */
4031 /* IDL: [in] [out] [ref] uint32 *buffer_size */
4032 /* IDL: ); */
4034 static int
4035 winreg_dissect_QueryMultipleValues_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4037 uint32_t status;
4039 di->dcerpc_procedure_name="QueryMultipleValues";
4040 offset = winreg_dissect_element_QueryMultipleValues_values_out(tvb, offset, pinfo, tree, di, drep);
4041 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4043 offset = winreg_dissect_element_QueryMultipleValues_buffer(tvb, offset, pinfo, tree, di, drep);
4044 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4046 offset = winreg_dissect_element_QueryMultipleValues_buffer_size(tvb, offset, pinfo, tree, di, drep);
4047 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4049 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4051 if (status != 0)
4052 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4054 return offset;
4057 static int
4058 winreg_dissect_QueryMultipleValues_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4060 di->dcerpc_procedure_name="QueryMultipleValues";
4061 offset = winreg_dissect_element_QueryMultipleValues_key_handle(tvb, offset, pinfo, tree, di, drep);
4062 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4063 offset = winreg_dissect_element_QueryMultipleValues_values_in(tvb, offset, pinfo, tree, di, drep);
4064 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4065 offset = winreg_dissect_element_QueryMultipleValues_num_values(tvb, offset, pinfo, tree, di, drep);
4066 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4067 offset = winreg_dissect_element_QueryMultipleValues_buffer(tvb, offset, pinfo, tree, di, drep);
4068 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4069 offset = winreg_dissect_element_QueryMultipleValues_buffer_size(tvb, offset, pinfo, tree, di, drep);
4070 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4071 return offset;
4074 static int
4075 winreg_dissect_element_InitiateSystemShutdownEx_hostname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4077 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_InitiateSystemShutdownEx_hostname_, NDR_POINTER_UNIQUE, "Pointer to Hostname (uint16)",hf_winreg_winreg_InitiateSystemShutdownEx_hostname);
4079 return offset;
4082 static int
4083 winreg_dissect_element_InitiateSystemShutdownEx_hostname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4085 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_hostname, 0);
4087 return offset;
4090 static int
4091 winreg_dissect_element_InitiateSystemShutdownEx_message(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4093 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_InitiateSystemShutdownEx_message_, NDR_POINTER_UNIQUE, "Pointer to Message (lsa_StringLarge)",hf_winreg_winreg_InitiateSystemShutdownEx_message);
4095 return offset;
4098 static int
4099 winreg_dissect_element_InitiateSystemShutdownEx_message_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4101 offset=lsarpc_dissect_struct_lsa_StringLarge(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_message, 0);
4103 return offset;
4106 static int
4107 winreg_dissect_element_InitiateSystemShutdownEx_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4109 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_timeout, 0);
4111 return offset;
4114 static int
4115 winreg_dissect_element_InitiateSystemShutdownEx_force_apps(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4117 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_force_apps, 0);
4119 return offset;
4122 static int
4123 winreg_dissect_element_InitiateSystemShutdownEx_do_reboot(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4125 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_do_reboot, 0);
4127 return offset;
4130 static int
4131 winreg_dissect_element_InitiateSystemShutdownEx_reason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4133 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_InitiateSystemShutdownEx_reason, 0);
4135 return offset;
4138 /* IDL: WERROR winreg_InitiateSystemShutdownEx( */
4139 /* IDL: [in] [unique(1)] uint16 *hostname, */
4140 /* IDL: [in] [unique(1)] lsa_StringLarge *message, */
4141 /* IDL: [in] uint32 timeout, */
4142 /* IDL: [in] uint8 force_apps, */
4143 /* IDL: [in] uint8 do_reboot, */
4144 /* IDL: [in] uint32 reason */
4145 /* IDL: ); */
4147 static int
4148 winreg_dissect_InitiateSystemShutdownEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4150 uint32_t status;
4152 di->dcerpc_procedure_name="InitiateSystemShutdownEx";
4153 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4155 if (status != 0)
4156 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4158 return offset;
4161 static int
4162 winreg_dissect_InitiateSystemShutdownEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4164 di->dcerpc_procedure_name="InitiateSystemShutdownEx";
4165 offset = winreg_dissect_element_InitiateSystemShutdownEx_hostname(tvb, offset, pinfo, tree, di, drep);
4166 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4167 offset = winreg_dissect_element_InitiateSystemShutdownEx_message(tvb, offset, pinfo, tree, di, drep);
4168 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4169 offset = winreg_dissect_element_InitiateSystemShutdownEx_timeout(tvb, offset, pinfo, tree, di, drep);
4170 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4171 offset = winreg_dissect_element_InitiateSystemShutdownEx_force_apps(tvb, offset, pinfo, tree, di, drep);
4172 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4173 offset = winreg_dissect_element_InitiateSystemShutdownEx_do_reboot(tvb, offset, pinfo, tree, di, drep);
4174 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4175 offset = winreg_dissect_element_InitiateSystemShutdownEx_reason(tvb, offset, pinfo, tree, di, drep);
4176 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4177 return offset;
4180 static int
4181 winreg_dissect_element_SaveKeyEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4183 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKeyEx_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_SaveKeyEx_handle);
4185 return offset;
4188 static int
4189 winreg_dissect_element_SaveKeyEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4191 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SaveKeyEx_handle, 0);
4193 return offset;
4196 static int
4197 winreg_dissect_element_SaveKeyEx_filename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4199 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKeyEx_filename_, NDR_POINTER_REF, "Pointer to Filename (winreg_String)",hf_winreg_winreg_SaveKeyEx_filename);
4201 return offset;
4204 static int
4205 winreg_dissect_element_SaveKeyEx_filename_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4207 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_SaveKeyEx_filename);
4209 return offset;
4212 static int
4213 winreg_dissect_element_SaveKeyEx_sec_attrib(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4215 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_SaveKeyEx_sec_attrib_, NDR_POINTER_UNIQUE, "Pointer to Sec Attrib (KeySecurityAttribute)",hf_winreg_winreg_SaveKeyEx_sec_attrib);
4217 return offset;
4220 static int
4221 winreg_dissect_element_SaveKeyEx_sec_attrib_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4223 offset = winreg_dissect_struct_KeySecurityAttribute(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_SaveKeyEx_sec_attrib,0);
4225 return offset;
4228 static int
4229 winreg_dissect_element_SaveKeyEx_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4231 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_SaveKeyEx_flags, 0);
4233 return offset;
4236 /* IDL: WERROR winreg_SaveKeyEx( */
4237 /* IDL: [in] [ref] policy_handle *handle, */
4238 /* IDL: [in] [ref] winreg_String *filename, */
4239 /* IDL: [in] [unique(1)] KeySecurityAttribute *sec_attrib, */
4240 /* IDL: [in] uint32 flags */
4241 /* IDL: ); */
4243 static int
4244 winreg_dissect_SaveKeyEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4246 uint32_t status;
4248 di->dcerpc_procedure_name="SaveKeyEx";
4249 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4251 if (status != 0)
4252 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4254 return offset;
4257 static int
4258 winreg_dissect_SaveKeyEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4260 di->dcerpc_procedure_name="SaveKeyEx";
4261 offset = winreg_dissect_element_SaveKeyEx_handle(tvb, offset, pinfo, tree, di, drep);
4262 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4263 offset = winreg_dissect_element_SaveKeyEx_filename(tvb, offset, pinfo, tree, di, drep);
4264 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4265 offset = winreg_dissect_element_SaveKeyEx_sec_attrib(tvb, offset, pinfo, tree, di, drep);
4266 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4267 offset = winreg_dissect_element_SaveKeyEx_flags(tvb, offset, pinfo, tree, di, drep);
4268 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4269 return offset;
4272 static int
4273 winreg_dissect_element_OpenHKPT_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4275 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPT_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
4277 return offset;
4280 static int
4281 winreg_dissect_element_OpenHKPT_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4283 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
4285 return offset;
4288 static int
4289 winreg_dissect_element_OpenHKPT_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4291 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
4293 return offset;
4296 static int
4297 winreg_dissect_element_OpenHKPT_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4299 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPT_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
4301 return offset;
4304 static int
4305 winreg_dissect_element_OpenHKPT_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4307 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
4309 return offset;
4312 /* IDL: WERROR winreg_OpenHKPT( */
4313 /* IDL: [in] [unique(1)] uint16 *system_name, */
4314 /* IDL: [in] winreg_AccessMask access_mask, */
4315 /* IDL: [out] [ref] policy_handle *handle */
4316 /* IDL: ); */
4318 static int
4319 winreg_dissect_OpenHKPT_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4321 uint32_t status;
4323 di->dcerpc_procedure_name="OpenHKPT";
4324 offset = winreg_dissect_element_OpenHKPT_handle(tvb, offset, pinfo, tree, di, drep);
4325 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4327 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4329 if (status != 0)
4330 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4332 return offset;
4335 static int
4336 winreg_dissect_OpenHKPT_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4338 di->dcerpc_procedure_name="OpenHKPT";
4339 offset = winreg_dissect_element_OpenHKPT_system_name(tvb, offset, pinfo, tree, di, drep);
4340 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4341 offset = winreg_dissect_element_OpenHKPT_access_mask(tvb, offset, pinfo, tree, di, drep);
4342 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4343 return offset;
4346 static int
4347 winreg_dissect_element_OpenHKPN_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4349 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPN_system_name_, NDR_POINTER_UNIQUE, "Pointer to System Name (uint16)",hf_winreg_system_name);
4351 return offset;
4354 static int
4355 winreg_dissect_element_OpenHKPN_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4357 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_winreg_system_name, 0);
4359 return offset;
4362 static int
4363 winreg_dissect_element_OpenHKPN_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4365 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_access_mask, 0);
4367 return offset;
4370 static int
4371 winreg_dissect_element_OpenHKPN_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4373 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_OpenHKPN_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_handle);
4375 return offset;
4378 static int
4379 winreg_dissect_element_OpenHKPN_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4381 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_handle, PIDL_POLHND_OPEN);
4383 return offset;
4386 /* IDL: WERROR winreg_OpenHKPN( */
4387 /* IDL: [in] [unique(1)] uint16 *system_name, */
4388 /* IDL: [in] winreg_AccessMask access_mask, */
4389 /* IDL: [out] [ref] policy_handle *handle */
4390 /* IDL: ); */
4392 static int
4393 winreg_dissect_OpenHKPN_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4395 uint32_t status;
4397 di->dcerpc_procedure_name="OpenHKPN";
4398 offset = winreg_dissect_element_OpenHKPN_handle(tvb, offset, pinfo, tree, di, drep);
4399 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4401 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4403 if (status != 0)
4404 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4406 return offset;
4409 static int
4410 winreg_dissect_OpenHKPN_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4412 di->dcerpc_procedure_name="OpenHKPN";
4413 offset = winreg_dissect_element_OpenHKPN_system_name(tvb, offset, pinfo, tree, di, drep);
4414 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4415 offset = winreg_dissect_element_OpenHKPN_access_mask(tvb, offset, pinfo, tree, di, drep);
4416 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4417 return offset;
4420 static int
4421 winreg_dissect_element_QueryMultipleValues2_key_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4423 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_key_handle_, NDR_POINTER_REF, "Pointer to Key Handle (policy_handle)",hf_winreg_winreg_QueryMultipleValues2_key_handle);
4425 return offset;
4428 static int
4429 winreg_dissect_element_QueryMultipleValues2_key_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4431 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues2_key_handle, 0);
4433 return offset;
4436 static int
4437 winreg_dissect_element_QueryMultipleValues2_values_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4439 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_in_, NDR_POINTER_REF, "Pointer to Values In (QueryMultipleValue)",hf_winreg_winreg_QueryMultipleValues2_values_in);
4441 return offset;
4444 static int
4445 winreg_dissect_element_QueryMultipleValues2_values_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4447 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_in__);
4449 return offset;
4452 static int
4453 winreg_dissect_element_QueryMultipleValues2_values_in__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4455 offset = winreg_dissect_struct_QueryMultipleValue(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_QueryMultipleValues2_values_in,0);
4457 return offset;
4460 static int
4461 winreg_dissect_element_QueryMultipleValues2_values_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4463 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_out_, NDR_POINTER_REF, "Pointer to Values Out (QueryMultipleValue)",hf_winreg_winreg_QueryMultipleValues2_values_out);
4465 return offset;
4468 static int
4469 winreg_dissect_element_QueryMultipleValues2_values_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4471 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_values_out__);
4473 return offset;
4476 static int
4477 winreg_dissect_element_QueryMultipleValues2_values_out__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4479 offset = winreg_dissect_struct_QueryMultipleValue(tvb,offset,pinfo,tree,di,drep,hf_winreg_winreg_QueryMultipleValues2_values_out,0);
4481 return offset;
4484 static int
4485 winreg_dissect_element_QueryMultipleValues2_num_values(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4487 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues2_num_values, 0);
4489 return offset;
4492 static int
4493 winreg_dissect_element_QueryMultipleValues2_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4495 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_buffer_, NDR_POINTER_UNIQUE, "Pointer to Buffer (uint8)",hf_winreg_winreg_QueryMultipleValues2_buffer);
4497 return offset;
4500 static int
4501 winreg_dissect_element_QueryMultipleValues2_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4503 offset = dissect_ndr_ucvarray(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_buffer__);
4505 return offset;
4508 static int
4509 winreg_dissect_element_QueryMultipleValues2_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4511 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues2_buffer, 0);
4513 return offset;
4516 static int
4517 winreg_dissect_element_QueryMultipleValues2_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4519 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_offered_, NDR_POINTER_REF, "Pointer to Offered (uint32)",hf_winreg_winreg_QueryMultipleValues2_offered);
4521 return offset;
4524 static int
4525 winreg_dissect_element_QueryMultipleValues2_offered_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4527 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues2_offered, 0);
4529 return offset;
4532 static int
4533 winreg_dissect_element_QueryMultipleValues2_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4535 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_QueryMultipleValues2_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_winreg_winreg_QueryMultipleValues2_needed);
4537 return offset;
4540 static int
4541 winreg_dissect_element_QueryMultipleValues2_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4543 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_QueryMultipleValues2_needed, 0);
4545 return offset;
4548 /* IDL: WERROR winreg_QueryMultipleValues2( */
4549 /* IDL: [in] [ref] policy_handle *key_handle, */
4550 /* IDL: [in] [length_is(num_values)] [ref] [size_is(num_values)] QueryMultipleValue *values_in, */
4551 /* IDL: [length_is(num_values)] [out] [ref] [size_is(num_values)] QueryMultipleValue *values_out, */
4552 /* IDL: [in] uint32 num_values, */
4553 /* IDL: [in] [length_is(*offered)] [out] [size_is(*offered)] [unique(1)] uint8 *buffer, */
4554 /* IDL: [in] [ref] uint32 *offered, */
4555 /* IDL: [out] [ref] uint32 *needed */
4556 /* IDL: ); */
4558 static int
4559 winreg_dissect_QueryMultipleValues2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4561 uint32_t status;
4563 di->dcerpc_procedure_name="QueryMultipleValues2";
4564 offset = winreg_dissect_element_QueryMultipleValues2_values_out(tvb, offset, pinfo, tree, di, drep);
4565 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4567 offset = winreg_dissect_element_QueryMultipleValues2_buffer(tvb, offset, pinfo, tree, di, drep);
4568 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4570 offset = winreg_dissect_element_QueryMultipleValues2_needed(tvb, offset, pinfo, tree, di, drep);
4571 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4573 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4575 if (status != 0)
4576 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4578 return offset;
4581 static int
4582 winreg_dissect_QueryMultipleValues2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4584 di->dcerpc_procedure_name="QueryMultipleValues2";
4585 offset = winreg_dissect_element_QueryMultipleValues2_key_handle(tvb, offset, pinfo, tree, di, drep);
4586 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4587 offset = winreg_dissect_element_QueryMultipleValues2_values_in(tvb, offset, pinfo, tree, di, drep);
4588 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4589 offset = winreg_dissect_element_QueryMultipleValues2_num_values(tvb, offset, pinfo, tree, di, drep);
4590 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4591 offset = winreg_dissect_element_QueryMultipleValues2_buffer(tvb, offset, pinfo, tree, di, drep);
4592 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4593 offset = winreg_dissect_element_QueryMultipleValues2_offered(tvb, offset, pinfo, tree, di, drep);
4594 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4595 return offset;
4598 static int
4599 winreg_dissect_element_DeleteKeyEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4601 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_DeleteKeyEx_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_winreg_winreg_DeleteKeyEx_handle);
4603 return offset;
4606 static int
4607 winreg_dissect_element_DeleteKeyEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4609 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_DeleteKeyEx_handle, 0);
4611 return offset;
4614 static int
4615 winreg_dissect_element_DeleteKeyEx_key(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4617 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, winreg_dissect_element_DeleteKeyEx_key_, NDR_POINTER_REF, "Pointer to Key (winreg_String)",hf_winreg_winreg_DeleteKeyEx_key);
4619 return offset;
4622 static int
4623 winreg_dissect_element_DeleteKeyEx_key_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4625 offset=cnf_dissect_winreg_String(tvb, offset, pinfo, tree, di, drep, 0, hf_winreg_winreg_DeleteKeyEx_key);
4627 return offset;
4630 static int
4631 winreg_dissect_element_DeleteKeyEx_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4633 offset = winreg_dissect_bitmap_AccessMask(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_DeleteKeyEx_access_mask, 0);
4635 return offset;
4638 static int
4639 winreg_dissect_element_DeleteKeyEx_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4641 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_winreg_DeleteKeyEx_reserved, 0);
4643 return offset;
4646 /* IDL: WERROR winreg_DeleteKeyEx( */
4647 /* IDL: [in] [ref] policy_handle *handle, */
4648 /* IDL: [in] [ref] winreg_String *key, */
4649 /* IDL: [in] winreg_AccessMask access_mask, */
4650 /* IDL: [in] uint32 reserved */
4651 /* IDL: ); */
4653 static int
4654 winreg_dissect_DeleteKeyEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4656 uint32_t status;
4658 di->dcerpc_procedure_name="DeleteKeyEx";
4659 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_winreg_werror, &status);
4661 if (status != 0)
4662 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4664 return offset;
4667 static int
4668 winreg_dissect_DeleteKeyEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4670 di->dcerpc_procedure_name="DeleteKeyEx";
4671 offset = winreg_dissect_element_DeleteKeyEx_handle(tvb, offset, pinfo, tree, di, drep);
4672 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4673 offset = winreg_dissect_element_DeleteKeyEx_key(tvb, offset, pinfo, tree, di, drep);
4674 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4675 offset = winreg_dissect_element_DeleteKeyEx_access_mask(tvb, offset, pinfo, tree, di, drep);
4676 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4677 offset = winreg_dissect_element_DeleteKeyEx_reserved(tvb, offset, pinfo, tree, di, drep);
4678 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4679 return offset;
4683 static const dcerpc_sub_dissector winreg_dissectors[] = {
4684 { 0, "OpenHKCR",
4685 winreg_dissect_OpenHKCR_request, winreg_dissect_OpenHKCR_response},
4686 { 1, "OpenHKCU",
4687 winreg_dissect_OpenHKCU_request, winreg_dissect_OpenHKCU_response},
4688 { 2, "OpenHKLM",
4689 winreg_dissect_OpenHKLM_request, winreg_dissect_OpenHKLM_response},
4690 { 3, "OpenHKPD",
4691 winreg_dissect_OpenHKPD_request, winreg_dissect_OpenHKPD_response},
4692 { 4, "OpenHKU",
4693 winreg_dissect_OpenHKU_request, winreg_dissect_OpenHKU_response},
4694 { 5, "CloseKey",
4695 winreg_dissect_CloseKey_request, winreg_dissect_CloseKey_response},
4696 { 6, "CreateKey",
4697 winreg_dissect_CreateKey_request, winreg_dissect_CreateKey_response},
4698 { 7, "DeleteKey",
4699 winreg_dissect_DeleteKey_request, winreg_dissect_DeleteKey_response},
4700 { 8, "DeleteValue",
4701 winreg_dissect_DeleteValue_request, winreg_dissect_DeleteValue_response},
4702 { 9, "EnumKey",
4703 winreg_dissect_EnumKey_request, winreg_dissect_EnumKey_response},
4704 { 10, "EnumValue",
4705 winreg_dissect_EnumValue_request, winreg_dissect_EnumValue_response},
4706 { 11, "FlushKey",
4707 winreg_dissect_FlushKey_request, winreg_dissect_FlushKey_response},
4708 { 12, "GetKeySecurity",
4709 winreg_dissect_GetKeySecurity_request, winreg_dissect_GetKeySecurity_response},
4710 { 13, "LoadKey",
4711 winreg_dissect_LoadKey_request, winreg_dissect_LoadKey_response},
4712 { 14, "NotifyChangeKeyValue",
4713 winreg_dissect_NotifyChangeKeyValue_request, winreg_dissect_NotifyChangeKeyValue_response},
4714 { 15, "OpenKey",
4715 winreg_dissect_OpenKey_request, winreg_dissect_OpenKey_response},
4716 { 16, "QueryInfoKey",
4717 winreg_dissect_QueryInfoKey_request, winreg_dissect_QueryInfoKey_response},
4718 { 17, "QueryValue",
4719 winreg_dissect_QueryValue_request, winreg_dissect_QueryValue_response},
4720 { 18, "ReplaceKey",
4721 winreg_dissect_ReplaceKey_request, winreg_dissect_ReplaceKey_response},
4722 { 19, "RestoreKey",
4723 winreg_dissect_RestoreKey_request, winreg_dissect_RestoreKey_response},
4724 { 20, "SaveKey",
4725 winreg_dissect_SaveKey_request, winreg_dissect_SaveKey_response},
4726 { 21, "SetKeySecurity",
4727 winreg_dissect_SetKeySecurity_request, winreg_dissect_SetKeySecurity_response},
4728 { 22, "SetValue",
4729 winreg_dissect_SetValue_request, winreg_dissect_SetValue_response},
4730 { 23, "UnLoadKey",
4731 winreg_dissect_UnLoadKey_request, winreg_dissect_UnLoadKey_response},
4732 { 24, "InitiateSystemShutdown",
4733 winreg_dissect_InitiateSystemShutdown_request, winreg_dissect_InitiateSystemShutdown_response},
4734 { 25, "AbortSystemShutdown",
4735 winreg_dissect_AbortSystemShutdown_request, winreg_dissect_AbortSystemShutdown_response},
4736 { 26, "GetVersion",
4737 winreg_dissect_GetVersion_request, winreg_dissect_GetVersion_response},
4738 { 27, "OpenHKCC",
4739 winreg_dissect_OpenHKCC_request, winreg_dissect_OpenHKCC_response},
4740 { 28, "OpenHKDD",
4741 winreg_dissect_OpenHKDD_request, winreg_dissect_OpenHKDD_response},
4742 { 29, "QueryMultipleValues",
4743 winreg_dissect_QueryMultipleValues_request, winreg_dissect_QueryMultipleValues_response},
4744 { 30, "InitiateSystemShutdownEx",
4745 winreg_dissect_InitiateSystemShutdownEx_request, winreg_dissect_InitiateSystemShutdownEx_response},
4746 { 31, "SaveKeyEx",
4747 winreg_dissect_SaveKeyEx_request, winreg_dissect_SaveKeyEx_response},
4748 { 32, "OpenHKPT",
4749 winreg_dissect_OpenHKPT_request, winreg_dissect_OpenHKPT_response},
4750 { 33, "OpenHKPN",
4751 winreg_dissect_OpenHKPN_request, winreg_dissect_OpenHKPN_response},
4752 { 34, "QueryMultipleValues2",
4753 winreg_dissect_QueryMultipleValues2_request, winreg_dissect_QueryMultipleValues2_response},
4754 { 35, "DeleteKeyEx",
4755 winreg_dissect_DeleteKeyEx_request, winreg_dissect_DeleteKeyEx_response},
4756 { 0, NULL, NULL, NULL }
4759 void proto_register_dcerpc_winreg(void)
4761 static hf_register_info hf[] = {
4762 { &hf_winreg_KeySecurityAttribute_data_size,
4763 { "Data Size", "winreg.KeySecurityAttribute.data_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4764 { &hf_winreg_KeySecurityAttribute_inherit,
4765 { "Inherit", "winreg.KeySecurityAttribute.inherit", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4766 { &hf_winreg_KeySecurityAttribute_sec_data,
4767 { "Sec Data", "winreg.KeySecurityAttribute.sec_data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4768 { &hf_winreg_KeySecurityData_data,
4769 { "Data", "winreg.KeySecurityData.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4770 { &hf_winreg_KeySecurityData_len,
4771 { "Len", "winreg.KeySecurityData.len", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4772 { &hf_winreg_KeySecurityData_size,
4773 { "Size", "winreg.KeySecurityData.size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4774 { &hf_winreg_QueryMultipleValue_ve_type,
4775 { "Ve Type", "winreg.QueryMultipleValue.ve_type", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4776 { &hf_winreg_QueryMultipleValue_ve_valuelen,
4777 { "Ve Valuelen", "winreg.QueryMultipleValue.ve_valuelen", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4778 { &hf_winreg_QueryMultipleValue_ve_valuename,
4779 { "Ve Valuename", "winreg.QueryMultipleValue.ve_valuename", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4780 { &hf_winreg_QueryMultipleValue_ve_valueptr,
4781 { "Ve Valueptr", "winreg.QueryMultipleValue.ve_valueptr", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4782 { &hf_winreg_access_mask,
4783 { "Access Mask", "winreg.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4784 { &hf_winreg_handle,
4785 { "Handle", "winreg.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4786 { &hf_winreg_opnum,
4787 { "Operation", "winreg.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
4788 { &hf_winreg_sd,
4789 { "KeySecurityData", "winreg.sd", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4790 { &hf_winreg_sd_actual_size,
4791 { "Actual Size", "winreg.sd.actual_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4792 { &hf_winreg_sd_max_size,
4793 { "Max Size", "winreg.sd.max_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4794 { &hf_winreg_sd_offset,
4795 { "Offset", "winreg.sd.offset", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4796 { &hf_winreg_system_name,
4797 { "System Name", "winreg.system_name", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
4798 { &hf_winreg_werror,
4799 { "Windows Error", "winreg.werror", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }},
4800 { &hf_winreg_winreg_AbortSystemShutdown_server,
4801 { "Server", "winreg.winreg_AbortSystemShutdown.server", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
4802 { &hf_winreg_winreg_AccessMask_KEY_CREATE_LINK,
4803 { "KEY CREATE LINK", "winreg.winreg_AccessMask.KEY_CREATE_LINK", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_CREATE_LINK_tfs), ( 0x00000020 ), NULL, HFILL }},
4804 { &hf_winreg_winreg_AccessMask_KEY_CREATE_SUB_KEY,
4805 { "KEY CREATE SUB KEY", "winreg.winreg_AccessMask.KEY_CREATE_SUB_KEY", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_CREATE_SUB_KEY_tfs), ( 0x00000004 ), NULL, HFILL }},
4806 { &hf_winreg_winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS,
4807 { "KEY ENUMERATE SUB KEYS", "winreg.winreg_AccessMask.KEY_ENUMERATE_SUB_KEYS", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_ENUMERATE_SUB_KEYS_tfs), ( 0x00000008 ), NULL, HFILL }},
4808 { &hf_winreg_winreg_AccessMask_KEY_NOTIFY,
4809 { "KEY NOTIFY", "winreg.winreg_AccessMask.KEY_NOTIFY", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_NOTIFY_tfs), ( 0x00000010 ), NULL, HFILL }},
4810 { &hf_winreg_winreg_AccessMask_KEY_QUERY_VALUE,
4811 { "KEY QUERY VALUE", "winreg.winreg_AccessMask.KEY_QUERY_VALUE", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_QUERY_VALUE_tfs), ( 0x00000001 ), NULL, HFILL }},
4812 { &hf_winreg_winreg_AccessMask_KEY_SET_VALUE,
4813 { "KEY SET VALUE", "winreg.winreg_AccessMask.KEY_SET_VALUE", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_SET_VALUE_tfs), ( 0x00000002 ), NULL, HFILL }},
4814 { &hf_winreg_winreg_AccessMask_KEY_WOW64_32KEY,
4815 { "KEY WOW64 32KEY", "winreg.winreg_AccessMask.KEY_WOW64_32KEY", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_WOW64_32KEY_tfs), ( 0x00000200 ), NULL, HFILL }},
4816 { &hf_winreg_winreg_AccessMask_KEY_WOW64_64KEY,
4817 { "KEY WOW64 64KEY", "winreg.winreg_AccessMask.KEY_WOW64_64KEY", FT_BOOLEAN, 32, TFS(&winreg_AccessMask_KEY_WOW64_64KEY_tfs), ( 0x00000100 ), NULL, HFILL }},
4818 { &hf_winreg_winreg_CreateKey_action_taken,
4819 { "Action Taken", "winreg.winreg_CreateKey.action_taken", FT_UINT32, BASE_DEC, VALS(winreg_winreg_CreateAction_vals), 0, NULL, HFILL }},
4820 { &hf_winreg_winreg_CreateKey_keyclass,
4821 { "Keyclass", "winreg.winreg_CreateKey.keyclass", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4822 { &hf_winreg_winreg_CreateKey_name,
4823 { "Name", "winreg.winreg_CreateKey.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4824 { &hf_winreg_winreg_CreateKey_new_handle,
4825 { "New Handle", "winreg.winreg_CreateKey.new_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4826 { &hf_winreg_winreg_CreateKey_options,
4827 { "Options", "winreg.winreg_CreateKey.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4828 { &hf_winreg_winreg_CreateKey_secdesc,
4829 { "Secdesc", "winreg.winreg_CreateKey.secdesc", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4830 { &hf_winreg_winreg_DeleteKeyEx_access_mask,
4831 { "Access Mask", "winreg.winreg_DeleteKeyEx.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4832 { &hf_winreg_winreg_DeleteKeyEx_handle,
4833 { "Handle", "winreg.winreg_DeleteKeyEx.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4834 { &hf_winreg_winreg_DeleteKeyEx_key,
4835 { "Key", "winreg.winreg_DeleteKeyEx.key", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4836 { &hf_winreg_winreg_DeleteKeyEx_reserved,
4837 { "Reserved", "winreg.winreg_DeleteKeyEx.reserved", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4838 { &hf_winreg_winreg_DeleteKey_key,
4839 { "Key", "winreg.winreg_DeleteKey.key", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4840 { &hf_winreg_winreg_DeleteValue_value,
4841 { "Value", "winreg.winreg_DeleteValue.value", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4842 { &hf_winreg_winreg_EnumKey_enum_index,
4843 { "Enum Index", "winreg.winreg_EnumKey.enum_index", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4844 { &hf_winreg_winreg_EnumKey_keyclass,
4845 { "Keyclass", "winreg.winreg_EnumKey.keyclass", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4846 { &hf_winreg_winreg_EnumKey_last_changed_time,
4847 { "Last Changed Time", "winreg.winreg_EnumKey.last_changed_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
4848 { &hf_winreg_winreg_EnumKey_name,
4849 { "Name", "winreg.winreg_EnumKey.name", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4850 { &hf_winreg_winreg_EnumValue_enum_index,
4851 { "Enum Index", "winreg.winreg_EnumValue.enum_index", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4852 { &hf_winreg_winreg_EnumValue_length,
4853 { "Length", "winreg.winreg_EnumValue.length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4854 { &hf_winreg_winreg_EnumValue_name,
4855 { "Name", "winreg.winreg_EnumValue.name", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4856 { &hf_winreg_winreg_EnumValue_size,
4857 { "Size", "winreg.winreg_EnumValue.size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4858 { &hf_winreg_winreg_EnumValue_type,
4859 { "Type", "winreg.winreg_EnumValue.type", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4860 { &hf_winreg_winreg_EnumValue_value,
4861 { "Value", "winreg.winreg_EnumValue.value", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4862 { &hf_winreg_winreg_GetKeySecurity_sec_info,
4863 { "Sec Info", "winreg.winreg_GetKeySecurity.sec_info", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4864 { &hf_winreg_winreg_GetVersion_version,
4865 { "Version", "winreg.winreg_GetVersion.version", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4866 { &hf_winreg_winreg_InitiateSystemShutdownEx_do_reboot,
4867 { "Do Reboot", "winreg.winreg_InitiateSystemShutdownEx.do_reboot", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4868 { &hf_winreg_winreg_InitiateSystemShutdownEx_force_apps,
4869 { "Force Apps", "winreg.winreg_InitiateSystemShutdownEx.force_apps", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4870 { &hf_winreg_winreg_InitiateSystemShutdownEx_hostname,
4871 { "Hostname", "winreg.winreg_InitiateSystemShutdownEx.hostname", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
4872 { &hf_winreg_winreg_InitiateSystemShutdownEx_message,
4873 { "Message", "winreg.winreg_InitiateSystemShutdownEx.message", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4874 { &hf_winreg_winreg_InitiateSystemShutdownEx_reason,
4875 { "Reason", "winreg.winreg_InitiateSystemShutdownEx.reason", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4876 { &hf_winreg_winreg_InitiateSystemShutdownEx_timeout,
4877 { "Timeout", "winreg.winreg_InitiateSystemShutdownEx.timeout", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4878 { &hf_winreg_winreg_InitiateSystemShutdown_do_reboot,
4879 { "Do Reboot", "winreg.winreg_InitiateSystemShutdown.do_reboot", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4880 { &hf_winreg_winreg_InitiateSystemShutdown_force_apps,
4881 { "Force Apps", "winreg.winreg_InitiateSystemShutdown.force_apps", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4882 { &hf_winreg_winreg_InitiateSystemShutdown_hostname,
4883 { "Hostname", "winreg.winreg_InitiateSystemShutdown.hostname", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
4884 { &hf_winreg_winreg_InitiateSystemShutdown_message,
4885 { "Message", "winreg.winreg_InitiateSystemShutdown.message", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4886 { &hf_winreg_winreg_InitiateSystemShutdown_timeout,
4887 { "Timeout", "winreg.winreg_InitiateSystemShutdown.timeout", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4888 { &hf_winreg_winreg_KeyOptions_REG_OPTION_BACKUP_RESTORE,
4889 { "REG OPTION BACKUP RESTORE", "winreg.winreg_KeyOptions.REG_OPTION_BACKUP_RESTORE", FT_BOOLEAN, 32, TFS(&winreg_KeyOptions_REG_OPTION_BACKUP_RESTORE_tfs), ( 0x00000004 ), NULL, HFILL }},
4890 { &hf_winreg_winreg_KeyOptions_REG_OPTION_CREATE_LINK,
4891 { "REG OPTION CREATE LINK", "winreg.winreg_KeyOptions.REG_OPTION_CREATE_LINK", FT_BOOLEAN, 32, TFS(&winreg_KeyOptions_REG_OPTION_CREATE_LINK_tfs), ( 0x00000002 ), NULL, HFILL }},
4892 { &hf_winreg_winreg_KeyOptions_REG_OPTION_OPEN_LINK,
4893 { "REG OPTION OPEN LINK", "winreg.winreg_KeyOptions.REG_OPTION_OPEN_LINK", FT_BOOLEAN, 32, TFS(&winreg_KeyOptions_REG_OPTION_OPEN_LINK_tfs), ( 0x00000008 ), NULL, HFILL }},
4894 { &hf_winreg_winreg_KeyOptions_REG_OPTION_VOLATILE,
4895 { "REG OPTION VOLATILE", "winreg.winreg_KeyOptions.REG_OPTION_VOLATILE", FT_BOOLEAN, 32, TFS(&winreg_KeyOptions_REG_OPTION_VOLATILE_tfs), ( 0x00000001 ), NULL, HFILL }},
4896 { &hf_winreg_winreg_LoadKey_filename,
4897 { "Filename", "winreg.winreg_LoadKey.filename", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4898 { &hf_winreg_winreg_LoadKey_keyname,
4899 { "Keyname", "winreg.winreg_LoadKey.keyname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4900 { &hf_winreg_winreg_NotifyChangeKeyValue_notify_filter,
4901 { "Notify Filter", "winreg.winreg_NotifyChangeKeyValue.notify_filter", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4902 { &hf_winreg_winreg_NotifyChangeKeyValue_string1,
4903 { "String1", "winreg.winreg_NotifyChangeKeyValue.string1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4904 { &hf_winreg_winreg_NotifyChangeKeyValue_string2,
4905 { "String2", "winreg.winreg_NotifyChangeKeyValue.string2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4906 { &hf_winreg_winreg_NotifyChangeKeyValue_unknown,
4907 { "Unknown", "winreg.winreg_NotifyChangeKeyValue.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4908 { &hf_winreg_winreg_NotifyChangeKeyValue_unknown2,
4909 { "Unknown2", "winreg.winreg_NotifyChangeKeyValue.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4910 { &hf_winreg_winreg_NotifyChangeKeyValue_watch_subtree,
4911 { "Watch Subtree", "winreg.winreg_NotifyChangeKeyValue.watch_subtree", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4912 { &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_ATTRIBUTES,
4913 { "REG NOTIFY CHANGE ATTRIBUTES", "winreg.winreg_NotifyChangeType.REG_NOTIFY_CHANGE_ATTRIBUTES", FT_BOOLEAN, 32, TFS(&winreg_NotifyChangeType_REG_NOTIFY_CHANGE_ATTRIBUTES_tfs), ( 0x00000002 ), NULL, HFILL }},
4914 { &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_LAST_SET,
4915 { "REG NOTIFY CHANGE LAST SET", "winreg.winreg_NotifyChangeType.REG_NOTIFY_CHANGE_LAST_SET", FT_BOOLEAN, 32, TFS(&winreg_NotifyChangeType_REG_NOTIFY_CHANGE_LAST_SET_tfs), ( 0x00000004 ), NULL, HFILL }},
4916 { &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_NAME,
4917 { "REG NOTIFY CHANGE NAME", "winreg.winreg_NotifyChangeType.REG_NOTIFY_CHANGE_NAME", FT_BOOLEAN, 32, TFS(&winreg_NotifyChangeType_REG_NOTIFY_CHANGE_NAME_tfs), ( 0x00000001 ), NULL, HFILL }},
4918 { &hf_winreg_winreg_NotifyChangeType_REG_NOTIFY_CHANGE_SECURITY,
4919 { "REG NOTIFY CHANGE SECURITY", "winreg.winreg_NotifyChangeType.REG_NOTIFY_CHANGE_SECURITY", FT_BOOLEAN, 32, TFS(&winreg_NotifyChangeType_REG_NOTIFY_CHANGE_SECURITY_tfs), ( 0x00000008 ), NULL, HFILL }},
4920 { &hf_winreg_winreg_OpenHKCU_access_mask,
4921 { "Access Mask", "winreg.winreg_OpenHKCU.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4922 { &hf_winreg_winreg_OpenHKPD_access_mask,
4923 { "Access Mask", "winreg.winreg_OpenHKPD.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4924 { &hf_winreg_winreg_OpenKey_access_mask,
4925 { "Access Mask", "winreg.winreg_OpenKey.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4926 { &hf_winreg_winreg_OpenKey_keyname,
4927 { "Keyname", "winreg.winreg_OpenKey.keyname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4928 { &hf_winreg_winreg_OpenKey_options,
4929 { "Options", "winreg.winreg_OpenKey.options", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
4930 { &hf_winreg_winreg_OpenKey_parent_handle,
4931 { "Parent Handle", "winreg.winreg_OpenKey.parent_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4932 { &hf_winreg_winreg_QueryInfoKey_classname,
4933 { "Classname", "winreg.winreg_QueryInfoKey.classname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4934 { &hf_winreg_winreg_QueryInfoKey_last_changed_time,
4935 { "Last Changed Time", "winreg.winreg_QueryInfoKey.last_changed_time", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, NULL, HFILL }},
4936 { &hf_winreg_winreg_QueryInfoKey_max_classlen,
4937 { "Max Classlen", "winreg.winreg_QueryInfoKey.max_classlen", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4938 { &hf_winreg_winreg_QueryInfoKey_max_subkeylen,
4939 { "Max Subkeylen", "winreg.winreg_QueryInfoKey.max_subkeylen", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4940 { &hf_winreg_winreg_QueryInfoKey_max_valbufsize,
4941 { "Max Valbufsize", "winreg.winreg_QueryInfoKey.max_valbufsize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4942 { &hf_winreg_winreg_QueryInfoKey_max_valnamelen,
4943 { "Max Valnamelen", "winreg.winreg_QueryInfoKey.max_valnamelen", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4944 { &hf_winreg_winreg_QueryInfoKey_num_subkeys,
4945 { "Num Subkeys", "winreg.winreg_QueryInfoKey.num_subkeys", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4946 { &hf_winreg_winreg_QueryInfoKey_num_values,
4947 { "Num Values", "winreg.winreg_QueryInfoKey.num_values", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4948 { &hf_winreg_winreg_QueryInfoKey_secdescsize,
4949 { "Secdescsize", "winreg.winreg_QueryInfoKey.secdescsize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4950 { &hf_winreg_winreg_QueryMultipleValues2_buffer,
4951 { "Buffer", "winreg.winreg_QueryMultipleValues2.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4952 { &hf_winreg_winreg_QueryMultipleValues2_key_handle,
4953 { "Key Handle", "winreg.winreg_QueryMultipleValues2.key_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4954 { &hf_winreg_winreg_QueryMultipleValues2_needed,
4955 { "Needed", "winreg.winreg_QueryMultipleValues2.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4956 { &hf_winreg_winreg_QueryMultipleValues2_num_values,
4957 { "Num Values", "winreg.winreg_QueryMultipleValues2.num_values", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4958 { &hf_winreg_winreg_QueryMultipleValues2_offered,
4959 { "Offered", "winreg.winreg_QueryMultipleValues2.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4960 { &hf_winreg_winreg_QueryMultipleValues2_values_in,
4961 { "Values In", "winreg.winreg_QueryMultipleValues2.values_in", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4962 { &hf_winreg_winreg_QueryMultipleValues2_values_out,
4963 { "Values Out", "winreg.winreg_QueryMultipleValues2.values_out", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4964 { &hf_winreg_winreg_QueryMultipleValues_buffer,
4965 { "Buffer", "winreg.winreg_QueryMultipleValues.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4966 { &hf_winreg_winreg_QueryMultipleValues_buffer_size,
4967 { "Buffer Size", "winreg.winreg_QueryMultipleValues.buffer_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4968 { &hf_winreg_winreg_QueryMultipleValues_key_handle,
4969 { "Key Handle", "winreg.winreg_QueryMultipleValues.key_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4970 { &hf_winreg_winreg_QueryMultipleValues_num_values,
4971 { "Num Values", "winreg.winreg_QueryMultipleValues.num_values", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4972 { &hf_winreg_winreg_QueryMultipleValues_values_in,
4973 { "Values In", "winreg.winreg_QueryMultipleValues.values_in", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4974 { &hf_winreg_winreg_QueryMultipleValues_values_out,
4975 { "Values Out", "winreg.winreg_QueryMultipleValues.values_out", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4976 { &hf_winreg_winreg_QueryValue_data,
4977 { "Data", "winreg.winreg_QueryValue.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
4978 { &hf_winreg_winreg_QueryValue_data_length,
4979 { "Data Length", "winreg.winreg_QueryValue.data_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4980 { &hf_winreg_winreg_QueryValue_data_size,
4981 { "Data Size", "winreg.winreg_QueryValue.data_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
4982 { &hf_winreg_winreg_QueryValue_type,
4983 { "Type", "winreg.winreg_QueryValue.type", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
4984 { &hf_winreg_winreg_QueryValue_value_name,
4985 { "Value Name", "winreg.winreg_QueryValue.value_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4986 { &hf_winreg_winreg_ReplaceKey_handle,
4987 { "Handle", "winreg.winreg_ReplaceKey.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
4988 { &hf_winreg_winreg_ReplaceKey_new_file,
4989 { "New File", "winreg.winreg_ReplaceKey.new_file", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4990 { &hf_winreg_winreg_ReplaceKey_old_file,
4991 { "Old File", "winreg.winreg_ReplaceKey.old_file", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4992 { &hf_winreg_winreg_ReplaceKey_subkey,
4993 { "Subkey", "winreg.winreg_ReplaceKey.subkey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
4994 { &hf_winreg_winreg_RestoreKeyFlags_REG_FORCE_RESTORE,
4995 { "REG FORCE RESTORE", "winreg.winreg_RestoreKeyFlags.REG_FORCE_RESTORE", FT_BOOLEAN, 32, TFS(&winreg_RestoreKeyFlags_REG_FORCE_RESTORE_tfs), ( 0x00000008 ), NULL, HFILL }},
4996 { &hf_winreg_winreg_RestoreKeyFlags_REG_NO_LAZY_FLUSH,
4997 { "REG NO LAZY FLUSH", "winreg.winreg_RestoreKeyFlags.REG_NO_LAZY_FLUSH", FT_BOOLEAN, 32, TFS(&winreg_RestoreKeyFlags_REG_NO_LAZY_FLUSH_tfs), ( 0x00000004 ), NULL, HFILL }},
4998 { &hf_winreg_winreg_RestoreKeyFlags_REG_REFRESH_HIVE,
4999 { "REG REFRESH HIVE", "winreg.winreg_RestoreKeyFlags.REG_REFRESH_HIVE", FT_BOOLEAN, 32, TFS(&winreg_RestoreKeyFlags_REG_REFRESH_HIVE_tfs), ( 0x00000002 ), NULL, HFILL }},
5000 { &hf_winreg_winreg_RestoreKeyFlags_REG_WHOLE_HIVE_VOLATILE,
5001 { "REG WHOLE HIVE VOLATILE", "winreg.winreg_RestoreKeyFlags.REG_WHOLE_HIVE_VOLATILE", FT_BOOLEAN, 32, TFS(&winreg_RestoreKeyFlags_REG_WHOLE_HIVE_VOLATILE_tfs), ( 0x00000001 ), NULL, HFILL }},
5002 { &hf_winreg_winreg_RestoreKey_filename,
5003 { "Filename", "winreg.winreg_RestoreKey.filename", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5004 { &hf_winreg_winreg_RestoreKey_flags,
5005 { "Flags", "winreg.winreg_RestoreKey.flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
5006 { &hf_winreg_winreg_RestoreKey_handle,
5007 { "Handle", "winreg.winreg_RestoreKey.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
5008 { &hf_winreg_winreg_SaveKeyEx_filename,
5009 { "Filename", "winreg.winreg_SaveKeyEx.filename", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5010 { &hf_winreg_winreg_SaveKeyEx_flags,
5011 { "Flags", "winreg.winreg_SaveKeyEx.flags", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
5012 { &hf_winreg_winreg_SaveKeyEx_handle,
5013 { "Handle", "winreg.winreg_SaveKeyEx.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
5014 { &hf_winreg_winreg_SaveKeyEx_sec_attrib,
5015 { "Sec Attrib", "winreg.winreg_SaveKeyEx.sec_attrib", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
5016 { &hf_winreg_winreg_SaveKey_filename,
5017 { "Filename", "winreg.winreg_SaveKey.filename", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5018 { &hf_winreg_winreg_SaveKey_handle,
5019 { "Handle", "winreg.winreg_SaveKey.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
5020 { &hf_winreg_winreg_SaveKey_sec_attrib,
5021 { "Sec Attrib", "winreg.winreg_SaveKey.sec_attrib", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
5022 { &hf_winreg_winreg_SecBuf_inherit,
5023 { "Inherit", "winreg.winreg_SecBuf.inherit", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
5024 { &hf_winreg_winreg_SecBuf_length,
5025 { "Length", "winreg.winreg_SecBuf.length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
5026 { &hf_winreg_winreg_SecBuf_sd,
5027 { "Sd", "winreg.winreg_SecBuf.sd", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
5028 { &hf_winreg_winreg_SetKeySecurity_sec_info,
5029 { "Sec Info", "winreg.winreg_SetKeySecurity.sec_info", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
5030 { &hf_winreg_winreg_SetValue_data,
5031 { "Data", "winreg.winreg_SetValue.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
5032 { &hf_winreg_winreg_SetValue_name,
5033 { "Name", "winreg.winreg_SetValue.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5034 { &hf_winreg_winreg_SetValue_size,
5035 { "Size", "winreg.winreg_SetValue.size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
5036 { &hf_winreg_winreg_SetValue_type,
5037 { "Type", "winreg.winreg_SetValue.type", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
5038 { &hf_winreg_winreg_StringBuf_length,
5039 { "Length", "winreg.winreg_StringBuf.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5040 { &hf_winreg_winreg_StringBuf_name,
5041 { "Name", "winreg.winreg_StringBuf.name", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5042 { &hf_winreg_winreg_StringBuf_size,
5043 { "Size", "winreg.winreg_StringBuf.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5044 { &hf_winreg_winreg_String_name,
5045 { "Name", "winreg.winreg_String.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5046 { &hf_winreg_winreg_String_name_len,
5047 { "Name Len", "winreg.winreg_String.name_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5048 { &hf_winreg_winreg_String_name_size,
5049 { "Name Size", "winreg.winreg_String.name_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5050 { &hf_winreg_winreg_UnLoadKey_handle,
5051 { "Handle", "winreg.winreg_UnLoadKey.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
5052 { &hf_winreg_winreg_UnLoadKey_subkey,
5053 { "Subkey", "winreg.winreg_UnLoadKey.subkey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
5054 { &hf_winreg_winreg_ValNameBuf_length,
5055 { "Length", "winreg.winreg_ValNameBuf.length", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5056 { &hf_winreg_winreg_ValNameBuf_name,
5057 { "Name", "winreg.winreg_ValNameBuf.name", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5058 { &hf_winreg_winreg_ValNameBuf_size,
5059 { "Size", "winreg.winreg_ValNameBuf.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
5063 static int *ett[] = {
5064 &ett_dcerpc_winreg,
5065 &ett_winreg_security_secinfo,
5066 &ett_winreg_winreg_AccessMask,
5067 &ett_winreg_winreg_String,
5068 &ett_winreg_KeySecurityData,
5069 &ett_winreg_winreg_SecBuf,
5070 &ett_winreg_winreg_KeyOptions,
5071 &ett_winreg_winreg_StringBuf,
5072 &ett_winreg_winreg_ValNameBuf,
5073 &ett_winreg_winreg_NotifyChangeType,
5074 &ett_winreg_winreg_RestoreKeyFlags,
5075 &ett_winreg_KeySecurityAttribute,
5076 &ett_winreg_QueryMultipleValue,
5079 proto_dcerpc_winreg = proto_register_protocol("Remote Registry Service", "WINREG", "winreg");
5080 proto_register_field_array(proto_dcerpc_winreg, hf, array_length (hf));
5081 proto_register_subtree_array(ett, array_length(ett));
5084 void proto_reg_handoff_dcerpc_winreg(void)
5086 dcerpc_init_uuid(proto_dcerpc_winreg, ett_dcerpc_winreg,
5087 &uuid_dcerpc_winreg, ver_dcerpc_winreg,
5088 winreg_dissectors, hf_winreg_opnum);