regen pidl all: rm epan/dissectors/pidl/*-stamp; pushd epan/dissectors/pidl/ && make...
[wireshark-sm.git] / epan / dissectors / packet-dcerpc-svcctl.c
blob8334121c251dd515d1e293cdaf15037aa9f7067b
1 /* DO NOT EDIT
2 This file was automatically generated by Pidl
3 from svcctl.idl and svcctl.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-svcctl.h"
22 void proto_register_dcerpc_svcctl(void);
23 void proto_reg_handoff_dcerpc_svcctl(void);
25 /* Ett declarations */
26 static int ett_svcctl_service;
27 static int ett_svcctl_service_name;
28 static int ett_svcctl_display_name;
29 static int ett_dcerpc_svcctl;
30 static int ett_svcctl_security_secinfo;
31 static int ett_svcctl_SERVICE_LOCK_STATUS;
32 static int ett_svcctl_svcctl_ControlsAccepted;
33 static int ett_svcctl_SERVICE_STATUS;
34 static int ett_svcctl_SERVICE_STATUS_PROCESS;
35 static int ett_svcctl_ENUM_SERVICE_STATUSW;
36 static int ett_svcctl_ENUM_SERVICE_STATUSA;
37 static int ett_svcctl_svcctl_MgrAccessMask;
38 static int ett_svcctl_svcctl_ServiceAccessMask;
39 static int ett_svcctl_QUERY_SERVICE_CONFIG;
40 static int ett_svcctl_svcctl_ArgumentString;
41 static int ett_svcctl_svcctl_ArgumentStringA;
44 /* Header field declarations */
45 static int hf_svcctl_ENUM_SERVICE_STATUSA_display_name;
46 static int hf_svcctl_ENUM_SERVICE_STATUSA_service_name;
47 static int hf_svcctl_ENUM_SERVICE_STATUSA_status;
48 static int hf_svcctl_ENUM_SERVICE_STATUSW_display_name;
49 static int hf_svcctl_ENUM_SERVICE_STATUSW_service_name;
50 static int hf_svcctl_ENUM_SERVICE_STATUSW_status;
51 static int hf_svcctl_EnumServicesStatusExA_group_name;
52 static int hf_svcctl_EnumServicesStatusExA_info_level;
53 static int hf_svcctl_EnumServicesStatusExA_needed;
54 static int hf_svcctl_EnumServicesStatusExA_offered;
55 static int hf_svcctl_EnumServicesStatusExA_resume_handle;
56 static int hf_svcctl_EnumServicesStatusExA_scm_handle;
57 static int hf_svcctl_EnumServicesStatusExA_service_returned;
58 static int hf_svcctl_EnumServicesStatusExA_service_type;
59 static int hf_svcctl_EnumServicesStatusExA_services;
60 static int hf_svcctl_EnumServicesStatusExA_state;
61 static int hf_svcctl_EnumServicesStatusExW_group_name;
62 static int hf_svcctl_EnumServicesStatusExW_info_level;
63 static int hf_svcctl_EnumServicesStatusExW_needed;
64 static int hf_svcctl_EnumServicesStatusExW_offered;
65 static int hf_svcctl_EnumServicesStatusExW_resume_handle;
66 static int hf_svcctl_EnumServicesStatusExW_scmanager;
67 static int hf_svcctl_EnumServicesStatusExW_service_returned;
68 static int hf_svcctl_EnumServicesStatusExW_service_type;
69 static int hf_svcctl_EnumServicesStatusExW_services;
70 static int hf_svcctl_EnumServicesStatusExW_state;
71 static int hf_svcctl_QUERY_SERVICE_CONFIG_dependencies;
72 static int hf_svcctl_QUERY_SERVICE_CONFIG_displayname;
73 static int hf_svcctl_QUERY_SERVICE_CONFIG_error_control;
74 static int hf_svcctl_QUERY_SERVICE_CONFIG_executablepath;
75 static int hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup;
76 static int hf_svcctl_QUERY_SERVICE_CONFIG_service_type;
77 static int hf_svcctl_QUERY_SERVICE_CONFIG_start_type;
78 static int hf_svcctl_QUERY_SERVICE_CONFIG_startname;
79 static int hf_svcctl_QUERY_SERVICE_CONFIG_tag_id;
80 static int hf_svcctl_SERVICE_LOCK_STATUS_is_locked;
81 static int hf_svcctl_SERVICE_LOCK_STATUS_lock_duration;
82 static int hf_svcctl_SERVICE_LOCK_STATUS_lock_owner;
83 static int hf_svcctl_SERVICE_STATUS_PROCESS_check_point;
84 static int hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted;
85 static int hf_svcctl_SERVICE_STATUS_PROCESS_process_id;
86 static int hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code;
87 static int hf_svcctl_SERVICE_STATUS_PROCESS_service_flags;
88 static int hf_svcctl_SERVICE_STATUS_PROCESS_state;
89 static int hf_svcctl_SERVICE_STATUS_PROCESS_type;
90 static int hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint;
91 static int hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code;
92 static int hf_svcctl_SERVICE_STATUS_check_point;
93 static int hf_svcctl_SERVICE_STATUS_controls_accepted;
94 static int hf_svcctl_SERVICE_STATUS_service_exit_code;
95 static int hf_svcctl_SERVICE_STATUS_state;
96 static int hf_svcctl_SERVICE_STATUS_type;
97 static int hf_svcctl_SERVICE_STATUS_wait_hint;
98 static int hf_svcctl_SERVICE_STATUS_win32_exit_code;
99 static int hf_svcctl_opnum;
100 static int hf_svcctl_service_buffer_size;
101 static int hf_svcctl_service_referent_id;
102 static int hf_svcctl_svcctl_ArgumentStringA_string;
103 static int hf_svcctl_svcctl_ArgumentString_string;
104 static int hf_svcctl_svcctl_ChangeServiceConfig2A_info;
105 static int hf_svcctl_svcctl_ChangeServiceConfig2A_info_level;
106 static int hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle;
107 static int hf_svcctl_svcctl_ChangeServiceConfig2W_handle;
108 static int hf_svcctl_svcctl_ChangeServiceConfig2W_info;
109 static int hf_svcctl_svcctl_ChangeServiceConfig2W_info_level;
110 static int hf_svcctl_svcctl_ChangeServiceConfigA_binary_path;
111 static int hf_svcctl_svcctl_ChangeServiceConfigA_dependencies;
112 static int hf_svcctl_svcctl_ChangeServiceConfigA_display_name;
113 static int hf_svcctl_svcctl_ChangeServiceConfigA_error_control;
114 static int hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group;
115 static int hf_svcctl_svcctl_ChangeServiceConfigA_password;
116 static int hf_svcctl_svcctl_ChangeServiceConfigA_service_handle;
117 static int hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name;
118 static int hf_svcctl_svcctl_ChangeServiceConfigA_service_type;
119 static int hf_svcctl_svcctl_ChangeServiceConfigA_start_type;
120 static int hf_svcctl_svcctl_ChangeServiceConfigA_tag_id;
121 static int hf_svcctl_svcctl_ChangeServiceConfigW_binary_path;
122 static int hf_svcctl_svcctl_ChangeServiceConfigW_dependencies;
123 static int hf_svcctl_svcctl_ChangeServiceConfigW_display_name;
124 static int hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize;
125 static int hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize;
126 static int hf_svcctl_svcctl_ChangeServiceConfigW_error_control;
127 static int hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group;
128 static int hf_svcctl_svcctl_ChangeServiceConfigW_password;
129 static int hf_svcctl_svcctl_ChangeServiceConfigW_service_handle;
130 static int hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name;
131 static int hf_svcctl_svcctl_ChangeServiceConfigW_service_type;
132 static int hf_svcctl_svcctl_ChangeServiceConfigW_start_type;
133 static int hf_svcctl_svcctl_ChangeServiceConfigW_tag_id;
134 static int hf_svcctl_svcctl_CloseServiceHandle_object_handle;
135 static int hf_svcctl_svcctl_ControlService_control;
136 static int hf_svcctl_svcctl_ControlService_service_handle;
137 static int hf_svcctl_svcctl_ControlService_service_status;
138 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE;
139 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE;
140 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE;
141 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE;
142 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT;
143 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN;
144 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE;
145 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN;
146 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP;
147 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE;
148 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT;
149 static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT;
150 static int hf_svcctl_svcctl_CreateServiceA_DisplayName;
151 static int hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey;
152 static int hf_svcctl_svcctl_CreateServiceA_ServiceName;
153 static int hf_svcctl_svcctl_CreateServiceA_binary_path;
154 static int hf_svcctl_svcctl_CreateServiceA_dependencies;
155 static int hf_svcctl_svcctl_CreateServiceA_dependencies_size;
156 static int hf_svcctl_svcctl_CreateServiceA_desired_access;
157 static int hf_svcctl_svcctl_CreateServiceA_error_control;
158 static int hf_svcctl_svcctl_CreateServiceA_password;
159 static int hf_svcctl_svcctl_CreateServiceA_password_size;
160 static int hf_svcctl_svcctl_CreateServiceA_scm_handle;
161 static int hf_svcctl_svcctl_CreateServiceA_service_handle;
162 static int hf_svcctl_svcctl_CreateServiceA_service_start_name;
163 static int hf_svcctl_svcctl_CreateServiceA_service_type;
164 static int hf_svcctl_svcctl_CreateServiceA_start_type;
165 static int hf_svcctl_svcctl_CreateServiceA_tag_id;
166 static int hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName;
167 static int hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey;
168 static int hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName;
169 static int hf_svcctl_svcctl_CreateServiceWOW64A_binary_path;
170 static int hf_svcctl_svcctl_CreateServiceWOW64A_dependencies;
171 static int hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size;
172 static int hf_svcctl_svcctl_CreateServiceWOW64A_desired_access;
173 static int hf_svcctl_svcctl_CreateServiceWOW64A_error_control;
174 static int hf_svcctl_svcctl_CreateServiceWOW64A_handle;
175 static int hf_svcctl_svcctl_CreateServiceWOW64A_password;
176 static int hf_svcctl_svcctl_CreateServiceWOW64A_password_size;
177 static int hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle;
178 static int hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name;
179 static int hf_svcctl_svcctl_CreateServiceWOW64A_service_type;
180 static int hf_svcctl_svcctl_CreateServiceWOW64A_start_type;
181 static int hf_svcctl_svcctl_CreateServiceWOW64A_tag_id;
182 static int hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName;
183 static int hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey;
184 static int hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName;
185 static int hf_svcctl_svcctl_CreateServiceWOW64W_binary_path;
186 static int hf_svcctl_svcctl_CreateServiceWOW64W_dependencies;
187 static int hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size;
188 static int hf_svcctl_svcctl_CreateServiceWOW64W_desired_access;
189 static int hf_svcctl_svcctl_CreateServiceWOW64W_error_control;
190 static int hf_svcctl_svcctl_CreateServiceWOW64W_handle;
191 static int hf_svcctl_svcctl_CreateServiceWOW64W_password;
192 static int hf_svcctl_svcctl_CreateServiceWOW64W_password_size;
193 static int hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle;
194 static int hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name;
195 static int hf_svcctl_svcctl_CreateServiceWOW64W_service_type;
196 static int hf_svcctl_svcctl_CreateServiceWOW64W_start_type;
197 static int hf_svcctl_svcctl_CreateServiceWOW64W_tag_id;
198 static int hf_svcctl_svcctl_CreateServiceW_DisplayName;
199 static int hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup;
200 static int hf_svcctl_svcctl_CreateServiceW_ServiceName;
201 static int hf_svcctl_svcctl_CreateServiceW_binary_path;
202 static int hf_svcctl_svcctl_CreateServiceW_dependencies;
203 static int hf_svcctl_svcctl_CreateServiceW_dependencies_size;
204 static int hf_svcctl_svcctl_CreateServiceW_desired_access;
205 static int hf_svcctl_svcctl_CreateServiceW_error_control;
206 static int hf_svcctl_svcctl_CreateServiceW_password;
207 static int hf_svcctl_svcctl_CreateServiceW_password_size;
208 static int hf_svcctl_svcctl_CreateServiceW_scm_handle;
209 static int hf_svcctl_svcctl_CreateServiceW_service_handle;
210 static int hf_svcctl_svcctl_CreateServiceW_service_start_name;
211 static int hf_svcctl_svcctl_CreateServiceW_service_type;
212 static int hf_svcctl_svcctl_CreateServiceW_start_type;
213 static int hf_svcctl_svcctl_CreateServiceW_tag_id;
214 static int hf_svcctl_svcctl_CreateWowService_DisplayName;
215 static int hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey;
216 static int hf_svcctl_svcctl_CreateWowService_ServiceName;
217 static int hf_svcctl_svcctl_CreateWowService_binary_path;
218 static int hf_svcctl_svcctl_CreateWowService_dependencies;
219 static int hf_svcctl_svcctl_CreateWowService_dependencies_size;
220 static int hf_svcctl_svcctl_CreateWowService_desired_access;
221 static int hf_svcctl_svcctl_CreateWowService_error_control;
222 static int hf_svcctl_svcctl_CreateWowService_handle;
223 static int hf_svcctl_svcctl_CreateWowService_password;
224 static int hf_svcctl_svcctl_CreateWowService_password_size;
225 static int hf_svcctl_svcctl_CreateWowService_scm_handle;
226 static int hf_svcctl_svcctl_CreateWowService_service_start_name;
227 static int hf_svcctl_svcctl_CreateWowService_service_type;
228 static int hf_svcctl_svcctl_CreateWowService_service_wow_type;
229 static int hf_svcctl_svcctl_CreateWowService_start_type;
230 static int hf_svcctl_svcctl_CreateWowService_tag_id;
231 static int hf_svcctl_svcctl_DeleteService_service_handle;
232 static int hf_svcctl_svcctl_EnumDependentServicesA_needed;
233 static int hf_svcctl_svcctl_EnumDependentServicesA_offered;
234 static int hf_svcctl_svcctl_EnumDependentServicesA_service_handle;
235 static int hf_svcctl_svcctl_EnumDependentServicesA_service_status;
236 static int hf_svcctl_svcctl_EnumDependentServicesA_services_returned;
237 static int hf_svcctl_svcctl_EnumDependentServicesA_state;
238 static int hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded;
239 static int hf_svcctl_svcctl_EnumDependentServicesW_offered;
240 static int hf_svcctl_svcctl_EnumDependentServicesW_service_handle;
241 static int hf_svcctl_svcctl_EnumDependentServicesW_service_state;
242 static int hf_svcctl_svcctl_EnumDependentServicesW_service_status;
243 static int hf_svcctl_svcctl_EnumDependentServicesW_services_returned;
244 static int hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex;
245 static int hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize;
246 static int hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer;
247 static int hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned;
248 static int hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded;
249 static int hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName;
250 static int hf_svcctl_svcctl_EnumServiceGroupW_scm_handle;
251 static int hf_svcctl_svcctl_EnumServiceGroupW_service_state;
252 static int hf_svcctl_svcctl_EnumServiceGroupW_service_type;
253 static int hf_svcctl_svcctl_EnumServicesStatusA_needed;
254 static int hf_svcctl_svcctl_EnumServicesStatusA_offered;
255 static int hf_svcctl_svcctl_EnumServicesStatusA_resume_handle;
256 static int hf_svcctl_svcctl_EnumServicesStatusA_scm_handle;
257 static int hf_svcctl_svcctl_EnumServicesStatusA_service;
258 static int hf_svcctl_svcctl_EnumServicesStatusA_service_state;
259 static int hf_svcctl_svcctl_EnumServicesStatusA_service_type;
260 static int hf_svcctl_svcctl_EnumServicesStatusA_services_returned;
261 static int hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed;
262 static int hf_svcctl_svcctl_EnumServicesStatusW_offered;
263 static int hf_svcctl_svcctl_EnumServicesStatusW_resume_index;
264 static int hf_svcctl_svcctl_EnumServicesStatusW_scm_handle;
265 static int hf_svcctl_svcctl_EnumServicesStatusW_service_state;
266 static int hf_svcctl_svcctl_EnumServicesStatusW_service_type;
267 static int hf_svcctl_svcctl_EnumServicesStatusW_services;
268 static int hf_svcctl_svcctl_EnumServicesStatusW_services_returned;
269 static int hf_svcctl_svcctl_GetCurrentGroupeStateW_handle;
270 static int hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup;
271 static int hf_svcctl_svcctl_GetCurrentGroupeStateW_state;
272 static int hf_svcctl_svcctl_GetServiceDisplayNameA_display_name;
273 static int hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length;
274 static int hf_svcctl_svcctl_GetServiceDisplayNameA_handle;
275 static int hf_svcctl_svcctl_GetServiceDisplayNameA_service_name;
276 static int hf_svcctl_svcctl_GetServiceDisplayNameW_display_name;
277 static int hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length;
278 static int hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle;
279 static int hf_svcctl_svcctl_GetServiceDisplayNameW_service_name;
280 static int hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length;
281 static int hf_svcctl_svcctl_GetServiceKeyNameA_key_name;
282 static int hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle;
283 static int hf_svcctl_svcctl_GetServiceKeyNameA_service_name;
284 static int hf_svcctl_svcctl_GetServiceKeyNameW_display_name;
285 static int hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle;
286 static int hf_svcctl_svcctl_GetServiceKeyNameW_service_name;
287 static int hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length;
288 static int hf_svcctl_svcctl_LockServiceDatabase_lock_handle;
289 static int hf_svcctl_svcctl_LockServiceDatabase_scm_handle;
290 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS;
291 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT;
292 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE;
293 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE;
294 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK;
295 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG;
296 static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS;
297 static int hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable;
298 static int hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name;
299 static int hf_svcctl_svcctl_OpenSCManager2_database_name;
300 static int hf_svcctl_svcctl_OpenSCManager2_desired_access;
301 static int hf_svcctl_svcctl_OpenSCManager2_handle;
302 static int hf_svcctl_svcctl_OpenSCManagerA_DatabaseName;
303 static int hf_svcctl_svcctl_OpenSCManagerA_MachineName;
304 static int hf_svcctl_svcctl_OpenSCManagerA_access_mask;
305 static int hf_svcctl_svcctl_OpenSCManagerA_scm_handle;
306 static int hf_svcctl_svcctl_OpenSCManagerW_DatabaseName;
307 static int hf_svcctl_svcctl_OpenSCManagerW_MachineName;
308 static int hf_svcctl_svcctl_OpenSCManagerW_access_mask;
309 static int hf_svcctl_svcctl_OpenSCManagerW_scm_handle;
310 static int hf_svcctl_svcctl_OpenServiceA_ServiceName;
311 static int hf_svcctl_svcctl_OpenServiceA_access_mask;
312 static int hf_svcctl_svcctl_OpenServiceA_scm_handle;
313 static int hf_svcctl_svcctl_OpenServiceA_service_handle;
314 static int hf_svcctl_svcctl_OpenServiceW_ServiceName;
315 static int hf_svcctl_svcctl_OpenServiceW_access_mask;
316 static int hf_svcctl_svcctl_OpenServiceW_scm_handle;
317 static int hf_svcctl_svcctl_OpenServiceW_service_handle;
318 static int hf_svcctl_svcctl_QueryServiceConfig2A_buffer;
319 static int hf_svcctl_svcctl_QueryServiceConfig2A_handle;
320 static int hf_svcctl_svcctl_QueryServiceConfig2A_info_level;
321 static int hf_svcctl_svcctl_QueryServiceConfig2A_needed;
322 static int hf_svcctl_svcctl_QueryServiceConfig2A_offered;
323 static int hf_svcctl_svcctl_QueryServiceConfig2W_buffer;
324 static int hf_svcctl_svcctl_QueryServiceConfig2W_handle;
325 static int hf_svcctl_svcctl_QueryServiceConfig2W_info_level;
326 static int hf_svcctl_svcctl_QueryServiceConfig2W_needed;
327 static int hf_svcctl_svcctl_QueryServiceConfig2W_offered;
328 static int hf_svcctl_svcctl_QueryServiceConfigA_needed;
329 static int hf_svcctl_svcctl_QueryServiceConfigA_offered;
330 static int hf_svcctl_svcctl_QueryServiceConfigA_query;
331 static int hf_svcctl_svcctl_QueryServiceConfigA_service_handle;
332 static int hf_svcctl_svcctl_QueryServiceConfigEx_info_level;
333 static int hf_svcctl_svcctl_QueryServiceConfigEx_service_handle;
334 static int hf_svcctl_svcctl_QueryServiceConfigW_needed;
335 static int hf_svcctl_svcctl_QueryServiceConfigW_offered;
336 static int hf_svcctl_svcctl_QueryServiceConfigW_service_config;
337 static int hf_svcctl_svcctl_QueryServiceConfigW_service_handle;
338 static int hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status;
339 static int hf_svcctl_svcctl_QueryServiceLockStatusA_needed;
340 static int hf_svcctl_svcctl_QueryServiceLockStatusA_offered;
341 static int hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle;
342 static int hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status;
343 static int hf_svcctl_svcctl_QueryServiceLockStatusW_needed;
344 static int hf_svcctl_svcctl_QueryServiceLockStatusW_offered;
345 static int hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle;
346 static int hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed;
347 static int hf_svcctl_svcctl_QueryServiceObjectSecurity_offered;
348 static int hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor;
349 static int hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags;
350 static int hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle;
351 static int hf_svcctl_svcctl_QueryServiceStatusEx_buffer;
352 static int hf_svcctl_svcctl_QueryServiceStatusEx_handle;
353 static int hf_svcctl_svcctl_QueryServiceStatusEx_info_level;
354 static int hf_svcctl_svcctl_QueryServiceStatusEx_needed;
355 static int hf_svcctl_svcctl_QueryServiceStatusEx_offered;
356 static int hf_svcctl_svcctl_QueryServiceStatus_service_handle;
357 static int hf_svcctl_svcctl_QueryServiceStatus_service_status;
358 static int hf_svcctl_svcctl_SCSetServiceBitsA_handle;
359 static int hf_svcctl_svcctl_SCSetServiceBitsA_lpString;
360 static int hf_svcctl_svcctl_SCSetServiceBitsA_service_bits;
361 static int hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on;
362 static int hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately;
363 static int hf_svcctl_svcctl_SCSetServiceBitsW_lpString;
364 static int hf_svcctl_svcctl_SCSetServiceBitsW_service_bits;
365 static int hf_svcctl_svcctl_SCSetServiceBitsW_service_handle;
366 static int hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on;
367 static int hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately;
368 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG;
369 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS;
370 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE;
371 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE;
372 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG;
373 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS;
374 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START;
375 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP;
376 static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL;
377 static int hf_svcctl_svcctl_SetServiceObjectSecurity_offered;
378 static int hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor;
379 static int hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags;
380 static int hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle;
381 static int hf_svcctl_svcctl_SetServiceStatus_service_handle;
382 static int hf_svcctl_svcctl_SetServiceStatus_service_status;
383 static int hf_svcctl_svcctl_StartServiceA_Arguments;
384 static int hf_svcctl_svcctl_StartServiceA_NumArgs;
385 static int hf_svcctl_svcctl_StartServiceA_service_handle;
386 static int hf_svcctl_svcctl_StartServiceW_Arguments;
387 static int hf_svcctl_svcctl_StartServiceW_NumArgs;
388 static int hf_svcctl_svcctl_StartServiceW_service_handle;
389 static int hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle;
390 static int hf_svcctl_werror;
392 static int proto_dcerpc_svcctl;
393 /* Version information */
396 static e_guid_t uuid_dcerpc_svcctl = {
397 0x367abb81, 0x9844, 0x35f1,
398 { 0xad, 0x32, 0x98, 0xf0, 0x38, 0x00, 0x10, 0x03 }
400 static uint16_t ver_dcerpc_svcctl = 2;
402 static int svcctl_dissect_element_SERVICE_LOCK_STATUS_is_locked(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 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner(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 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner_(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 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_duration(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
406 const value_string svcctl_svcctl_ServiceStatus_vals[] = {
407 { SVCCTL_STOPPED, "SVCCTL_STOPPED" },
408 { SVCCTL_START_PENDING, "SVCCTL_START_PENDING" },
409 { SVCCTL_STOP_PENDING, "SVCCTL_STOP_PENDING" },
410 { SVCCTL_RUNNING, "SVCCTL_RUNNING" },
411 { SVCCTL_CONTINUE_PENDING, "SVCCTL_CONTINUE_PENDING" },
412 { SVCCTL_PAUSE_PENDING, "SVCCTL_PAUSE_PENDING" },
413 { SVCCTL_PAUSED, "SVCCTL_PAUSED" },
414 { 0, NULL }
416 const value_string svcctl_svcctl_ServiceType_vals[] = {
417 { SERVICE_TYPE_KERNEL_DRIVER, "SERVICE_TYPE_KERNEL_DRIVER" },
418 { SERVICE_TYPE_FS_DRIVER, "SERVICE_TYPE_FS_DRIVER" },
419 { SERVICE_TYPE_ADAPTER, "SERVICE_TYPE_ADAPTER" },
420 { SERVICE_TYPE_RECOGNIZER_DRIVER, "SERVICE_TYPE_RECOGNIZER_DRIVER" },
421 { SERVICE_TYPE_DRIVER, "SERVICE_TYPE_DRIVER" },
422 { SERVICE_TYPE_WIN32_OWN_PROCESS, "SERVICE_TYPE_WIN32_OWN_PROCESS" },
423 { SERVICE_TYPE_WIN32_SHARE_PROCESS, "SERVICE_TYPE_WIN32_SHARE_PROCESS" },
424 { SERVICE_TYPE_USER_OWN_PROCESS, "SERVICE_TYPE_USER_OWN_PROCESS" },
425 { SERVICE_TYPE_USER_SHARE_PROCESS, "SERVICE_TYPE_USER_SHARE_PROCESS" },
426 { SERVICE_TYPE_WIN32, "SERVICE_TYPE_WIN32" },
427 { SERVICE_TYPE_INTERACTIVE_PROCESS, "SERVICE_TYPE_INTERACTIVE_PROCESS" },
428 { 0, NULL }
430 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP_tfs = {
431 "SERVICE_ACCEPT_STOP is SET",
432 "SERVICE_ACCEPT_STOP is NOT SET",
434 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE_tfs = {
435 "SERVICE_ACCEPT_PAUSE_CONTINUE is SET",
436 "SERVICE_ACCEPT_PAUSE_CONTINUE is NOT SET",
438 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN_tfs = {
439 "SERVICE_ACCEPT_SHUTDOWN is SET",
440 "SERVICE_ACCEPT_SHUTDOWN is NOT SET",
442 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE_tfs = {
443 "SERVICE_ACCEPT_PARAMCHANGE is SET",
444 "SERVICE_ACCEPT_PARAMCHANGE is NOT SET",
446 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE_tfs = {
447 "SERVICE_ACCEPT_NETBINDCHANGE is SET",
448 "SERVICE_ACCEPT_NETBINDCHANGE is NOT SET",
450 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE_tfs = {
451 "SERVICE_ACCEPT_HARDWAREPROFILECHANGE is SET",
452 "SERVICE_ACCEPT_HARDWAREPROFILECHANGE is NOT SET",
454 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT_tfs = {
455 "SERVICE_ACCEPT_POWEREVENT is SET",
456 "SERVICE_ACCEPT_POWEREVENT is NOT SET",
458 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE_tfs = {
459 "SERVICE_ACCEPT_SESSIONCHANGE is SET",
460 "SERVICE_ACCEPT_SESSIONCHANGE is NOT SET",
462 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN_tfs = {
463 "SERVICE_ACCEPT_PRESHUTDOWN is SET",
464 "SERVICE_ACCEPT_PRESHUTDOWN is NOT SET",
466 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE_tfs = {
467 "SERVICE_ACCEPT_TIMECHANGE is SET",
468 "SERVICE_ACCEPT_TIMECHANGE is NOT SET",
470 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT_tfs = {
471 "SERVICE_ACCEPT_TRIGGEREVENT is SET",
472 "SERVICE_ACCEPT_TRIGGEREVENT is NOT SET",
474 static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT_tfs = {
475 "SERVICE_ACCEPT_USERMODEREBOOT is SET",
476 "SERVICE_ACCEPT_USERMODEREBOOT is NOT SET",
478 static int svcctl_dissect_element_SERVICE_STATUS_type(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 svcctl_dissect_element_SERVICE_STATUS_state(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 svcctl_dissect_element_SERVICE_STATUS_controls_accepted(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 svcctl_dissect_element_SERVICE_STATUS_win32_exit_code(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 svcctl_dissect_element_SERVICE_STATUS_service_exit_code(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 svcctl_dissect_element_SERVICE_STATUS_check_point(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 svcctl_dissect_element_SERVICE_STATUS_wait_hint(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
485 const value_string svcctl_svcctl_ServiceFlags_vals[] = {
486 { SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING, "SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING" },
487 { SERVICE_RUNS_IN_SYSTEM_PROCESS, "SERVICE_RUNS_IN_SYSTEM_PROCESS" },
488 { 0, NULL }
490 static int svcctl_dissect_element_SERVICE_STATUS_PROCESS_type(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_state(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_controls_accepted(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_win32_exit_code(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_exit_code(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_check_point(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_wait_hint(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_process_id(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 svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_flags(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 svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name(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 svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_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 svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_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 svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name_(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 svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(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 svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name(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 svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name_(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 svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name(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 svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name_(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 svcctl_dissect_element_ENUM_SERVICE_STATUSA_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
509 const value_string svcctl_SERVICE_CONTROL_vals[] = {
510 { SVCCTL_CONTROL_STOP, "SVCCTL_CONTROL_STOP" },
511 { SVCCTL_CONTROL_PAUSE, "SVCCTL_CONTROL_PAUSE" },
512 { SVCCTL_CONTROL_CONTINUE, "SVCCTL_CONTROL_CONTINUE" },
513 { SVCCTL_CONTROL_INTERROGATE, "SVCCTL_CONTROL_INTERROGATE" },
514 { SVCCTL_CONTROL_SHUTDOWN, "SVCCTL_CONTROL_SHUTDOWN" },
515 { SERVICE_CONTROL_PARAMCHANGE, "SERVICE_CONTROL_PARAMCHANGE" },
516 { SERVICE_CONTROL_NETBINDADD, "SERVICE_CONTROL_NETBINDADD" },
517 { SERVICE_CONTROL_NETBINDREMOVE, "SERVICE_CONTROL_NETBINDREMOVE" },
518 { SERVICE_CONTROL_NETBINDENABLE, "SERVICE_CONTROL_NETBINDENABLE" },
519 { SERVICE_CONTROL_NETBINDDISABLE, "SERVICE_CONTROL_NETBINDDISABLE" },
520 { 0, NULL }
522 const value_string svcctl_svcctl_ErrorControl_vals[] = {
523 { SVCCTL_SVC_ERROR_IGNORE, "SVCCTL_SVC_ERROR_IGNORE" },
524 { SVCCTL_SVC_ERROR_NORMAL, "SVCCTL_SVC_ERROR_NORMAL" },
525 { SVCCTL_SVC_ERROR_CRITICAL, "SVCCTL_SVC_ERROR_CRITICAL" },
526 { SVCCTL_SVC_ERROR_SEVERE, "SVCCTL_SVC_ERROR_SEVERE" },
527 { 0, NULL }
529 const value_string svcctl_svcctl_StartType_vals[] = {
530 { SVCCTL_BOOT_START, "SVCCTL_BOOT_START" },
531 { SVCCTL_SYSTEM_START, "SVCCTL_SYSTEM_START" },
532 { SVCCTL_AUTO_START, "SVCCTL_AUTO_START" },
533 { SVCCTL_DEMAND_START, "SVCCTL_DEMAND_START" },
534 { SVCCTL_DISABLED, "SVCCTL_DISABLED" },
535 { 0, NULL }
537 const value_string svcctl_svcctl_ServiceState_vals[] = {
538 { SERVICE_STATE_ACTIVE, "SERVICE_STATE_ACTIVE" },
539 { SERVICE_STATE_INACTIVE, "SERVICE_STATE_INACTIVE" },
540 { SERVICE_STATE_ALL, "SERVICE_STATE_ALL" },
541 { 0, NULL }
543 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT_tfs = {
544 "SC_RIGHT_MGR_CONNECT is SET",
545 "SC_RIGHT_MGR_CONNECT is NOT SET",
547 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE_tfs = {
548 "SC_RIGHT_MGR_CREATE_SERVICE is SET",
549 "SC_RIGHT_MGR_CREATE_SERVICE is NOT SET",
551 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE_tfs = {
552 "SC_RIGHT_MGR_ENUMERATE_SERVICE is SET",
553 "SC_RIGHT_MGR_ENUMERATE_SERVICE is NOT SET",
555 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK_tfs = {
556 "SC_RIGHT_MGR_LOCK is SET",
557 "SC_RIGHT_MGR_LOCK is NOT SET",
559 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS_tfs = {
560 "SC_RIGHT_MGR_QUERY_LOCK_STATUS is SET",
561 "SC_RIGHT_MGR_QUERY_LOCK_STATUS is NOT SET",
563 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG_tfs = {
564 "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG is SET",
565 "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG is NOT SET",
567 static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS_tfs = {
568 "SC_RIGHT_MGR_ALL_ACCESS is SET",
569 "SC_RIGHT_MGR_ALL_ACCESS is NOT SET",
571 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG_tfs = {
572 "SC_RIGHT_SVC_QUERY_CONFIG is SET",
573 "SC_RIGHT_SVC_QUERY_CONFIG is NOT SET",
575 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG_tfs = {
576 "SC_RIGHT_SVC_CHANGE_CONFIG is SET",
577 "SC_RIGHT_SVC_CHANGE_CONFIG is NOT SET",
579 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS_tfs = {
580 "SC_RIGHT_SVC_QUERY_STATUS is SET",
581 "SC_RIGHT_SVC_QUERY_STATUS is NOT SET",
583 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS_tfs = {
584 "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS is SET",
585 "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS is NOT SET",
587 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_START_tfs = {
588 "SC_RIGHT_SVC_START is SET",
589 "SC_RIGHT_SVC_START is NOT SET",
591 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP_tfs = {
592 "SC_RIGHT_SVC_STOP is SET",
593 "SC_RIGHT_SVC_STOP is NOT SET",
595 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE_tfs = {
596 "SC_RIGHT_SVC_PAUSE_CONTINUE is SET",
597 "SC_RIGHT_SVC_PAUSE_CONTINUE is NOT SET",
599 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE_tfs = {
600 "SC_RIGHT_SVC_INTERROGATE is SET",
601 "SC_RIGHT_SVC_INTERROGATE is NOT SET",
603 static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL_tfs = {
604 "SC_RIGHT_SVC_USER_DEFINED_CONTROL is SET",
605 "SC_RIGHT_SVC_USER_DEFINED_CONTROL is NOT SET",
607 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
608 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
609 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
610 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
611 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
612 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
613 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
614 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
615 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
616 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
617 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
618 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
619 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
620 static int svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
621 static int svcctl_dissect_element_ArgumentString_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
622 static int svcctl_dissect_element_ArgumentString_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
623 static int svcctl_dissect_element_ArgumentStringA_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
624 static int svcctl_dissect_element_ArgumentStringA_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
625 const value_string svcctl_svcctl_ConfigLevel_vals[] = {
626 { SERVICE_CONFIG_DESCRIPTION, "SERVICE_CONFIG_DESCRIPTION" },
627 { SERVICE_CONFIG_FAILURE_ACTIONS, "SERVICE_CONFIG_FAILURE_ACTIONS" },
628 { 0, NULL }
630 const value_string svcctl_svcctl_StatusLevel_vals[] = {
631 { SVC_STATUS_PROCESS_INFO, "SVC_STATUS_PROCESS_INFO" },
632 { 0, NULL }
634 static int svcctl_dissect_element_CloseServiceHandle_object_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
635 static int svcctl_dissect_element_CloseServiceHandle_object_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
636 static int svcctl_dissect_element_ControlService_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
637 static int svcctl_dissect_element_ControlService_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
638 static int svcctl_dissect_element_ControlService_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
639 static int svcctl_dissect_element_ControlService_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
640 static int svcctl_dissect_element_ControlService_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
641 static int svcctl_dissect_element_DeleteService_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
642 static int svcctl_dissect_element_DeleteService_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
643 static int svcctl_dissect_element_LockServiceDatabase_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
644 static int svcctl_dissect_element_LockServiceDatabase_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
645 static int svcctl_dissect_element_LockServiceDatabase_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
646 static int svcctl_dissect_element_LockServiceDatabase_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
647 static int svcctl_dissect_element_QueryServiceObjectSecurity_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
648 static int svcctl_dissect_element_QueryServiceObjectSecurity_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
649 static int svcctl_dissect_element_QueryServiceObjectSecurity_security_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
650 static int svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
651 static int svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
652 static int svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
653 static int svcctl_dissect_element_QueryServiceObjectSecurity_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
654 static int svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
655 static int svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
656 static int svcctl_dissect_element_SetServiceObjectSecurity_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
657 static int svcctl_dissect_element_SetServiceObjectSecurity_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
658 static int svcctl_dissect_element_SetServiceObjectSecurity_security_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
659 static int svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
660 static int svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
661 static int svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
662 static int svcctl_dissect_element_SetServiceObjectSecurity_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
663 static int svcctl_dissect_element_QueryServiceStatus_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
664 static int svcctl_dissect_element_QueryServiceStatus_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
665 static int svcctl_dissect_element_QueryServiceStatus_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
666 static int svcctl_dissect_element_QueryServiceStatus_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
667 static int svcctl_dissect_element_SetServiceStatus_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
668 static int svcctl_dissect_element_SetServiceStatus_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
669 static int svcctl_dissect_element_SetServiceStatus_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
670 static int svcctl_dissect_element_SetServiceStatus_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
671 static int svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
672 static int svcctl_dissect_element_UnlockServiceDatabase_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
673 static int svcctl_dissect_element_NotifyBootConfigStatus_machine_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
674 static int svcctl_dissect_element_NotifyBootConfigStatus_machine_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
675 static int svcctl_dissect_element_NotifyBootConfigStatus_boot_acceptable(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
676 static int svcctl_dissect_element_SCSetServiceBitsW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
677 static int svcctl_dissect_element_SCSetServiceBitsW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
678 static int svcctl_dissect_element_SCSetServiceBitsW_service_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
679 static int svcctl_dissect_element_SCSetServiceBitsW_set_bits_on(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
680 static int svcctl_dissect_element_SCSetServiceBitsW_update_immediately(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
681 static int svcctl_dissect_element_SCSetServiceBitsW_lpString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
682 static int svcctl_dissect_element_SCSetServiceBitsW_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
683 static int svcctl_dissect_element_ChangeServiceConfigW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
684 static int svcctl_dissect_element_ChangeServiceConfigW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
685 static int svcctl_dissect_element_ChangeServiceConfigW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
686 static int svcctl_dissect_element_ChangeServiceConfigW_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
687 static int svcctl_dissect_element_ChangeServiceConfigW_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
688 static int svcctl_dissect_element_ChangeServiceConfigW_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
689 static int svcctl_dissect_element_ChangeServiceConfigW_binary_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
690 static int svcctl_dissect_element_ChangeServiceConfigW_load_order_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
691 static int svcctl_dissect_element_ChangeServiceConfigW_load_order_group_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
692 static int svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
693 static int svcctl_dissect_element_ChangeServiceConfigW_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
694 static int svcctl_dissect_element_ChangeServiceConfigW_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
695 static int svcctl_dissect_element_ChangeServiceConfigW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
696 static int svcctl_dissect_element_ChangeServiceConfigW_dwDependSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
697 static int svcctl_dissect_element_ChangeServiceConfigW_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
698 static int svcctl_dissect_element_ChangeServiceConfigW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
699 static int svcctl_dissect_element_ChangeServiceConfigW_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
700 static int svcctl_dissect_element_ChangeServiceConfigW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
701 static int svcctl_dissect_element_ChangeServiceConfigW_dwPwSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
702 static int svcctl_dissect_element_ChangeServiceConfigW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
703 static int svcctl_dissect_element_ChangeServiceConfigW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
704 static int svcctl_dissect_element_CreateServiceW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
705 static int svcctl_dissect_element_CreateServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
706 static int svcctl_dissect_element_CreateServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
707 static int svcctl_dissect_element_CreateServiceW_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
708 static int svcctl_dissect_element_CreateServiceW_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
709 static int svcctl_dissect_element_CreateServiceW_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
710 static int svcctl_dissect_element_CreateServiceW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
711 static int svcctl_dissect_element_CreateServiceW_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
712 static int svcctl_dissect_element_CreateServiceW_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
713 static int svcctl_dissect_element_CreateServiceW_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
714 static int svcctl_dissect_element_CreateServiceW_LoadOrderGroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
715 static int svcctl_dissect_element_CreateServiceW_LoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
716 static int svcctl_dissect_element_CreateServiceW_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
717 static int svcctl_dissect_element_CreateServiceW_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
718 static int svcctl_dissect_element_CreateServiceW_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
719 static int svcctl_dissect_element_CreateServiceW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
720 static int svcctl_dissect_element_CreateServiceW_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
721 static int svcctl_dissect_element_CreateServiceW_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
722 static int svcctl_dissect_element_CreateServiceW_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
723 static int svcctl_dissect_element_CreateServiceW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
724 static int svcctl_dissect_element_CreateServiceW_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
725 static int svcctl_dissect_element_CreateServiceW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
726 static int svcctl_dissect_element_CreateServiceW_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
727 static int svcctl_dissect_element_CreateServiceW_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
728 static int svcctl_dissect_element_CreateServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
729 static int svcctl_dissect_element_CreateServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
730 static int svcctl_dissect_element_EnumDependentServicesW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
731 static int svcctl_dissect_element_EnumDependentServicesW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
732 static int svcctl_dissect_element_EnumDependentServicesW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
733 static int svcctl_dissect_element_EnumDependentServicesW_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
734 static int svcctl_dissect_element_EnumDependentServicesW_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
735 static int svcctl_dissect_element_EnumDependentServicesW_service_status__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
736 static int svcctl_dissect_element_EnumDependentServicesW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
737 static int svcctl_dissect_element_EnumDependentServicesW_bytesneeded(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
738 static int svcctl_dissect_element_EnumDependentServicesW_bytesneeded_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
739 static int svcctl_dissect_element_EnumDependentServicesW_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
740 static int svcctl_dissect_element_EnumDependentServicesW_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
741 static int svcctl_dissect_element_EnumServicesStatusW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
742 static int svcctl_dissect_element_EnumServicesStatusW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
743 static int svcctl_dissect_element_EnumServicesStatusW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
744 static int svcctl_dissect_element_EnumServicesStatusW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
745 static int svcctl_dissect_element_EnumServicesStatusW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
746 static int svcctl_dissect_element_EnumServicesStatusW_resume_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
747 static int svcctl_dissect_element_EnumServicesStatusW_resume_index_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
748 static int svcctl_dissect_element_OpenSCManagerW_MachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
749 static int svcctl_dissect_element_OpenSCManagerW_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
750 static int svcctl_dissect_element_OpenSCManagerW_DatabaseName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
751 static int svcctl_dissect_element_OpenSCManagerW_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
752 static int svcctl_dissect_element_OpenSCManagerW_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_);
753 static int svcctl_dissect_element_OpenSCManagerW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
754 static int svcctl_dissect_element_OpenSCManagerW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
755 static int svcctl_dissect_element_OpenServiceW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
756 static int svcctl_dissect_element_OpenServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
757 static int svcctl_dissect_element_OpenServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
758 static int svcctl_dissect_element_OpenServiceW_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_);
759 static int svcctl_dissect_element_OpenServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
760 static int svcctl_dissect_element_OpenServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
761 static int svcctl_dissect_element_QueryServiceConfigW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
762 static int svcctl_dissect_element_QueryServiceConfigW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
763 static int svcctl_dissect_element_QueryServiceConfigW_service_config(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
764 static int svcctl_dissect_element_QueryServiceConfigW_service_config_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
765 static int svcctl_dissect_element_QueryServiceConfigW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
766 static int svcctl_dissect_element_QueryServiceConfigW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
767 static int svcctl_dissect_element_QueryServiceConfigW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
768 static int svcctl_dissect_element_QueryServiceLockStatusW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
769 static int svcctl_dissect_element_QueryServiceLockStatusW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
770 static int svcctl_dissect_element_QueryServiceLockStatusW_lock_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
771 static int svcctl_dissect_element_QueryServiceLockStatusW_lock_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
772 static int svcctl_dissect_element_QueryServiceLockStatusW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
773 static int svcctl_dissect_element_QueryServiceLockStatusW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
774 static int svcctl_dissect_element_QueryServiceLockStatusW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
775 static int svcctl_dissect_element_StartServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
776 static int svcctl_dissect_element_StartServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
777 static int svcctl_dissect_element_StartServiceW_NumArgs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
778 static int svcctl_dissect_element_StartServiceW_Arguments(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
779 static int svcctl_dissect_element_StartServiceW_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
780 static int svcctl_dissect_element_StartServiceW_Arguments__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
781 static int svcctl_dissect_element_GetServiceDisplayNameW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
782 static int svcctl_dissect_element_GetServiceDisplayNameW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
783 static int svcctl_dissect_element_GetServiceDisplayNameW_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
784 static int svcctl_dissect_element_GetServiceDisplayNameW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
785 static int svcctl_dissect_element_GetServiceDisplayNameW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
786 static int svcctl_dissect_element_GetServiceDisplayNameW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
787 static int svcctl_dissect_element_GetServiceDisplayNameW_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
788 static int svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
789 static int svcctl_dissect_element_GetServiceDisplayNameW_display_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
790 static int svcctl_dissect_element_GetServiceKeyNameW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
791 static int svcctl_dissect_element_GetServiceKeyNameW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
792 static int svcctl_dissect_element_GetServiceKeyNameW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
793 static int svcctl_dissect_element_GetServiceKeyNameW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
794 static int svcctl_dissect_element_GetServiceKeyNameW_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
795 static int svcctl_dissect_element_GetServiceKeyNameW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
796 static int svcctl_dissect_element_GetServiceKeyNameW_service_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
797 static int svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
798 static int svcctl_dissect_element_GetServiceKeyNameW_service_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
799 static int svcctl_dissect_element_SCSetServiceBitsA_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
800 static int svcctl_dissect_element_SCSetServiceBitsA_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
801 static int svcctl_dissect_element_SCSetServiceBitsA_service_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
802 static int svcctl_dissect_element_SCSetServiceBitsA_set_bits_on(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
803 static int svcctl_dissect_element_SCSetServiceBitsA_update_immediately(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
804 static int svcctl_dissect_element_SCSetServiceBitsA_lpString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
805 static int svcctl_dissect_element_SCSetServiceBitsA_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
806 static int svcctl_dissect_element_ChangeServiceConfigA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
807 static int svcctl_dissect_element_ChangeServiceConfigA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
808 static int svcctl_dissect_element_ChangeServiceConfigA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
809 static int svcctl_dissect_element_ChangeServiceConfigA_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
810 static int svcctl_dissect_element_ChangeServiceConfigA_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
811 static int svcctl_dissect_element_ChangeServiceConfigA_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
812 static int svcctl_dissect_element_ChangeServiceConfigA_binary_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
813 static int svcctl_dissect_element_ChangeServiceConfigA_load_order_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
814 static int svcctl_dissect_element_ChangeServiceConfigA_load_order_group_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
815 static int svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
816 static int svcctl_dissect_element_ChangeServiceConfigA_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
817 static int svcctl_dissect_element_ChangeServiceConfigA_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
818 static int svcctl_dissect_element_ChangeServiceConfigA_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
819 static int svcctl_dissect_element_ChangeServiceConfigA_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
820 static int svcctl_dissect_element_ChangeServiceConfigA_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
821 static int svcctl_dissect_element_ChangeServiceConfigA_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
822 static int svcctl_dissect_element_ChangeServiceConfigA_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
823 static int svcctl_dissect_element_ChangeServiceConfigA_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
824 static int svcctl_dissect_element_ChangeServiceConfigA_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
825 static int svcctl_dissect_element_CreateServiceA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
826 static int svcctl_dissect_element_CreateServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
827 static int svcctl_dissect_element_CreateServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
828 static int svcctl_dissect_element_CreateServiceA_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
829 static int svcctl_dissect_element_CreateServiceA_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
830 static int svcctl_dissect_element_CreateServiceA_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
831 static int svcctl_dissect_element_CreateServiceA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
832 static int svcctl_dissect_element_CreateServiceA_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
833 static int svcctl_dissect_element_CreateServiceA_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
834 static int svcctl_dissect_element_CreateServiceA_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
835 static int svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
836 static int svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
837 static int svcctl_dissect_element_CreateServiceA_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
838 static int svcctl_dissect_element_CreateServiceA_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
839 static int svcctl_dissect_element_CreateServiceA_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
840 static int svcctl_dissect_element_CreateServiceA_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
841 static int svcctl_dissect_element_CreateServiceA_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
842 static int svcctl_dissect_element_CreateServiceA_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
843 static int svcctl_dissect_element_CreateServiceA_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
844 static int svcctl_dissect_element_CreateServiceA_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
845 static int svcctl_dissect_element_CreateServiceA_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
846 static int svcctl_dissect_element_CreateServiceA_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
847 static int svcctl_dissect_element_CreateServiceA_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
848 static int svcctl_dissect_element_CreateServiceA_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
849 static int svcctl_dissect_element_CreateServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
850 static int svcctl_dissect_element_CreateServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
851 static int svcctl_dissect_element_EnumDependentServicesA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
852 static int svcctl_dissect_element_EnumDependentServicesA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
853 static int svcctl_dissect_element_EnumDependentServicesA_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
854 static int svcctl_dissect_element_EnumDependentServicesA_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
855 static int svcctl_dissect_element_EnumDependentServicesA_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
856 static int svcctl_dissect_element_EnumDependentServicesA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
857 static int svcctl_dissect_element_EnumDependentServicesA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
858 static int svcctl_dissect_element_EnumDependentServicesA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
859 static int svcctl_dissect_element_EnumDependentServicesA_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
860 static int svcctl_dissect_element_EnumDependentServicesA_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
861 static int svcctl_dissect_element_EnumServicesStatusA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
862 static int svcctl_dissect_element_EnumServicesStatusA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
863 static int svcctl_dissect_element_EnumServicesStatusA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
864 static int svcctl_dissect_element_EnumServicesStatusA_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
865 static int svcctl_dissect_element_EnumServicesStatusA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
866 static int svcctl_dissect_element_EnumServicesStatusA_service(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
867 static int svcctl_dissect_element_EnumServicesStatusA_service_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
868 static int svcctl_dissect_element_EnumServicesStatusA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
869 static int svcctl_dissect_element_EnumServicesStatusA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
870 static int svcctl_dissect_element_EnumServicesStatusA_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
871 static int svcctl_dissect_element_EnumServicesStatusA_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
872 static int svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
873 static int svcctl_dissect_element_EnumServicesStatusA_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
874 static int svcctl_dissect_element_OpenSCManagerA_MachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
875 static int svcctl_dissect_element_OpenSCManagerA_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
876 static int svcctl_dissect_element_OpenSCManagerA_DatabaseName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
877 static int svcctl_dissect_element_OpenSCManagerA_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
878 static int svcctl_dissect_element_OpenSCManagerA_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_);
879 static int svcctl_dissect_element_OpenSCManagerA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
880 static int svcctl_dissect_element_OpenSCManagerA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
881 static int svcctl_dissect_element_OpenServiceA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
882 static int svcctl_dissect_element_OpenServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
883 static int svcctl_dissect_element_OpenServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
884 static int svcctl_dissect_element_OpenServiceA_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_);
885 static int svcctl_dissect_element_OpenServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
886 static int svcctl_dissect_element_OpenServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
887 static int svcctl_dissect_element_QueryServiceConfigA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
888 static int svcctl_dissect_element_QueryServiceConfigA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
889 static int svcctl_dissect_element_QueryServiceConfigA_query(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
890 static int svcctl_dissect_element_QueryServiceConfigA_query_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
891 static int svcctl_dissect_element_QueryServiceConfigA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
892 static int svcctl_dissect_element_QueryServiceConfigA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
893 static int svcctl_dissect_element_QueryServiceConfigA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
894 static int svcctl_dissect_element_QueryServiceLockStatusA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
895 static int svcctl_dissect_element_QueryServiceLockStatusA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
896 static int svcctl_dissect_element_QueryServiceLockStatusA_lock_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
897 static int svcctl_dissect_element_QueryServiceLockStatusA_lock_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
898 static int svcctl_dissect_element_QueryServiceLockStatusA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
899 static int svcctl_dissect_element_QueryServiceLockStatusA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
900 static int svcctl_dissect_element_QueryServiceLockStatusA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
901 static int svcctl_dissect_element_StartServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
902 static int svcctl_dissect_element_StartServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
903 static int svcctl_dissect_element_StartServiceA_NumArgs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
904 static int svcctl_dissect_element_StartServiceA_Arguments(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
905 static int svcctl_dissect_element_StartServiceA_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
906 static int svcctl_dissect_element_StartServiceA_Arguments__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
907 static int svcctl_dissect_element_GetServiceDisplayNameA_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
908 static int svcctl_dissect_element_GetServiceDisplayNameA_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
909 static int svcctl_dissect_element_GetServiceDisplayNameA_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
910 static int svcctl_dissect_element_GetServiceDisplayNameA_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
911 static int svcctl_dissect_element_GetServiceDisplayNameA_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
912 static int svcctl_dissect_element_GetServiceDisplayNameA_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
913 static int svcctl_dissect_element_GetServiceDisplayNameA_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
914 static int svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
915 static int svcctl_dissect_element_GetServiceDisplayNameA_display_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
916 static int svcctl_dissect_element_GetServiceKeyNameA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
917 static int svcctl_dissect_element_GetServiceKeyNameA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
918 static int svcctl_dissect_element_GetServiceKeyNameA_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
919 static int svcctl_dissect_element_GetServiceKeyNameA_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
920 static int svcctl_dissect_element_GetServiceKeyNameA_key_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
921 static int svcctl_dissect_element_GetServiceKeyNameA_key_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
922 static int svcctl_dissect_element_GetServiceKeyNameA_key_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
923 static int svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
924 static int svcctl_dissect_element_GetServiceKeyNameA_display_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
925 static int svcctl_dissect_element_GetCurrentGroupeStateW_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
926 static int svcctl_dissect_element_GetCurrentGroupeStateW_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
927 static int svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
928 static int svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
929 static int svcctl_dissect_element_GetCurrentGroupeStateW_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
930 static int svcctl_dissect_element_GetCurrentGroupeStateW_state_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
931 static int svcctl_dissect_element_EnumServiceGroupW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
932 static int svcctl_dissect_element_EnumServiceGroupW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
933 static int svcctl_dissect_element_EnumServiceGroupW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
934 static int svcctl_dissect_element_EnumServiceGroupW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
935 static int svcctl_dissect_element_EnumServiceGroupW_lpBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
936 static int svcctl_dissect_element_EnumServiceGroupW_lpBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
937 static int svcctl_dissect_element_EnumServiceGroupW_cbBufSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
938 static int svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
939 static int svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
940 static int svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
941 static int svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
942 static int svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
943 static int svcctl_dissect_element_EnumServiceGroupW_ResumeIndex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
944 static int svcctl_dissect_element_EnumServiceGroupW_pszGroupName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
945 static int svcctl_dissect_element_EnumServiceGroupW_pszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
946 static int svcctl_dissect_element_ChangeServiceConfig2A_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
947 static int svcctl_dissect_element_ChangeServiceConfig2A_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
948 static int svcctl_dissect_element_ChangeServiceConfig2A_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
949 static int svcctl_dissect_element_ChangeServiceConfig2A_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
950 static int svcctl_dissect_element_ChangeServiceConfig2A_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
951 static int svcctl_dissect_element_ChangeServiceConfig2W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
952 static int svcctl_dissect_element_ChangeServiceConfig2W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
953 static int svcctl_dissect_element_ChangeServiceConfig2W_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
954 static int svcctl_dissect_element_ChangeServiceConfig2W_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
955 static int svcctl_dissect_element_ChangeServiceConfig2W_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
956 static int svcctl_dissect_element_QueryServiceConfig2A_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
957 static int svcctl_dissect_element_QueryServiceConfig2A_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
958 static int svcctl_dissect_element_QueryServiceConfig2A_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
959 static int svcctl_dissect_element_QueryServiceConfig2A_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
960 static int svcctl_dissect_element_QueryServiceConfig2A_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
961 static int svcctl_dissect_element_QueryServiceConfig2A_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
962 static int svcctl_dissect_element_QueryServiceConfig2A_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
963 static int svcctl_dissect_element_QueryServiceConfig2A_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
964 static int svcctl_dissect_element_QueryServiceConfig2W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
965 static int svcctl_dissect_element_QueryServiceConfig2W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
966 static int svcctl_dissect_element_QueryServiceConfig2W_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
967 static int svcctl_dissect_element_QueryServiceConfig2W_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
968 static int svcctl_dissect_element_QueryServiceConfig2W_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
969 static int svcctl_dissect_element_QueryServiceConfig2W_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
970 static int svcctl_dissect_element_QueryServiceConfig2W_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
971 static int svcctl_dissect_element_QueryServiceConfig2W_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
972 static int svcctl_dissect_element_QueryServiceConfig2W_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
973 static int svcctl_dissect_element_QueryServiceStatusEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
974 static int svcctl_dissect_element_QueryServiceStatusEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
975 static int svcctl_dissect_element_QueryServiceStatusEx_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
976 static int svcctl_dissect_element_QueryServiceStatusEx_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
977 static int svcctl_dissect_element_QueryServiceStatusEx_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
978 static int svcctl_dissect_element_QueryServiceStatusEx_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
979 static int svcctl_dissect_element_QueryServiceStatusEx_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
980 static int svcctl_dissect_element_QueryServiceStatusEx_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
981 static int svcctl_dissect_element_QueryServiceStatusEx_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
982 static int svcctl_dissect_element_EnumServicesStatusExA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
983 static int svcctl_dissect_element_EnumServicesStatusExA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
984 static int svcctl_dissect_element_EnumServicesStatusExA_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
985 static int svcctl_dissect_element_EnumServicesStatusExA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
986 static int svcctl_dissect_element_EnumServicesStatusExA_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
987 static int svcctl_dissect_element_EnumServicesStatusExA_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
988 static int svcctl_dissect_element_EnumServicesStatusExA_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
989 static int svcctl_dissect_element_EnumServicesStatusExA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
990 static int svcctl_dissect_element_EnumServicesStatusExA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
991 static int svcctl_dissect_element_EnumServicesStatusExA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
992 static int svcctl_dissect_element_EnumServicesStatusExA_service_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
993 static int svcctl_dissect_element_EnumServicesStatusExA_service_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
994 static int svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
995 static int svcctl_dissect_element_EnumServicesStatusExA_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
996 static int svcctl_dissect_element_EnumServicesStatusExA_group_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
997 static int svcctl_dissect_element_EnumServicesStatusExA_group_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
998 static int svcctl_dissect_element_EnumServicesStatusExA_group_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
999 static int svcctl_dissect_element_EnumServicesStatusExW_scmanager(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1000 static int svcctl_dissect_element_EnumServicesStatusExW_scmanager_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1001 static int svcctl_dissect_element_EnumServicesStatusExW_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1002 static int svcctl_dissect_element_EnumServicesStatusExW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1003 static int svcctl_dissect_element_EnumServicesStatusExW_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1004 static int svcctl_dissect_element_EnumServicesStatusExW_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1005 static int svcctl_dissect_element_EnumServicesStatusExW_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1006 static int svcctl_dissect_element_EnumServicesStatusExW_services__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1007 static int svcctl_dissect_element_EnumServicesStatusExW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1008 static int svcctl_dissect_element_EnumServicesStatusExW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1009 static int svcctl_dissect_element_EnumServicesStatusExW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1010 static int svcctl_dissect_element_EnumServicesStatusExW_service_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1011 static int svcctl_dissect_element_EnumServicesStatusExW_service_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1012 static int svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1013 static int svcctl_dissect_element_EnumServicesStatusExW_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1014 static int svcctl_dissect_element_EnumServicesStatusExW_group_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1015 static int svcctl_dissect_element_EnumServicesStatusExW_group_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1016 static int svcctl_dissect_element_CreateServiceWOW64A_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1017 static int svcctl_dissect_element_CreateServiceWOW64A_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1018 static int svcctl_dissect_element_CreateServiceWOW64A_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1019 static int svcctl_dissect_element_CreateServiceWOW64A_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1020 static int svcctl_dissect_element_CreateServiceWOW64A_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1021 static int svcctl_dissect_element_CreateServiceWOW64A_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1022 static int svcctl_dissect_element_CreateServiceWOW64A_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1023 static int svcctl_dissect_element_CreateServiceWOW64A_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1024 static int svcctl_dissect_element_CreateServiceWOW64A_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1025 static int svcctl_dissect_element_CreateServiceWOW64A_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1026 static int svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1027 static int svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1028 static int svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1029 static int svcctl_dissect_element_CreateServiceWOW64A_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1030 static int svcctl_dissect_element_CreateServiceWOW64A_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1031 static int svcctl_dissect_element_CreateServiceWOW64A_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1032 static int svcctl_dissect_element_CreateServiceWOW64A_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1033 static int svcctl_dissect_element_CreateServiceWOW64A_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1034 static int svcctl_dissect_element_CreateServiceWOW64A_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1035 static int svcctl_dissect_element_CreateServiceWOW64A_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1036 static int svcctl_dissect_element_CreateServiceWOW64A_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1037 static int svcctl_dissect_element_CreateServiceWOW64A_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1038 static int svcctl_dissect_element_CreateServiceWOW64A_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1039 static int svcctl_dissect_element_CreateServiceWOW64A_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1040 static int svcctl_dissect_element_CreateServiceWOW64A_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1041 static int svcctl_dissect_element_CreateServiceWOW64A_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1042 static int svcctl_dissect_element_CreateServiceWOW64W_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1043 static int svcctl_dissect_element_CreateServiceWOW64W_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1044 static int svcctl_dissect_element_CreateServiceWOW64W_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1045 static int svcctl_dissect_element_CreateServiceWOW64W_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1046 static int svcctl_dissect_element_CreateServiceWOW64W_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1047 static int svcctl_dissect_element_CreateServiceWOW64W_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1048 static int svcctl_dissect_element_CreateServiceWOW64W_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1049 static int svcctl_dissect_element_CreateServiceWOW64W_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1050 static int svcctl_dissect_element_CreateServiceWOW64W_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1051 static int svcctl_dissect_element_CreateServiceWOW64W_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1052 static int svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1053 static int svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1054 static int svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1055 static int svcctl_dissect_element_CreateServiceWOW64W_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1056 static int svcctl_dissect_element_CreateServiceWOW64W_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1057 static int svcctl_dissect_element_CreateServiceWOW64W_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1058 static int svcctl_dissect_element_CreateServiceWOW64W_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1059 static int svcctl_dissect_element_CreateServiceWOW64W_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1060 static int svcctl_dissect_element_CreateServiceWOW64W_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1061 static int svcctl_dissect_element_CreateServiceWOW64W_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1062 static int svcctl_dissect_element_CreateServiceWOW64W_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1063 static int svcctl_dissect_element_CreateServiceWOW64W_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1064 static int svcctl_dissect_element_CreateServiceWOW64W_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1065 static int svcctl_dissect_element_CreateServiceWOW64W_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1066 static int svcctl_dissect_element_CreateServiceWOW64W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1067 static int svcctl_dissect_element_CreateServiceWOW64W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1068 static int svcctl_dissect_element_QueryServiceConfigEx_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1069 static int svcctl_dissect_element_QueryServiceConfigEx_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1070 static int svcctl_dissect_element_QueryServiceConfigEx_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1071 static int svcctl_dissect_element_CreateWowService_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1072 static int svcctl_dissect_element_CreateWowService_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1073 static int svcctl_dissect_element_CreateWowService_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1074 static int svcctl_dissect_element_CreateWowService_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1075 static int svcctl_dissect_element_CreateWowService_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1076 static int svcctl_dissect_element_CreateWowService_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1077 static int svcctl_dissect_element_CreateWowService_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1078 static int svcctl_dissect_element_CreateWowService_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1079 static int svcctl_dissect_element_CreateWowService_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1080 static int svcctl_dissect_element_CreateWowService_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1081 static int svcctl_dissect_element_CreateWowService_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1082 static int svcctl_dissect_element_CreateWowService_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1083 static int svcctl_dissect_element_CreateWowService_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1084 static int svcctl_dissect_element_CreateWowService_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1085 static int svcctl_dissect_element_CreateWowService_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1086 static int svcctl_dissect_element_CreateWowService_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1087 static int svcctl_dissect_element_CreateWowService_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1088 static int svcctl_dissect_element_CreateWowService_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1089 static int svcctl_dissect_element_CreateWowService_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1090 static int svcctl_dissect_element_CreateWowService_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1091 static int svcctl_dissect_element_CreateWowService_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1092 static int svcctl_dissect_element_CreateWowService_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1093 static int svcctl_dissect_element_CreateWowService_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1094 static int svcctl_dissect_element_CreateWowService_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1095 static int svcctl_dissect_element_CreateWowService_service_wow_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1096 static int svcctl_dissect_element_CreateWowService_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1097 static int svcctl_dissect_element_CreateWowService_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1098 static int svcctl_dissect_element_OpenSCManager2_database_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1099 static int svcctl_dissect_element_OpenSCManager2_database_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1100 static int svcctl_dissect_element_OpenSCManager2_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1101 static int svcctl_dissect_element_OpenSCManager2_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1102 static int svcctl_dissect_element_OpenSCManager2_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_);
1103 /* ENUM_SERVICE_STATUSW Caveats
1104 https://github.com/fortra/impacket/blob/4888172ce638910104da4bda2c3301c24e17564c/impacket/dcerpc/v5/scmr.py#L1274
1106 static int
1107 svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, uint8_t *drep, int hf_index, int starting_offset);
1108 static int
1109 svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *parent_tree, dcerpc_info* di, uint8_t *drep, int hf_index, int starting_offset)
1111 proto_item *item = NULL;
1112 proto_tree *tree = NULL;
1113 proto_tree *tr = NULL;
1114 int old_offset;
1115 uint32_t _referent_id = 0;
1116 ALIGN_TO_5_BYTES;
1117 old_offset = offset;
1118 if (parent_tree) {
1119 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1120 tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSW);
1122 // Service Name
1123 tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_service_name, NULL, "Pointer to Service Name");
1124 offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id);
1125 dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_service_name , 0);
1126 // Display Name
1127 tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_display_name, NULL, "Pointer to Display Name");
1128 offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id);
1129 dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_display_name , 0);
1130 // Status
1131 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvb, offset, pinfo, tree, di, drep);
1132 proto_item_set_len(item, offset-old_offset);
1133 if (di->call_data->flags & DCERPC_IS_NDR64) {
1134 ALIGN_TO_5_BYTES;
1136 return offset;
1138 /* REnumServicesStatusW
1139 https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmr/22b4ff3d-29c6-481f-b598-8ce66a46944a
1141 static int
1142 svcctl_dissect_EnumServicesStatusW_response(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep)
1144 uint32_t status;
1145 uint32_t services_returned= 0;
1146 proto_item *item;
1147 proto_tree *tr = NULL;
1148 int services_buffer_offset;
1149 int payload_starting_offset = offset;
1150 uint64_t buffer_size = 0;
1151 ALIGN_TO_5_BYTES
1152 di->dcerpc_procedure_name="EnumServicesStatusW";
1153 tr = proto_tree_add_subtree(tree, tvb, offset, 0, ett_svcctl_service, &item, "Pointer to Services Status");
1154 // Services Buffer Size
1155 offset = dissect_ndr_uint3264(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_buffer_size, &buffer_size);
1156 services_buffer_offset = offset;
1157 offset += (int)buffer_size;
1158 proto_item_set_len(item, offset-payload_starting_offset);
1159 ALIGN_TO_4_BYTES
1160 // Bytes Needed
1161 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed, 0);
1162 // Services Returned
1163 offset = PIDL_dissect_uint32_val( tvb, offset, pinfo, tree, di, drep
1164 , hf_svcctl_svcctl_EnumServicesStatusW_services_returned
1165 , 0, &services_returned);
1166 // Services
1167 if (services_returned > 0){
1168 payload_starting_offset = services_buffer_offset;
1169 for(unsigned idx = 0; idx < services_returned ; ++idx){
1170 services_buffer_offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr( tvb, services_buffer_offset
1171 , pinfo, tr, di, drep
1172 , hf_svcctl_svcctl_EnumDependentServicesW_service_status
1173 , payload_starting_offset);
1175 dissect_deferred_pointers(pinfo, tvb, services_buffer_offset, di, drep);
1177 // Resume Index
1178 offset = svcctl_dissect_element_EnumServicesStatusW_resume_index(tvb, offset, pinfo, tree, di, drep);
1179 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
1180 // Return status
1181 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
1182 if (status != 0)
1183 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
1184 return offset;
1188 /* IDL: bitmap { */
1189 /* IDL: } */
1192 svcctl_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_)
1194 uint32_t flags;
1195 ALIGN_TO_4_BYTES;
1197 proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, DREP_ENC_INTEGER(drep));
1199 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1201 return offset;
1205 /* IDL: struct { */
1206 /* IDL: uint32 is_locked; */
1207 /* IDL: [charset(UTF16)] [unique(1)] uint16 *lock_owner; */
1208 /* IDL: uint32 lock_duration; */
1209 /* IDL: } */
1211 static int
1212 svcctl_dissect_element_SERVICE_LOCK_STATUS_is_locked(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1214 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_LOCK_STATUS_is_locked, 0);
1216 return offset;
1219 static int
1220 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1222 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner_, NDR_POINTER_UNIQUE, "Pointer to Lock Owner (uint16)",hf_svcctl_SERVICE_LOCK_STATUS_lock_owner);
1224 return offset;
1227 static int
1228 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1230 char *data = NULL;
1231 struct ndr_generic_array nga = { .is_conformant = false, };
1233 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
1235 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
1236 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_SERVICE_LOCK_STATUS_lock_owner, false, &nga, &data);
1237 proto_item_append_text(tree, ": %s", data);
1239 return offset;
1242 static int
1243 svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_duration(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1245 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_LOCK_STATUS_lock_duration, 0);
1247 return offset;
1251 svcctl_dissect_struct_SERVICE_LOCK_STATUS(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_)
1253 proto_item *item = NULL;
1254 proto_tree *tree = NULL;
1255 int old_offset;
1257 ALIGN_TO_5_BYTES;
1259 old_offset = offset;
1261 if (parent_tree) {
1262 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1263 tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_LOCK_STATUS);
1266 offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_is_locked(tvb, offset, pinfo, tree, di, drep);
1268 offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner(tvb, offset, pinfo, tree, di, drep);
1270 offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_duration(tvb, offset, pinfo, tree, di, drep);
1273 proto_item_set_len(item, offset-old_offset);
1276 if (di->call_data->flags & DCERPC_IS_NDR64) {
1277 ALIGN_TO_5_BYTES;
1280 return offset;
1284 /* IDL: enum { */
1285 /* IDL: SVCCTL_STOPPED=0x00000001, */
1286 /* IDL: SVCCTL_START_PENDING=0x00000002, */
1287 /* IDL: SVCCTL_STOP_PENDING=0x00000003, */
1288 /* IDL: SVCCTL_RUNNING=0x00000004, */
1289 /* IDL: SVCCTL_CONTINUE_PENDING=0x00000005, */
1290 /* IDL: SVCCTL_PAUSE_PENDING=0x00000006, */
1291 /* IDL: SVCCTL_PAUSED=0x00000007, */
1292 /* IDL: } */
1295 svcctl_dissect_enum_ServiceStatus(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_)
1297 uint32_t parameter=0;
1298 if (param) {
1299 parameter = *param;
1301 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1302 if (param) {
1303 *param = parameter;
1305 return offset;
1309 /* IDL: enum { */
1310 /* IDL: SERVICE_TYPE_KERNEL_DRIVER=0x00000001, */
1311 /* IDL: SERVICE_TYPE_FS_DRIVER=0x00000002, */
1312 /* IDL: SERVICE_TYPE_ADAPTER=0x00000004, */
1313 /* IDL: SERVICE_TYPE_RECOGNIZER_DRIVER=0x00000008, */
1314 /* IDL: SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER, */
1315 /* IDL: SERVICE_TYPE_WIN32_OWN_PROCESS=0x00000010, */
1316 /* IDL: SERVICE_TYPE_WIN32_SHARE_PROCESS=0x00000020, */
1317 /* IDL: SERVICE_TYPE_USER_OWN_PROCESS=0x00000050, */
1318 /* IDL: SERVICE_TYPE_USER_SHARE_PROCESS=0x00000060, */
1319 /* IDL: SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS, */
1320 /* IDL: SERVICE_TYPE_INTERACTIVE_PROCESS=0x00000100, */
1321 /* IDL: } */
1324 svcctl_dissect_enum_ServiceType(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_)
1326 uint32_t parameter=0;
1327 if (param) {
1328 parameter = *param;
1330 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1331 if (param) {
1332 *param = parameter;
1334 return offset;
1338 /* IDL: bitmap { */
1339 /* IDL: SERVICE_ACCEPT_STOP = 0x00000001 , */
1340 /* IDL: SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002 , */
1341 /* IDL: SERVICE_ACCEPT_SHUTDOWN = 0x00000004 , */
1342 /* IDL: SERVICE_ACCEPT_PARAMCHANGE = 0x00000008 , */
1343 /* IDL: SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010 , */
1344 /* IDL: SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020 , */
1345 /* IDL: SERVICE_ACCEPT_POWEREVENT = 0x00000040 , */
1346 /* IDL: SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080 , */
1347 /* IDL: SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100 , */
1348 /* IDL: SERVICE_ACCEPT_TIMECHANGE = 0x00000200 , */
1349 /* IDL: SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400 , */
1350 /* IDL: SERVICE_ACCEPT_USERMODEREBOOT = 0x00000800 , */
1351 /* IDL: } */
1354 svcctl_dissect_bitmap_ControlsAccepted(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_)
1356 proto_item *item;
1357 static int * const svcctl_svcctl_ControlsAccepted_fields[] = {
1358 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP,
1359 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE,
1360 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN,
1361 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE,
1362 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE,
1363 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE,
1364 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT,
1365 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE,
1366 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN,
1367 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE,
1368 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT,
1369 &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT,
1370 NULL
1372 uint32_t flags;
1373 ALIGN_TO_4_BYTES;
1375 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
1376 ett_svcctl_svcctl_ControlsAccepted, svcctl_svcctl_ControlsAccepted_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
1378 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1380 if (!flags)
1381 proto_item_append_text(item, ": (No values set)");
1383 if (flags & (~0x00000fff)) {
1384 flags &= (~0x00000fff);
1385 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
1388 return offset;
1392 /* IDL: struct { */
1393 /* IDL: svcctl_ServiceType type; */
1394 /* IDL: svcctl_ServiceStatus state; */
1395 /* IDL: svcctl_ControlsAccepted controls_accepted; */
1396 /* IDL: WERROR win32_exit_code; */
1397 /* IDL: uint32 service_exit_code; */
1398 /* IDL: uint32 check_point; */
1399 /* IDL: uint32 wait_hint; */
1400 /* IDL: } */
1402 static int
1403 svcctl_dissect_element_SERVICE_STATUS_type(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 = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_type, 0);
1407 return offset;
1410 static int
1411 svcctl_dissect_element_SERVICE_STATUS_state(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 = svcctl_dissect_enum_ServiceStatus(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_state, 0);
1415 return offset;
1418 static int
1419 svcctl_dissect_element_SERVICE_STATUS_controls_accepted(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 = svcctl_dissect_bitmap_ControlsAccepted(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_controls_accepted, 0);
1423 return offset;
1426 static int
1427 svcctl_dissect_element_SERVICE_STATUS_win32_exit_code(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_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_win32_exit_code, 0);
1431 return offset;
1434 static int
1435 svcctl_dissect_element_SERVICE_STATUS_service_exit_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1437 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_service_exit_code, 0);
1439 return offset;
1442 static int
1443 svcctl_dissect_element_SERVICE_STATUS_check_point(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1445 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_check_point, 0);
1447 return offset;
1450 static int
1451 svcctl_dissect_element_SERVICE_STATUS_wait_hint(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1453 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_wait_hint, 0);
1455 return offset;
1459 svcctl_dissect_struct_SERVICE_STATUS(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_)
1461 proto_item *item = NULL;
1462 proto_tree *tree = NULL;
1463 int old_offset;
1465 ALIGN_TO_4_BYTES;
1467 old_offset = offset;
1469 if (parent_tree) {
1470 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1471 tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_STATUS);
1474 offset = svcctl_dissect_element_SERVICE_STATUS_type(tvb, offset, pinfo, tree, di, drep);
1476 offset = svcctl_dissect_element_SERVICE_STATUS_state(tvb, offset, pinfo, tree, di, drep);
1478 offset = svcctl_dissect_element_SERVICE_STATUS_controls_accepted(tvb, offset, pinfo, tree, di, drep);
1480 offset = svcctl_dissect_element_SERVICE_STATUS_win32_exit_code(tvb, offset, pinfo, tree, di, drep);
1482 offset = svcctl_dissect_element_SERVICE_STATUS_service_exit_code(tvb, offset, pinfo, tree, di, drep);
1484 offset = svcctl_dissect_element_SERVICE_STATUS_check_point(tvb, offset, pinfo, tree, di, drep);
1486 offset = svcctl_dissect_element_SERVICE_STATUS_wait_hint(tvb, offset, pinfo, tree, di, drep);
1489 proto_item_set_len(item, offset-old_offset);
1492 if (di->call_data->flags & DCERPC_IS_NDR64) {
1493 ALIGN_TO_4_BYTES;
1496 return offset;
1500 /* IDL: enum { */
1501 /* IDL: SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING=0x00000000, */
1502 /* IDL: SERVICE_RUNS_IN_SYSTEM_PROCESS=0x00000001, */
1503 /* IDL: } */
1506 svcctl_dissect_enum_ServiceFlags(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_)
1508 uint32_t parameter=0;
1509 if (param) {
1510 parameter = *param;
1512 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1513 if (param) {
1514 *param = parameter;
1516 return offset;
1520 /* IDL: struct { */
1521 /* IDL: svcctl_ServiceType type; */
1522 /* IDL: svcctl_ServiceStatus state; */
1523 /* IDL: svcctl_ControlsAccepted controls_accepted; */
1524 /* IDL: WERROR win32_exit_code; */
1525 /* IDL: uint32 service_exit_code; */
1526 /* IDL: uint32 check_point; */
1527 /* IDL: uint32 wait_hint; */
1528 /* IDL: uint32 process_id; */
1529 /* IDL: svcctl_ServiceFlags service_flags; */
1530 /* IDL: } */
1532 static int
1533 svcctl_dissect_element_SERVICE_STATUS_PROCESS_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1535 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_type, 0);
1537 return offset;
1540 static int
1541 svcctl_dissect_element_SERVICE_STATUS_PROCESS_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1543 offset = svcctl_dissect_enum_ServiceStatus(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_state, 0);
1545 return offset;
1548 static int
1549 svcctl_dissect_element_SERVICE_STATUS_PROCESS_controls_accepted(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1551 offset = svcctl_dissect_bitmap_ControlsAccepted(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted, 0);
1553 return offset;
1556 static int
1557 svcctl_dissect_element_SERVICE_STATUS_PROCESS_win32_exit_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1559 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code, 0);
1561 return offset;
1564 static int
1565 svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_exit_code(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1567 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code, 0);
1569 return offset;
1572 static int
1573 svcctl_dissect_element_SERVICE_STATUS_PROCESS_check_point(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1575 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_check_point, 0);
1577 return offset;
1580 static int
1581 svcctl_dissect_element_SERVICE_STATUS_PROCESS_wait_hint(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1583 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint, 0);
1585 return offset;
1588 static int
1589 svcctl_dissect_element_SERVICE_STATUS_PROCESS_process_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1591 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_process_id, 0);
1593 return offset;
1596 static int
1597 svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1599 offset = svcctl_dissect_enum_ServiceFlags(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_service_flags, 0);
1601 return offset;
1605 svcctl_dissect_struct_SERVICE_STATUS_PROCESS(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_)
1607 proto_item *item = NULL;
1608 proto_tree *tree = NULL;
1609 int old_offset;
1611 ALIGN_TO_4_BYTES;
1613 old_offset = offset;
1615 if (parent_tree) {
1616 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1617 tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_STATUS_PROCESS);
1620 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_type(tvb, offset, pinfo, tree, di, drep);
1622 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_state(tvb, offset, pinfo, tree, di, drep);
1624 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_controls_accepted(tvb, offset, pinfo, tree, di, drep);
1626 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_win32_exit_code(tvb, offset, pinfo, tree, di, drep);
1628 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_exit_code(tvb, offset, pinfo, tree, di, drep);
1630 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_check_point(tvb, offset, pinfo, tree, di, drep);
1632 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_wait_hint(tvb, offset, pinfo, tree, di, drep);
1634 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_process_id(tvb, offset, pinfo, tree, di, drep);
1636 offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_flags(tvb, offset, pinfo, tree, di, drep);
1639 proto_item_set_len(item, offset-old_offset);
1642 if (di->call_data->flags & DCERPC_IS_NDR64) {
1643 ALIGN_TO_4_BYTES;
1646 return offset;
1650 /* IDL: struct { */
1651 /* IDL: [flag(LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *service_name; */
1652 /* IDL: [flag(LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *display_name; */
1653 /* IDL: SERVICE_STATUS status; */
1654 /* IDL: } */
1656 static int
1657 svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1659 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name_, NDR_POINTER_UNIQUE, "Pointer to Service Name (string)",hf_svcctl_ENUM_SERVICE_STATUSW_service_name);
1661 return offset;
1664 static int
1665 svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1667 offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSW_service_name , 0);
1669 return offset;
1672 static int
1673 svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1675 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name_, NDR_POINTER_UNIQUE, "Pointer to Display Name (string)",hf_svcctl_ENUM_SERVICE_STATUSW_display_name);
1677 return offset;
1680 static int
1681 svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1683 offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSW_display_name , 0);
1685 return offset;
1688 static int
1689 svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
1691 offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_ENUM_SERVICE_STATUSW_status,0);
1693 return offset;
1697 svcctl_dissect_struct_ENUM_SERVICE_STATUSW(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_)
1699 proto_item *item = NULL;
1700 proto_tree *tree = NULL;
1701 int old_offset;
1703 ALIGN_TO_5_BYTES;
1705 old_offset = offset;
1707 if (parent_tree) {
1708 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1709 tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSW);
1712 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name(tvb, offset, pinfo, tree, di, drep);
1714 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name(tvb, offset, pinfo, tree, di, drep);
1716 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvb, offset, pinfo, tree, di, drep);
1719 proto_item_set_len(item, offset-old_offset);
1722 if (di->call_data->flags & DCERPC_IS_NDR64) {
1723 ALIGN_TO_5_BYTES;
1726 return offset;
1730 /* IDL: struct { */
1731 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *service_name; */
1732 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *display_name; */
1733 /* IDL: SERVICE_STATUS status; */
1734 /* IDL: } */
1736 static int
1737 svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name(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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name_, NDR_POINTER_UNIQUE, "Pointer to Service Name (string)",hf_svcctl_ENUM_SERVICE_STATUSA_service_name);
1741 return offset;
1744 static int
1745 svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name_(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 = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSA_service_name , 0);
1749 return offset;
1752 static int
1753 svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_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 = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name_, NDR_POINTER_UNIQUE, "Pointer to Display Name (string)",hf_svcctl_ENUM_SERVICE_STATUSA_display_name);
1757 return offset;
1760 static int
1761 svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name_(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 = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSA_display_name , 0);
1765 return offset;
1768 static int
1769 svcctl_dissect_element_ENUM_SERVICE_STATUSA_status(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 = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_ENUM_SERVICE_STATUSA_status,0);
1773 return offset;
1777 svcctl_dissect_struct_ENUM_SERVICE_STATUSA(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_)
1779 proto_item *item = NULL;
1780 proto_tree *tree = NULL;
1781 int old_offset;
1783 ALIGN_TO_5_BYTES;
1785 old_offset = offset;
1787 if (parent_tree) {
1788 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
1789 tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSA);
1792 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name(tvb, offset, pinfo, tree, di, drep);
1794 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name(tvb, offset, pinfo, tree, di, drep);
1796 offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_status(tvb, offset, pinfo, tree, di, drep);
1799 proto_item_set_len(item, offset-old_offset);
1802 if (di->call_data->flags & DCERPC_IS_NDR64) {
1803 ALIGN_TO_5_BYTES;
1806 return offset;
1810 /* IDL: enum { */
1811 /* IDL: SVCCTL_CONTROL_STOP=0x00000001, */
1812 /* IDL: SVCCTL_CONTROL_PAUSE=0x00000002, */
1813 /* IDL: SVCCTL_CONTROL_CONTINUE=0x00000003, */
1814 /* IDL: SVCCTL_CONTROL_INTERROGATE=0x00000004, */
1815 /* IDL: SVCCTL_CONTROL_SHUTDOWN=0x00000005, */
1816 /* IDL: SERVICE_CONTROL_PARAMCHANGE=0x00000006, */
1817 /* IDL: SERVICE_CONTROL_NETBINDADD=0x00000007, */
1818 /* IDL: SERVICE_CONTROL_NETBINDREMOVE=0x00000008, */
1819 /* IDL: SERVICE_CONTROL_NETBINDENABLE=0x00000009, */
1820 /* IDL: SERVICE_CONTROL_NETBINDDISABLE=0x0000000A, */
1821 /* IDL: } */
1824 svcctl_dissect_enum_SERVICE_CONTROL(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_)
1826 uint32_t parameter=0;
1827 if (param) {
1828 parameter = *param;
1830 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1831 if (param) {
1832 *param = parameter;
1834 return offset;
1838 /* IDL: enum { */
1839 /* IDL: SVCCTL_SVC_ERROR_IGNORE=0x00000000, */
1840 /* IDL: SVCCTL_SVC_ERROR_NORMAL=0x00000001, */
1841 /* IDL: SVCCTL_SVC_ERROR_CRITICAL=0x00000002, */
1842 /* IDL: SVCCTL_SVC_ERROR_SEVERE=0x00000003, */
1843 /* IDL: } */
1846 svcctl_dissect_enum_ErrorControl(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_)
1848 uint32_t parameter=0;
1849 if (param) {
1850 parameter = *param;
1852 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1853 if (param) {
1854 *param = parameter;
1856 return offset;
1860 /* IDL: enum { */
1861 /* IDL: SVCCTL_BOOT_START=0x00000000, */
1862 /* IDL: SVCCTL_SYSTEM_START=0x00000001, */
1863 /* IDL: SVCCTL_AUTO_START=0x00000002, */
1864 /* IDL: SVCCTL_DEMAND_START=0x00000003, */
1865 /* IDL: SVCCTL_DISABLED=0x00000004, */
1866 /* IDL: } */
1869 svcctl_dissect_enum_StartType(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_)
1871 uint32_t parameter=0;
1872 if (param) {
1873 parameter = *param;
1875 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1876 if (param) {
1877 *param = parameter;
1879 return offset;
1883 /* IDL: enum { */
1884 /* IDL: SERVICE_STATE_ACTIVE=0x00000001, */
1885 /* IDL: SERVICE_STATE_INACTIVE=0x00000002, */
1886 /* IDL: SERVICE_STATE_ALL=(SERVICE_STATE_ACTIVE|SERVICE_STATE_INACTIVE), */
1887 /* IDL: } */
1890 svcctl_dissect_enum_ServiceState(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_)
1892 uint32_t parameter=0;
1893 if (param) {
1894 parameter = *param;
1896 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
1897 if (param) {
1898 *param = parameter;
1900 return offset;
1904 /* IDL: bitmap { */
1905 /* IDL: SC_RIGHT_MGR_CONNECT = 0x00000001 , */
1906 /* IDL: SC_RIGHT_MGR_CREATE_SERVICE = 0x00000002 , */
1907 /* IDL: SC_RIGHT_MGR_ENUMERATE_SERVICE = 0x00000004 , */
1908 /* IDL: SC_RIGHT_MGR_LOCK = 0x00000008 , */
1909 /* IDL: SC_RIGHT_MGR_QUERY_LOCK_STATUS = 0x00000010 , */
1910 /* IDL: SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x00000020 , */
1911 /* IDL: SC_RIGHT_MGR_ALL_ACCESS = 0x000F003F , */
1912 /* IDL: } */
1915 svcctl_dissect_bitmap_MgrAccessMask(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_)
1917 proto_item *item;
1918 static int * const svcctl_svcctl_MgrAccessMask_fields[] = {
1919 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT,
1920 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE,
1921 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE,
1922 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK,
1923 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS,
1924 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG,
1925 &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS,
1926 NULL
1928 uint32_t flags;
1929 ALIGN_TO_4_BYTES;
1931 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
1932 ett_svcctl_svcctl_MgrAccessMask, svcctl_svcctl_MgrAccessMask_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
1934 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1936 if (!flags)
1937 proto_item_append_text(item, ": (No values set)");
1939 if (flags & (~0x000f007e)) {
1940 flags &= (~0x000f007e);
1941 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
1944 return offset;
1948 /* IDL: bitmap { */
1949 /* IDL: SC_RIGHT_SVC_QUERY_CONFIG = 0x00000001 , */
1950 /* IDL: SC_RIGHT_SVC_CHANGE_CONFIG = 0x00000002 , */
1951 /* IDL: SC_RIGHT_SVC_QUERY_STATUS = 0x00000004 , */
1952 /* IDL: SC_RIGHT_SVC_ENUMERATE_DEPENDENTS = 0x00000008 , */
1953 /* IDL: SC_RIGHT_SVC_START = 0x00000010 , */
1954 /* IDL: SC_RIGHT_SVC_STOP = 0x00000020 , */
1955 /* IDL: SC_RIGHT_SVC_PAUSE_CONTINUE = 0x00000040 , */
1956 /* IDL: SC_RIGHT_SVC_INTERROGATE = 0x00000080 , */
1957 /* IDL: SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x00000100 , */
1958 /* IDL: } */
1961 svcctl_dissect_bitmap_ServiceAccessMask(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_)
1963 proto_item *item;
1964 static int * const svcctl_svcctl_ServiceAccessMask_fields[] = {
1965 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG,
1966 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG,
1967 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS,
1968 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS,
1969 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START,
1970 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP,
1971 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE,
1972 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE,
1973 &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL,
1974 NULL
1976 uint32_t flags;
1977 ALIGN_TO_4_BYTES;
1979 item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index,
1980 ett_svcctl_svcctl_ServiceAccessMask, svcctl_svcctl_ServiceAccessMask_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE);
1982 offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags);
1984 if (!flags)
1985 proto_item_append_text(item, ": (No values set)");
1987 if (flags & (~0x000001ff)) {
1988 flags &= (~0x000001ff);
1989 proto_item_append_text(item, "Unknown bitmap value 0x%x", flags);
1992 return offset;
1996 /* IDL: struct { */
1997 /* IDL: svcctl_ServiceType service_type; */
1998 /* IDL: svcctl_StartType start_type; */
1999 /* IDL: svcctl_ErrorControl error_control; */
2000 /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *executablepath; */
2001 /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *loadordergroup; */
2002 /* IDL: uint32 tag_id; */
2003 /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *dependencies; */
2004 /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *startname; */
2005 /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *displayname; */
2006 /* IDL: } */
2008 static int
2009 svcctl_dissect_element_QUERY_SERVICE_CONFIG_service_type(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 = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_service_type, 0);
2013 return offset;
2016 static int
2017 svcctl_dissect_element_QUERY_SERVICE_CONFIG_start_type(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 = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_start_type, 0);
2021 return offset;
2024 static int
2025 svcctl_dissect_element_QUERY_SERVICE_CONFIG_error_control(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 = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_error_control, 0);
2029 return offset;
2032 static int
2033 svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath(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_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath_, NDR_POINTER_UNIQUE, "Pointer to Executablepath (uint16)",hf_svcctl_QUERY_SERVICE_CONFIG_executablepath);
2037 return offset;
2040 static int
2041 svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2043 char *data = NULL;
2044 struct ndr_generic_array nga = { .is_conformant = false, };
2046 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2048 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2049 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_executablepath, false, &nga, &data);
2050 proto_item_append_text(tree, ": %s", data);
2052 return offset;
2055 static int
2056 svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2058 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup_, NDR_POINTER_UNIQUE, "Pointer to Loadordergroup (uint16)",hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup);
2060 return offset;
2063 static int
2064 svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2066 char *data = NULL;
2067 struct ndr_generic_array nga = { .is_conformant = false, };
2069 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2071 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2072 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup, false, &nga, &data);
2073 proto_item_append_text(tree, ": %s", data);
2075 return offset;
2078 static int
2079 svcctl_dissect_element_QUERY_SERVICE_CONFIG_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2081 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_tag_id, 0);
2083 return offset;
2086 static int
2087 svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2089 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (uint16)",hf_svcctl_QUERY_SERVICE_CONFIG_dependencies);
2091 return offset;
2094 static int
2095 svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2097 char *data = NULL;
2098 struct ndr_generic_array nga = { .is_conformant = false, };
2100 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2102 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2103 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_dependencies, false, &nga, &data);
2104 proto_item_append_text(tree, ": %s", data);
2106 return offset;
2109 static int
2110 svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2112 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname_, NDR_POINTER_UNIQUE, "Pointer to Startname (uint16)",hf_svcctl_QUERY_SERVICE_CONFIG_startname);
2114 return offset;
2117 static int
2118 svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2120 char *data = NULL;
2121 struct ndr_generic_array nga = { .is_conformant = false, };
2123 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2125 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2126 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_startname, false, &nga, &data);
2127 proto_item_append_text(tree, ": %s", data);
2129 return offset;
2132 static int
2133 svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2135 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname_, NDR_POINTER_UNIQUE, "Pointer to Displayname (uint16)",hf_svcctl_QUERY_SERVICE_CONFIG_displayname);
2137 return offset;
2140 static int
2141 svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2143 char *data = NULL;
2144 struct ndr_generic_array nga = { .is_conformant = false, };
2146 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2148 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2149 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_displayname, false, &nga, &data);
2150 proto_item_append_text(tree, ": %s", data);
2152 return offset;
2156 svcctl_dissect_struct_QUERY_SERVICE_CONFIG(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_)
2158 proto_item *item = NULL;
2159 proto_tree *tree = NULL;
2160 int old_offset;
2162 ALIGN_TO_5_BYTES;
2164 old_offset = offset;
2166 if (parent_tree) {
2167 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
2168 tree = proto_item_add_subtree(item, ett_svcctl_QUERY_SERVICE_CONFIG);
2171 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_service_type(tvb, offset, pinfo, tree, di, drep);
2173 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_start_type(tvb, offset, pinfo, tree, di, drep);
2175 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_error_control(tvb, offset, pinfo, tree, di, drep);
2177 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath(tvb, offset, pinfo, tree, di, drep);
2179 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup(tvb, offset, pinfo, tree, di, drep);
2181 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_tag_id(tvb, offset, pinfo, tree, di, drep);
2183 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies(tvb, offset, pinfo, tree, di, drep);
2185 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname(tvb, offset, pinfo, tree, di, drep);
2187 offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname(tvb, offset, pinfo, tree, di, drep);
2190 proto_item_set_len(item, offset-old_offset);
2193 if (di->call_data->flags & DCERPC_IS_NDR64) {
2194 ALIGN_TO_5_BYTES;
2197 return offset;
2201 /* IDL: struct { */
2202 /* IDL: [charset(UTF16)] [range(0,SC_MAX_ARGUMENT_LENGTH)] [unique(1)] uint16 *string; */
2203 /* IDL: } */
2205 static int
2206 svcctl_dissect_element_ArgumentString_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2208 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ArgumentString_string_, NDR_POINTER_UNIQUE, "Pointer to String (uint16)",hf_svcctl_svcctl_ArgumentString_string);
2210 return offset;
2213 static int
2214 svcctl_dissect_element_ArgumentString_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2216 char *data = NULL;
2217 struct ndr_generic_array nga = { .is_conformant = false, };
2219 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2221 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2222 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ArgumentString_string, false, &nga, &data);
2223 proto_item_append_text(tree, ": %s", data);
2225 return offset;
2229 svcctl_dissect_struct_ArgumentString(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_)
2231 proto_item *item = NULL;
2232 proto_tree *tree = NULL;
2233 int old_offset;
2235 ALIGN_TO_5_BYTES;
2237 old_offset = offset;
2239 if (parent_tree) {
2240 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
2241 tree = proto_item_add_subtree(item, ett_svcctl_svcctl_ArgumentString);
2244 offset = svcctl_dissect_element_ArgumentString_string(tvb, offset, pinfo, tree, di, drep);
2247 proto_item_set_len(item, offset-old_offset);
2250 if (di->call_data->flags & DCERPC_IS_NDR64) {
2251 ALIGN_TO_5_BYTES;
2254 return offset;
2258 /* IDL: struct { */
2259 /* IDL: [charset(ASCII)] [range(0,SC_MAX_ARGUMENT_LENGTH)] [unique(1)] uint8 *string; */
2260 /* IDL: } */
2262 static int
2263 svcctl_dissect_element_ArgumentStringA_string(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2265 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ArgumentStringA_string_, NDR_POINTER_UNIQUE, "Pointer to String (uint8)",hf_svcctl_svcctl_ArgumentStringA_string);
2267 return offset;
2270 static int
2271 svcctl_dissect_element_ArgumentStringA_string_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2273 char *data = NULL;
2274 struct ndr_generic_array nga = { .is_conformant = false, };
2276 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2278 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2279 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_ArgumentStringA_string, false, &nga, &data);
2280 proto_item_append_text(tree, ": %s", data);
2282 return offset;
2286 svcctl_dissect_struct_ArgumentStringA(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_)
2288 proto_item *item = NULL;
2289 proto_tree *tree = NULL;
2290 int old_offset;
2292 ALIGN_TO_5_BYTES;
2294 old_offset = offset;
2296 if (parent_tree) {
2297 item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA);
2298 tree = proto_item_add_subtree(item, ett_svcctl_svcctl_ArgumentStringA);
2301 offset = svcctl_dissect_element_ArgumentStringA_string(tvb, offset, pinfo, tree, di, drep);
2304 proto_item_set_len(item, offset-old_offset);
2307 if (di->call_data->flags & DCERPC_IS_NDR64) {
2308 ALIGN_TO_5_BYTES;
2311 return offset;
2315 /* IDL: enum { */
2316 /* IDL: SERVICE_CONFIG_DESCRIPTION=0x00000001, */
2317 /* IDL: SERVICE_CONFIG_FAILURE_ACTIONS=0x00000002, */
2318 /* IDL: } */
2321 svcctl_dissect_enum_ConfigLevel(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_)
2323 uint32_t parameter=0;
2324 if (param) {
2325 parameter = *param;
2327 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
2328 if (param) {
2329 *param = parameter;
2331 return offset;
2335 /* IDL: enum { */
2336 /* IDL: SVC_STATUS_PROCESS_INFO=0x00000000, */
2337 /* IDL: } */
2340 svcctl_dissect_enum_StatusLevel(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_)
2342 uint32_t parameter=0;
2343 if (param) {
2344 parameter = *param;
2346 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, &parameter);
2347 if (param) {
2348 *param = parameter;
2350 return offset;
2353 static int
2354 svcctl_dissect_element_CloseServiceHandle_object_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2356 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CloseServiceHandle_object_handle_, NDR_POINTER_REF, "Pointer to Object Handle (policy_handle)",hf_svcctl_svcctl_CloseServiceHandle_object_handle);
2358 return offset;
2361 static int
2362 svcctl_dissect_element_CloseServiceHandle_object_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2364 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CloseServiceHandle_object_handle, 0);
2366 return offset;
2369 /* IDL: WERROR svcctl_CloseServiceHandle( */
2370 /* IDL: [in] [out] [ref] policy_handle *object_handle */
2371 /* IDL: ); */
2373 static int
2374 svcctl_dissect_CloseServiceHandle_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="CloseServiceHandle";
2379 offset = svcctl_dissect_element_CloseServiceHandle_object_handle(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_svcctl_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 svcctl_dissect_CloseServiceHandle_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="CloseServiceHandle";
2394 offset = svcctl_dissect_element_CloseServiceHandle_object_handle(tvb, offset, pinfo, tree, di, drep);
2395 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2396 return offset;
2399 static int
2400 svcctl_dissect_element_ControlService_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2402 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ControlService_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_ControlService_service_handle);
2404 return offset;
2407 static int
2408 svcctl_dissect_element_ControlService_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2410 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ControlService_service_handle, 0);
2412 return offset;
2415 static int
2416 svcctl_dissect_element_ControlService_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2418 offset = svcctl_dissect_enum_SERVICE_CONTROL(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ControlService_control, 0);
2420 return offset;
2423 static int
2424 svcctl_dissect_element_ControlService_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2426 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ControlService_service_status_, NDR_POINTER_REF, "Pointer to Service Status (SERVICE_STATUS)",hf_svcctl_svcctl_ControlService_service_status);
2428 return offset;
2431 static int
2432 svcctl_dissect_element_ControlService_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2434 offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_ControlService_service_status,0);
2436 return offset;
2439 /* IDL: WERROR svcctl_ControlService( */
2440 /* IDL: [in] [ref] policy_handle *service_handle, */
2441 /* IDL: [in] SERVICE_CONTROL control, */
2442 /* IDL: [out] [ref] SERVICE_STATUS *service_status */
2443 /* IDL: ); */
2445 static int
2446 svcctl_dissect_ControlService_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2448 uint32_t status;
2450 di->dcerpc_procedure_name="ControlService";
2451 offset = svcctl_dissect_element_ControlService_service_status(tvb, offset, pinfo, tree, di, drep);
2452 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2454 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2456 if (status != 0)
2457 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2459 return offset;
2462 static int
2463 svcctl_dissect_ControlService_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2465 di->dcerpc_procedure_name="ControlService";
2466 offset = svcctl_dissect_element_ControlService_service_handle(tvb, offset, pinfo, tree, di, drep);
2467 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2468 offset = svcctl_dissect_element_ControlService_control(tvb, offset, pinfo, tree, di, drep);
2469 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2470 return offset;
2473 static int
2474 svcctl_dissect_element_DeleteService_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2476 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_DeleteService_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_DeleteService_service_handle);
2478 return offset;
2481 static int
2482 svcctl_dissect_element_DeleteService_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2484 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_DeleteService_service_handle, 0);
2486 return offset;
2489 /* IDL: WERROR svcctl_DeleteService( */
2490 /* IDL: [in] [ref] policy_handle *service_handle */
2491 /* IDL: ); */
2493 static int
2494 svcctl_dissect_DeleteService_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2496 uint32_t status;
2498 di->dcerpc_procedure_name="DeleteService";
2499 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2501 if (status != 0)
2502 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2504 return offset;
2507 static int
2508 svcctl_dissect_DeleteService_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2510 di->dcerpc_procedure_name="DeleteService";
2511 offset = svcctl_dissect_element_DeleteService_service_handle(tvb, offset, pinfo, tree, di, drep);
2512 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2513 return offset;
2516 static int
2517 svcctl_dissect_element_LockServiceDatabase_scm_handle(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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_LockServiceDatabase_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_LockServiceDatabase_scm_handle);
2521 return offset;
2524 static int
2525 svcctl_dissect_element_LockServiceDatabase_scm_handle_(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 = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_LockServiceDatabase_scm_handle, 0);
2529 return offset;
2532 static int
2533 svcctl_dissect_element_LockServiceDatabase_lock_handle(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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_LockServiceDatabase_lock_handle_, NDR_POINTER_REF, "Pointer to Lock Handle (policy_handle)",hf_svcctl_svcctl_LockServiceDatabase_lock_handle);
2537 return offset;
2540 static int
2541 svcctl_dissect_element_LockServiceDatabase_lock_handle_(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_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_LockServiceDatabase_lock_handle, 0);
2545 return offset;
2548 /* IDL: WERROR svcctl_LockServiceDatabase( */
2549 /* IDL: [in] [ref] policy_handle *scm_handle, */
2550 /* IDL: [out] [ref] policy_handle *lock_handle */
2551 /* IDL: ); */
2553 static int
2554 svcctl_dissect_LockServiceDatabase_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2556 uint32_t status;
2558 di->dcerpc_procedure_name="LockServiceDatabase";
2559 offset = svcctl_dissect_element_LockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep);
2560 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2562 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2564 if (status != 0)
2565 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2567 return offset;
2570 static int
2571 svcctl_dissect_LockServiceDatabase_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2573 di->dcerpc_procedure_name="LockServiceDatabase";
2574 offset = svcctl_dissect_element_LockServiceDatabase_scm_handle(tvb, offset, pinfo, tree, di, drep);
2575 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2576 return offset;
2579 static int
2580 svcctl_dissect_element_QueryServiceObjectSecurity_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2582 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceObjectSecurity_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle);
2584 return offset;
2587 static int
2588 svcctl_dissect_element_QueryServiceObjectSecurity_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2590 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle, 0);
2592 return offset;
2595 static int
2596 svcctl_dissect_element_QueryServiceObjectSecurity_security_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2598 offset = svcctl_dissect_bitmap_security_secinfo(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags, 0);
2600 return offset;
2603 static int
2604 svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2606 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor_, NDR_POINTER_REF, "Pointer to Security Descriptor (uint8)",hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor);
2608 return offset;
2611 static int
2612 svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2614 struct ndr_generic_array nga = { .is_conformant = false, };
2616 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2618 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__);
2620 return offset;
2623 static int
2624 svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2626 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor, 0);
2628 return offset;
2631 static int
2632 svcctl_dissect_element_QueryServiceObjectSecurity_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2634 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_offered, 0);
2636 return offset;
2639 static int
2640 svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2642 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed_, NDR_POINTER_REF, "Pointer to Bytes Needed (uint32)",hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed);
2644 return offset;
2647 static int
2648 svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2650 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed, 0);
2652 return offset;
2655 /* IDL: WERROR svcctl_QueryServiceObjectSecurity( */
2656 /* IDL: [in] [ref] policy_handle *service_handle, */
2657 /* IDL: [in] security_secinfo security_flags, */
2658 /* IDL: [out] [ref] [size_is(offered)] uint8 *security_descriptor, */
2659 /* IDL: [in] [range(0,0x40000)] uint32 offered, */
2660 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytes_needed */
2661 /* IDL: ); */
2663 static int
2664 svcctl_dissect_QueryServiceObjectSecurity_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2666 uint32_t status;
2668 di->dcerpc_procedure_name="QueryServiceObjectSecurity";
2669 offset = svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor(tvb, offset, pinfo, tree, di, drep);
2670 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2672 offset = svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed(tvb, offset, pinfo, tree, di, drep);
2673 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2675 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2677 if (status != 0)
2678 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2680 return offset;
2683 static int
2684 svcctl_dissect_QueryServiceObjectSecurity_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2686 di->dcerpc_procedure_name="QueryServiceObjectSecurity";
2687 offset = svcctl_dissect_element_QueryServiceObjectSecurity_service_handle(tvb, offset, pinfo, tree, di, drep);
2688 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2689 offset = svcctl_dissect_element_QueryServiceObjectSecurity_security_flags(tvb, offset, pinfo, tree, di, drep);
2690 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2691 offset = svcctl_dissect_element_QueryServiceObjectSecurity_offered(tvb, offset, pinfo, tree, di, drep);
2692 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2693 return offset;
2696 static int
2697 svcctl_dissect_element_SetServiceObjectSecurity_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2699 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceObjectSecurity_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle);
2701 return offset;
2704 static int
2705 svcctl_dissect_element_SetServiceObjectSecurity_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2707 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle, 0);
2709 return offset;
2712 static int
2713 svcctl_dissect_element_SetServiceObjectSecurity_security_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2715 offset = svcctl_dissect_bitmap_security_secinfo(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags, 0);
2717 return offset;
2720 static int
2721 svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2723 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor_, NDR_POINTER_REF, "Pointer to Security Descriptor (uint8)",hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor);
2725 return offset;
2728 static int
2729 svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2731 struct ndr_generic_array nga = { .is_conformant = false, };
2733 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2735 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__);
2737 return offset;
2740 static int
2741 svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2743 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor, 0);
2745 return offset;
2748 static int
2749 svcctl_dissect_element_SetServiceObjectSecurity_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2751 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_offered, 0);
2753 return offset;
2756 /* IDL: WERROR svcctl_SetServiceObjectSecurity( */
2757 /* IDL: [in] [ref] policy_handle *service_handle, */
2758 /* IDL: [in] security_secinfo security_flags, */
2759 /* IDL: [in] [ref] [size_is(offered)] uint8 *security_descriptor, */
2760 /* IDL: [in] uint32 offered */
2761 /* IDL: ); */
2763 static int
2764 svcctl_dissect_SetServiceObjectSecurity_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2766 uint32_t status;
2768 di->dcerpc_procedure_name="SetServiceObjectSecurity";
2769 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2771 if (status != 0)
2772 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2774 return offset;
2777 static int
2778 svcctl_dissect_SetServiceObjectSecurity_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2780 di->dcerpc_procedure_name="SetServiceObjectSecurity";
2781 offset = svcctl_dissect_element_SetServiceObjectSecurity_service_handle(tvb, offset, pinfo, tree, di, drep);
2782 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2783 offset = svcctl_dissect_element_SetServiceObjectSecurity_security_flags(tvb, offset, pinfo, tree, di, drep);
2784 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2785 offset = svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor(tvb, offset, pinfo, tree, di, drep);
2786 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2787 offset = svcctl_dissect_element_SetServiceObjectSecurity_offered(tvb, offset, pinfo, tree, di, drep);
2788 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2789 return offset;
2792 static int
2793 svcctl_dissect_element_QueryServiceStatus_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2795 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatus_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceStatus_service_handle);
2797 return offset;
2800 static int
2801 svcctl_dissect_element_QueryServiceStatus_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2803 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatus_service_handle, 0);
2805 return offset;
2808 static int
2809 svcctl_dissect_element_QueryServiceStatus_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2811 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatus_service_status_, NDR_POINTER_REF, "Pointer to Service Status (SERVICE_STATUS)",hf_svcctl_svcctl_QueryServiceStatus_service_status);
2813 return offset;
2816 static int
2817 svcctl_dissect_element_QueryServiceStatus_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2819 offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceStatus_service_status,0);
2821 return offset;
2824 /* IDL: WERROR svcctl_QueryServiceStatus( */
2825 /* IDL: [in] [ref] policy_handle *service_handle, */
2826 /* IDL: [out] [ref] SERVICE_STATUS *service_status */
2827 /* IDL: ); */
2829 static int
2830 svcctl_dissect_QueryServiceStatus_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2832 uint32_t status;
2834 di->dcerpc_procedure_name="QueryServiceStatus";
2835 offset = svcctl_dissect_element_QueryServiceStatus_service_status(tvb, offset, pinfo, tree, di, drep);
2836 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2838 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2840 if (status != 0)
2841 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2843 return offset;
2846 static int
2847 svcctl_dissect_QueryServiceStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2849 di->dcerpc_procedure_name="QueryServiceStatus";
2850 offset = svcctl_dissect_element_QueryServiceStatus_service_handle(tvb, offset, pinfo, tree, di, drep);
2851 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2852 return offset;
2855 static int
2856 svcctl_dissect_element_SetServiceStatus_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2858 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceStatus_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_SetServiceStatus_service_handle);
2860 return offset;
2863 static int
2864 svcctl_dissect_element_SetServiceStatus_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2866 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceStatus_service_handle, 0);
2868 return offset;
2871 static int
2872 svcctl_dissect_element_SetServiceStatus_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2874 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceStatus_service_status_, NDR_POINTER_REF, "Pointer to Service Status (SERVICE_STATUS)",hf_svcctl_svcctl_SetServiceStatus_service_status);
2876 return offset;
2879 static int
2880 svcctl_dissect_element_SetServiceStatus_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2882 offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_SetServiceStatus_service_status,0);
2884 return offset;
2887 /* IDL: WERROR svcctl_SetServiceStatus( */
2888 /* IDL: [in] [ref] policy_handle *service_handle, */
2889 /* IDL: [in] [ref] SERVICE_STATUS *service_status */
2890 /* IDL: ); */
2892 static int
2893 svcctl_dissect_SetServiceStatus_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2895 uint32_t status;
2897 di->dcerpc_procedure_name="SetServiceStatus";
2898 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2900 if (status != 0)
2901 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2903 return offset;
2906 static int
2907 svcctl_dissect_SetServiceStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2909 di->dcerpc_procedure_name="SetServiceStatus";
2910 offset = svcctl_dissect_element_SetServiceStatus_service_handle(tvb, offset, pinfo, tree, di, drep);
2911 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2912 offset = svcctl_dissect_element_SetServiceStatus_service_status(tvb, offset, pinfo, tree, di, drep);
2913 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2914 return offset;
2917 static int
2918 svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2920 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_UnlockServiceDatabase_lock_handle_, NDR_POINTER_REF, "Pointer to Lock Handle (policy_handle)",hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle);
2922 return offset;
2925 static int
2926 svcctl_dissect_element_UnlockServiceDatabase_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2928 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle, 0);
2930 return offset;
2933 /* IDL: WERROR svcctl_UnlockServiceDatabase( */
2934 /* IDL: [in] [out] [ref] policy_handle *lock_handle */
2935 /* IDL: ); */
2937 static int
2938 svcctl_dissect_UnlockServiceDatabase_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2940 uint32_t status;
2942 di->dcerpc_procedure_name="UnlockServiceDatabase";
2943 offset = svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep);
2944 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2946 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
2948 if (status != 0)
2949 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
2951 return offset;
2954 static int
2955 svcctl_dissect_UnlockServiceDatabase_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2957 di->dcerpc_procedure_name="UnlockServiceDatabase";
2958 offset = svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep);
2959 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
2960 return offset;
2963 static int
2964 svcctl_dissect_element_NotifyBootConfigStatus_machine_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2966 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_NotifyBootConfigStatus_machine_name_, NDR_POINTER_UNIQUE, "Pointer to Machine Name (uint16)",hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name);
2968 return offset;
2971 static int
2972 svcctl_dissect_element_NotifyBootConfigStatus_machine_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
2974 char *data = NULL;
2975 struct ndr_generic_array nga = { .is_conformant = false, };
2977 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2979 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
2980 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name, false, &nga, &data);
2981 proto_item_append_text(tree, ": %s", data);
2983 return offset;
2986 static int
2987 svcctl_dissect_element_NotifyBootConfigStatus_boot_acceptable(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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable, 0);
2991 return offset;
2994 /* IDL: WERROR svcctl_NotifyBootConfigStatus( */
2995 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *machine_name, */
2996 /* IDL: [in] uint32 boot_acceptable */
2997 /* IDL: ); */
2999 static int
3000 svcctl_dissect_NotifyBootConfigStatus_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3002 uint32_t status;
3004 di->dcerpc_procedure_name="NotifyBootConfigStatus";
3005 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
3007 if (status != 0)
3008 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3010 return offset;
3013 static int
3014 svcctl_dissect_NotifyBootConfigStatus_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3016 di->dcerpc_procedure_name="NotifyBootConfigStatus";
3017 offset = svcctl_dissect_element_NotifyBootConfigStatus_machine_name(tvb, offset, pinfo, tree, di, drep);
3018 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3019 offset = svcctl_dissect_element_NotifyBootConfigStatus_boot_acceptable(tvb, offset, pinfo, tree, di, drep);
3020 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3021 return offset;
3024 static int
3025 svcctl_dissect_element_SCSetServiceBitsW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3027 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SCSetServiceBitsW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_SCSetServiceBitsW_service_handle);
3029 return offset;
3032 static int
3033 svcctl_dissect_element_SCSetServiceBitsW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3035 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_service_handle, 0);
3037 return offset;
3040 static int
3041 svcctl_dissect_element_SCSetServiceBitsW_service_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3043 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_service_bits, 0);
3045 return offset;
3048 static int
3049 svcctl_dissect_element_SCSetServiceBitsW_set_bits_on(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3051 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on, 0);
3053 return offset;
3056 static int
3057 svcctl_dissect_element_SCSetServiceBitsW_update_immediately(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3059 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately, 0);
3061 return offset;
3064 static int
3065 svcctl_dissect_element_SCSetServiceBitsW_lpString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3067 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SCSetServiceBitsW_lpString_, NDR_POINTER_UNIQUE, "Pointer to LpString (uint16)",hf_svcctl_svcctl_SCSetServiceBitsW_lpString);
3069 return offset;
3072 static int
3073 svcctl_dissect_element_SCSetServiceBitsW_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3075 char *data = NULL;
3076 struct ndr_generic_array nga = { .is_conformant = false, };
3078 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3080 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3081 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsW_lpString, false, &nga, &data);
3082 proto_item_append_text(tree, ": %s", data);
3084 return offset;
3087 /* IDL: WERROR svcctl_SCSetServiceBitsW( */
3088 /* IDL: [in] [ref] policy_handle *service_handle, */
3089 /* IDL: [in] uint32 service_bits, */
3090 /* IDL: [in] uint32 set_bits_on, */
3091 /* IDL: [in] uint32 update_immediately, */
3092 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpString */
3093 /* IDL: ); */
3095 static int
3096 svcctl_dissect_SCSetServiceBitsW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3098 uint32_t status;
3100 di->dcerpc_procedure_name="SCSetServiceBitsW";
3101 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
3103 if (status != 0)
3104 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3106 return offset;
3109 static int
3110 svcctl_dissect_SCSetServiceBitsW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3112 di->dcerpc_procedure_name="SCSetServiceBitsW";
3113 offset = svcctl_dissect_element_SCSetServiceBitsW_service_handle(tvb, offset, pinfo, tree, di, drep);
3114 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3115 offset = svcctl_dissect_element_SCSetServiceBitsW_service_bits(tvb, offset, pinfo, tree, di, drep);
3116 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3117 offset = svcctl_dissect_element_SCSetServiceBitsW_set_bits_on(tvb, offset, pinfo, tree, di, drep);
3118 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3119 offset = svcctl_dissect_element_SCSetServiceBitsW_update_immediately(tvb, offset, pinfo, tree, di, drep);
3120 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3121 offset = svcctl_dissect_element_SCSetServiceBitsW_lpString(tvb, offset, pinfo, tree, di, drep);
3122 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3123 return offset;
3126 static int
3127 svcctl_dissect_element_ChangeServiceConfigW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3129 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_ChangeServiceConfigW_service_handle);
3131 return offset;
3134 static int
3135 svcctl_dissect_element_ChangeServiceConfigW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3137 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_service_handle, 0);
3139 return offset;
3142 static int
3143 svcctl_dissect_element_ChangeServiceConfigW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3145 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_service_type, 0);
3147 return offset;
3150 static int
3151 svcctl_dissect_element_ChangeServiceConfigW_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3153 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_start_type, 0);
3155 return offset;
3158 static int
3159 svcctl_dissect_element_ChangeServiceConfigW_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3161 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_error_control, 0);
3163 return offset;
3166 static int
3167 svcctl_dissect_element_ChangeServiceConfigW_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3169 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_binary_path_, NDR_POINTER_UNIQUE, "Pointer to Binary Path (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_binary_path);
3171 return offset;
3174 static int
3175 svcctl_dissect_element_ChangeServiceConfigW_binary_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3177 char *data = NULL;
3178 struct ndr_generic_array nga = { .is_conformant = false, };
3180 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3182 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3183 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_binary_path, false, &nga, &data);
3184 proto_item_append_text(tree, ": %s", data);
3186 return offset;
3189 static int
3190 svcctl_dissect_element_ChangeServiceConfigW_load_order_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3192 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_load_order_group_, NDR_POINTER_UNIQUE, "Pointer to Load Order Group (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group);
3194 return offset;
3197 static int
3198 svcctl_dissect_element_ChangeServiceConfigW_load_order_group_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3200 char *data = NULL;
3201 struct ndr_generic_array nga = { .is_conformant = false, };
3203 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3205 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3206 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group, false, &nga, &data);
3207 proto_item_append_text(tree, ": %s", data);
3209 return offset;
3212 static int
3213 svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3215 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_ChangeServiceConfigW_tag_id);
3217 return offset;
3220 static int
3221 svcctl_dissect_element_ChangeServiceConfigW_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3223 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_tag_id, 0);
3225 return offset;
3228 static int
3229 svcctl_dissect_element_ChangeServiceConfigW_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3231 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_dependencies);
3233 return offset;
3236 static int
3237 svcctl_dissect_element_ChangeServiceConfigW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3239 char *data = NULL;
3240 struct ndr_generic_array nga = { .is_conformant = false, };
3242 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3244 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3245 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_dependencies, false, &nga, &data);
3246 proto_item_append_text(tree, ": %s", data);
3248 return offset;
3251 static int
3252 svcctl_dissect_element_ChangeServiceConfigW_dwDependSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3254 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize, 0);
3256 return offset;
3259 static int
3260 svcctl_dissect_element_ChangeServiceConfigW_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3262 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name);
3264 return offset;
3267 static int
3268 svcctl_dissect_element_ChangeServiceConfigW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3270 char *data = NULL;
3271 struct ndr_generic_array nga = { .is_conformant = false, };
3273 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3275 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3276 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name, false, &nga, &data);
3277 proto_item_append_text(tree, ": %s", data);
3279 return offset;
3282 static int
3283 svcctl_dissect_element_ChangeServiceConfigW_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3285 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_password);
3287 return offset;
3290 static int
3291 svcctl_dissect_element_ChangeServiceConfigW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3293 char *data = NULL;
3294 struct ndr_generic_array nga = { .is_conformant = false, };
3296 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3298 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3299 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_password, false, &nga, &data);
3300 proto_item_append_text(tree, ": %s", data);
3302 return offset;
3305 static int
3306 svcctl_dissect_element_ChangeServiceConfigW_dwPwSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3308 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize, 0);
3310 return offset;
3313 static int
3314 svcctl_dissect_element_ChangeServiceConfigW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3316 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigW_display_name_, NDR_POINTER_UNIQUE, "Pointer to Display Name (uint16)",hf_svcctl_svcctl_ChangeServiceConfigW_display_name);
3318 return offset;
3321 static int
3322 svcctl_dissect_element_ChangeServiceConfigW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3324 char *data = NULL;
3325 struct ndr_generic_array nga = { .is_conformant = false, };
3327 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3329 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3330 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_display_name, false, &nga, &data);
3331 proto_item_append_text(tree, ": %s", data);
3333 return offset;
3336 /* IDL: WERROR svcctl_ChangeServiceConfigW( */
3337 /* IDL: [in] [ref] policy_handle *service_handle, */
3338 /* IDL: [in] svcctl_ServiceType service_type, */
3339 /* IDL: [in] svcctl_StartType start_type, */
3340 /* IDL: [in] svcctl_ErrorControl error_control, */
3341 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *binary_path, */
3342 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *load_order_group, */
3343 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
3344 /* IDL: [charset(UTF16)] [in] [size_is(dwDependSize)] [unique(1)] uint16 *dependencies, */
3345 /* IDL: [in] [range(0,SC_MAX_DEPEND_SIZE)] uint32 dwDependSize, */
3346 /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_ACCOUNT_NAME_LENGTH)] [unique(1)] uint16 *service_start_name, */
3347 /* IDL: [charset(UTF16)] [in] [size_is(dwPwSize)] [unique(1)] uint16 *password, */
3348 /* IDL: [in] [range(0,SC_MAX_PWD_SIZE)] uint32 dwPwSize, */
3349 /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_NAME_LENGTH)] [unique(1)] uint16 *display_name */
3350 /* IDL: ); */
3352 static int
3353 svcctl_dissect_ChangeServiceConfigW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3355 uint32_t status;
3357 di->dcerpc_procedure_name="ChangeServiceConfigW";
3358 offset = svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvb, offset, pinfo, tree, di, drep);
3359 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3361 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
3363 if (status != 0)
3364 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3366 return offset;
3369 static int
3370 svcctl_dissect_ChangeServiceConfigW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3372 di->dcerpc_procedure_name="ChangeServiceConfigW";
3373 offset = svcctl_dissect_element_ChangeServiceConfigW_service_handle(tvb, offset, pinfo, tree, di, drep);
3374 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3375 offset = svcctl_dissect_element_ChangeServiceConfigW_service_type(tvb, offset, pinfo, tree, di, drep);
3376 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3377 offset = svcctl_dissect_element_ChangeServiceConfigW_start_type(tvb, offset, pinfo, tree, di, drep);
3378 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3379 offset = svcctl_dissect_element_ChangeServiceConfigW_error_control(tvb, offset, pinfo, tree, di, drep);
3380 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3381 offset = svcctl_dissect_element_ChangeServiceConfigW_binary_path(tvb, offset, pinfo, tree, di, drep);
3382 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3383 offset = svcctl_dissect_element_ChangeServiceConfigW_load_order_group(tvb, offset, pinfo, tree, di, drep);
3384 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3385 offset = svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvb, offset, pinfo, tree, di, drep);
3386 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3387 offset = svcctl_dissect_element_ChangeServiceConfigW_dependencies(tvb, offset, pinfo, tree, di, drep);
3388 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3389 offset = svcctl_dissect_element_ChangeServiceConfigW_dwDependSize(tvb, offset, pinfo, tree, di, drep);
3390 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3391 offset = svcctl_dissect_element_ChangeServiceConfigW_service_start_name(tvb, offset, pinfo, tree, di, drep);
3392 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3393 offset = svcctl_dissect_element_ChangeServiceConfigW_password(tvb, offset, pinfo, tree, di, drep);
3394 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3395 offset = svcctl_dissect_element_ChangeServiceConfigW_dwPwSize(tvb, offset, pinfo, tree, di, drep);
3396 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3397 offset = svcctl_dissect_element_ChangeServiceConfigW_display_name(tvb, offset, pinfo, tree, di, drep);
3398 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3399 return offset;
3402 static int
3403 svcctl_dissect_element_CreateServiceW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3405 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceW_scm_handle);
3407 return offset;
3410 static int
3411 svcctl_dissect_element_CreateServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3413 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_scm_handle, 0);
3415 return offset;
3418 static int
3419 svcctl_dissect_element_CreateServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3421 char *data = NULL;
3422 struct ndr_generic_array nga = { .is_conformant = false, };
3424 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3426 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3427 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_ServiceName, false, &nga, &data);
3428 proto_item_append_text(tree, ": %s", data);
3430 return offset;
3433 static int
3434 svcctl_dissect_element_CreateServiceW_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3436 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_DisplayName_, NDR_POINTER_UNIQUE, "Pointer to DisplayName (uint16)",hf_svcctl_svcctl_CreateServiceW_DisplayName);
3438 return offset;
3441 static int
3442 svcctl_dissect_element_CreateServiceW_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3444 char *data = NULL;
3445 struct ndr_generic_array nga = { .is_conformant = false, };
3447 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3449 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3450 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_DisplayName, false, &nga, &data);
3451 proto_item_append_text(tree, ": %s", data);
3453 return offset;
3456 static int
3457 svcctl_dissect_element_CreateServiceW_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3459 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_desired_access, 0);
3461 return offset;
3464 static int
3465 svcctl_dissect_element_CreateServiceW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3467 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_service_type, 0);
3469 return offset;
3472 static int
3473 svcctl_dissect_element_CreateServiceW_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3475 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_start_type, 0);
3477 return offset;
3480 static int
3481 svcctl_dissect_element_CreateServiceW_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3483 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_error_control, 0);
3485 return offset;
3488 static int
3489 svcctl_dissect_element_CreateServiceW_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3491 char *data = NULL;
3492 struct ndr_generic_array nga = { .is_conformant = false, };
3494 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3496 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3497 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_binary_path, false, &nga, &data);
3498 proto_item_append_text(tree, ": %s", data);
3500 return offset;
3503 static int
3504 svcctl_dissect_element_CreateServiceW_LoadOrderGroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3506 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_LoadOrderGroup_, NDR_POINTER_UNIQUE, "Pointer to LoadOrderGroup (uint16)",hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup);
3508 return offset;
3511 static int
3512 svcctl_dissect_element_CreateServiceW_LoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3514 char *data = NULL;
3515 struct ndr_generic_array nga = { .is_conformant = false, };
3517 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3519 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3520 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup, false, &nga, &data);
3521 proto_item_append_text(tree, ": %s", data);
3523 return offset;
3526 static int
3527 svcctl_dissect_element_CreateServiceW_tag_id(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 = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_CreateServiceW_tag_id);
3531 return offset;
3534 static int
3535 svcctl_dissect_element_CreateServiceW_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3537 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_tag_id, 0);
3539 return offset;
3542 static int
3543 svcctl_dissect_element_CreateServiceW_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3545 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (uint8)",hf_svcctl_svcctl_CreateServiceW_dependencies);
3547 return offset;
3550 static int
3551 svcctl_dissect_element_CreateServiceW_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3553 struct ndr_generic_array nga = { .is_conformant = false, };
3555 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3557 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceW_dependencies__);
3559 return offset;
3562 static int
3563 svcctl_dissect_element_CreateServiceW_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3565 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_dependencies, 0);
3567 return offset;
3570 static int
3571 svcctl_dissect_element_CreateServiceW_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3573 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_dependencies_size, 0);
3575 return offset;
3578 static int
3579 svcctl_dissect_element_CreateServiceW_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3581 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint16)",hf_svcctl_svcctl_CreateServiceW_service_start_name);
3583 return offset;
3586 static int
3587 svcctl_dissect_element_CreateServiceW_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3589 char *data = NULL;
3590 struct ndr_generic_array nga = { .is_conformant = false, };
3592 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3594 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3595 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_service_start_name, false, &nga, &data);
3596 proto_item_append_text(tree, ": %s", data);
3598 return offset;
3601 static int
3602 svcctl_dissect_element_CreateServiceW_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3604 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint8)",hf_svcctl_svcctl_CreateServiceW_password);
3606 return offset;
3609 static int
3610 svcctl_dissect_element_CreateServiceW_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3612 struct ndr_generic_array nga = { .is_conformant = false, };
3614 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3616 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceW_password__);
3618 return offset;
3621 static int
3622 svcctl_dissect_element_CreateServiceW_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3624 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_password, 0);
3626 return offset;
3629 static int
3630 svcctl_dissect_element_CreateServiceW_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3632 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_password_size, 0);
3634 return offset;
3637 static int
3638 svcctl_dissect_element_CreateServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3640 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceW_service_handle);
3642 return offset;
3645 static int
3646 svcctl_dissect_element_CreateServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3648 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_service_handle, 0);
3650 return offset;
3653 /* IDL: WERROR svcctl_CreateServiceW( */
3654 /* IDL: [in] [ref] policy_handle *scm_handle, */
3655 /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */
3656 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */
3657 /* IDL: [in] uint32 desired_access, */
3658 /* IDL: [in] svcctl_ServiceType service_type, */
3659 /* IDL: [in] svcctl_StartType start_type, */
3660 /* IDL: [in] svcctl_ErrorControl error_control, */
3661 /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */
3662 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroup, */
3663 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
3664 /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */
3665 /* IDL: [in] uint32 dependencies_size, */
3666 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */
3667 /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */
3668 /* IDL: [in] uint32 password_size, */
3669 /* IDL: [out] [ref] policy_handle *service_handle */
3670 /* IDL: ); */
3672 static int
3673 svcctl_dissect_CreateServiceW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3675 uint32_t status;
3677 di->dcerpc_procedure_name="CreateServiceW";
3678 offset = svcctl_dissect_element_CreateServiceW_tag_id(tvb, offset, pinfo, tree, di, drep);
3679 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3681 offset = svcctl_dissect_element_CreateServiceW_service_handle(tvb, offset, pinfo, tree, di, drep);
3682 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3684 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
3686 if (status != 0)
3687 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3689 return offset;
3692 static int
3693 svcctl_dissect_CreateServiceW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3695 di->dcerpc_procedure_name="CreateServiceW";
3696 offset = svcctl_dissect_element_CreateServiceW_scm_handle(tvb, offset, pinfo, tree, di, drep);
3697 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3698 offset = svcctl_dissect_element_CreateServiceW_ServiceName(tvb, offset, pinfo, tree, di, drep);
3699 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3700 offset = svcctl_dissect_element_CreateServiceW_DisplayName(tvb, offset, pinfo, tree, di, drep);
3701 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3702 offset = svcctl_dissect_element_CreateServiceW_desired_access(tvb, offset, pinfo, tree, di, drep);
3703 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3704 offset = svcctl_dissect_element_CreateServiceW_service_type(tvb, offset, pinfo, tree, di, drep);
3705 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3706 offset = svcctl_dissect_element_CreateServiceW_start_type(tvb, offset, pinfo, tree, di, drep);
3707 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3708 offset = svcctl_dissect_element_CreateServiceW_error_control(tvb, offset, pinfo, tree, di, drep);
3709 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3710 offset = svcctl_dissect_element_CreateServiceW_binary_path(tvb, offset, pinfo, tree, di, drep);
3711 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3712 offset = svcctl_dissect_element_CreateServiceW_LoadOrderGroup(tvb, offset, pinfo, tree, di, drep);
3713 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3714 offset = svcctl_dissect_element_CreateServiceW_tag_id(tvb, offset, pinfo, tree, di, drep);
3715 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3716 offset = svcctl_dissect_element_CreateServiceW_dependencies(tvb, offset, pinfo, tree, di, drep);
3717 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3718 offset = svcctl_dissect_element_CreateServiceW_dependencies_size(tvb, offset, pinfo, tree, di, drep);
3719 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3720 offset = svcctl_dissect_element_CreateServiceW_service_start_name(tvb, offset, pinfo, tree, di, drep);
3721 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3722 offset = svcctl_dissect_element_CreateServiceW_password(tvb, offset, pinfo, tree, di, drep);
3723 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3724 offset = svcctl_dissect_element_CreateServiceW_password_size(tvb, offset, pinfo, tree, di, drep);
3725 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3726 return offset;
3729 static int
3730 svcctl_dissect_element_EnumDependentServicesW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3732 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_EnumDependentServicesW_service_handle);
3734 return offset;
3737 static int
3738 svcctl_dissect_element_EnumDependentServicesW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3740 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_service_handle, 0);
3742 return offset;
3745 static int
3746 svcctl_dissect_element_EnumDependentServicesW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3748 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_service_state, 0);
3750 return offset;
3753 static int
3754 svcctl_dissect_element_EnumDependentServicesW_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3756 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesW_service_status_, NDR_POINTER_REF, "Pointer to Service Status (ENUM_SERVICE_STATUSW)",hf_svcctl_svcctl_EnumDependentServicesW_service_status);
3758 return offset;
3761 static int
3762 svcctl_dissect_element_EnumDependentServicesW_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3764 struct ndr_generic_array nga = { .is_conformant = false, };
3766 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3768 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumDependentServicesW_service_status__);
3770 return offset;
3773 static int
3774 svcctl_dissect_element_EnumDependentServicesW_service_status__(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 = svcctl_dissect_struct_ENUM_SERVICE_STATUSW(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_EnumDependentServicesW_service_status,0);
3778 return offset;
3781 static int
3782 svcctl_dissect_element_EnumDependentServicesW_offered(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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_offered, 0);
3786 return offset;
3789 static int
3790 svcctl_dissect_element_EnumDependentServicesW_bytesneeded(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, svcctl_dissect_element_EnumDependentServicesW_bytesneeded_, NDR_POINTER_REF, "Pointer to Bytesneeded (uint32)",hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded);
3794 return offset;
3797 static int
3798 svcctl_dissect_element_EnumDependentServicesW_bytesneeded_(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_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded, 0);
3802 return offset;
3805 static int
3806 svcctl_dissect_element_EnumDependentServicesW_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3808 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesW_services_returned_, NDR_POINTER_REF, "Pointer to Services Returned (uint32)",hf_svcctl_svcctl_EnumDependentServicesW_services_returned);
3810 return offset;
3813 static int
3814 svcctl_dissect_element_EnumDependentServicesW_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3816 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_services_returned, 0);
3818 return offset;
3821 /* IDL: WERROR svcctl_EnumDependentServicesW( */
3822 /* IDL: [in] [ref] policy_handle *service_handle, */
3823 /* IDL: [in] svcctl_ServiceState service_state, */
3824 /* IDL: [out] [ref] [size_is(offered)] ENUM_SERVICE_STATUSW *service_status, */
3825 /* IDL: [in] [range(0,0x40000)] uint32 offered, */
3826 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytesneeded, */
3827 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *services_returned */
3828 /* IDL: ); */
3830 static int
3831 svcctl_dissect_EnumDependentServicesW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3833 uint32_t status;
3835 di->dcerpc_procedure_name="EnumDependentServicesW";
3836 offset = svcctl_dissect_element_EnumDependentServicesW_service_status(tvb, offset, pinfo, tree, di, drep);
3837 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3839 offset = svcctl_dissect_element_EnumDependentServicesW_bytesneeded(tvb, offset, pinfo, tree, di, drep);
3840 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3842 offset = svcctl_dissect_element_EnumDependentServicesW_services_returned(tvb, offset, pinfo, tree, di, drep);
3843 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3845 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
3847 if (status != 0)
3848 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
3850 return offset;
3853 static int
3854 svcctl_dissect_EnumDependentServicesW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3856 di->dcerpc_procedure_name="EnumDependentServicesW";
3857 offset = svcctl_dissect_element_EnumDependentServicesW_service_handle(tvb, offset, pinfo, tree, di, drep);
3858 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3859 offset = svcctl_dissect_element_EnumDependentServicesW_service_state(tvb, offset, pinfo, tree, di, drep);
3860 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3861 offset = svcctl_dissect_element_EnumDependentServicesW_offered(tvb, offset, pinfo, tree, di, drep);
3862 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3863 return offset;
3866 static int
3867 svcctl_dissect_element_EnumServicesStatusW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3869 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_EnumServicesStatusW_scm_handle);
3871 return offset;
3874 static int
3875 svcctl_dissect_element_EnumServicesStatusW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3877 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_scm_handle, 0);
3879 return offset;
3882 static int
3883 svcctl_dissect_element_EnumServicesStatusW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3885 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_service_type, 0);
3887 return offset;
3890 static int
3891 svcctl_dissect_element_EnumServicesStatusW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3893 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_service_state, 0);
3895 return offset;
3898 static int
3899 svcctl_dissect_element_EnumServicesStatusW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3901 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_offered, 0);
3903 return offset;
3906 static int
3907 svcctl_dissect_element_EnumServicesStatusW_resume_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3909 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusW_resume_index_, NDR_POINTER_UNIQUE, "Pointer to Resume Index (uint32)",hf_svcctl_svcctl_EnumServicesStatusW_resume_index);
3911 return offset;
3914 static int
3915 svcctl_dissect_element_EnumServicesStatusW_resume_index_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3917 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_resume_index, 0);
3919 return offset;
3922 /* IDL: WERROR svcctl_EnumServicesStatusW( */
3923 /* IDL: [in] [ref] policy_handle *scm_handle, */
3924 /* IDL: [in] svcctl_ServiceType service_type, */
3925 /* IDL: [in] svcctl_ServiceState service_state, */
3926 /* IDL: [out] [ref] [size_is(offered)] uint8 *services, */
3927 /* IDL: [in] [range(0,0x40000)] uint32 offered, */
3928 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytes_needed, */
3929 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *services_returned, */
3930 /* IDL: [in] [out] [unique(1)] uint32 *resume_index */
3931 /* IDL: ); */
3933 static int
3934 svcctl_dissect_EnumServicesStatusW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3936 di->dcerpc_procedure_name="EnumServicesStatusW";
3937 offset = svcctl_dissect_element_EnumServicesStatusW_scm_handle(tvb, offset, pinfo, tree, di, drep);
3938 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3939 offset = svcctl_dissect_element_EnumServicesStatusW_service_type(tvb, offset, pinfo, tree, di, drep);
3940 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3941 offset = svcctl_dissect_element_EnumServicesStatusW_service_state(tvb, offset, pinfo, tree, di, drep);
3942 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3943 offset = svcctl_dissect_element_EnumServicesStatusW_offered(tvb, offset, pinfo, tree, di, drep);
3944 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3945 offset = svcctl_dissect_element_EnumServicesStatusW_resume_index(tvb, offset, pinfo, tree, di, drep);
3946 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
3947 return offset;
3950 static int
3951 svcctl_dissect_element_OpenSCManagerW_MachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3953 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerW_MachineName_, NDR_POINTER_UNIQUE, "Pointer to MachineName (uint16)",hf_svcctl_svcctl_OpenSCManagerW_MachineName);
3955 return offset;
3958 static int
3959 svcctl_dissect_element_OpenSCManagerW_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3961 char *data = NULL;
3962 struct ndr_generic_array nga = { .is_conformant = false, };
3964 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3966 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3967 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_MachineName, false, &nga, &data);
3968 proto_item_append_text(tree, ": %s", data);
3970 return offset;
3973 static int
3974 svcctl_dissect_element_OpenSCManagerW_DatabaseName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3976 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerW_DatabaseName_, NDR_POINTER_UNIQUE, "Pointer to DatabaseName (uint16)",hf_svcctl_svcctl_OpenSCManagerW_DatabaseName);
3978 return offset;
3981 static int
3982 svcctl_dissect_element_OpenSCManagerW_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
3984 char *data = NULL;
3985 struct ndr_generic_array nga = { .is_conformant = false, };
3987 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3989 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
3990 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_DatabaseName, false, &nga, &data);
3991 proto_item_append_text(tree, ": %s", data);
3993 return offset;
3996 static int
3997 svcctl_dissect_element_OpenSCManagerW_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_)
3999 offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerW_access_mask, 0);
4001 return offset;
4004 static int
4005 svcctl_dissect_element_OpenSCManagerW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4007 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_OpenSCManagerW_scm_handle);
4009 return offset;
4012 static int
4013 svcctl_dissect_element_OpenSCManagerW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4015 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerW_scm_handle, 0);
4017 return offset;
4020 /* IDL: WERROR svcctl_OpenSCManagerW( */
4021 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *MachineName, */
4022 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DatabaseName, */
4023 /* IDL: [in] svcctl_MgrAccessMask access_mask, */
4024 /* IDL: [out] [ref] policy_handle *scm_handle */
4025 /* IDL: ); */
4027 static int
4028 svcctl_dissect_OpenSCManagerW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4030 uint32_t status;
4032 di->dcerpc_procedure_name="OpenSCManagerW";
4033 offset = svcctl_dissect_element_OpenSCManagerW_scm_handle(tvb, offset, pinfo, tree, di, drep);
4034 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4036 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4038 if (status != 0)
4039 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4041 return offset;
4044 static int
4045 svcctl_dissect_OpenSCManagerW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4047 di->dcerpc_procedure_name="OpenSCManagerW";
4048 offset = svcctl_dissect_element_OpenSCManagerW_MachineName(tvb, offset, pinfo, tree, di, drep);
4049 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4050 offset = svcctl_dissect_element_OpenSCManagerW_DatabaseName(tvb, offset, pinfo, tree, di, drep);
4051 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4052 offset = svcctl_dissect_element_OpenSCManagerW_access_mask(tvb, offset, pinfo, tree, di, drep);
4053 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4054 return offset;
4057 static int
4058 svcctl_dissect_element_OpenServiceW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4060 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenServiceW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_OpenServiceW_scm_handle);
4062 return offset;
4065 static int
4066 svcctl_dissect_element_OpenServiceW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4068 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_scm_handle, 0);
4070 return offset;
4073 static int
4074 svcctl_dissect_element_OpenServiceW_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4076 char *data = NULL;
4077 struct ndr_generic_array nga = { .is_conformant = false, };
4079 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4081 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4082 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenServiceW_ServiceName, false, &nga, &data);
4083 proto_item_append_text(tree, ": %s", data);
4085 return offset;
4088 static int
4089 svcctl_dissect_element_OpenServiceW_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_)
4091 offset = svcctl_dissect_bitmap_ServiceAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_access_mask, 0);
4093 return offset;
4096 static int
4097 svcctl_dissect_element_OpenServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4099 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenServiceW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_OpenServiceW_service_handle);
4101 return offset;
4104 static int
4105 svcctl_dissect_element_OpenServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4107 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_service_handle, 0);
4109 return offset;
4112 /* IDL: WERROR svcctl_OpenServiceW( */
4113 /* IDL: [in] [ref] policy_handle *scm_handle, */
4114 /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */
4115 /* IDL: [in] svcctl_ServiceAccessMask access_mask, */
4116 /* IDL: [out] [ref] policy_handle *service_handle */
4117 /* IDL: ); */
4119 static int
4120 svcctl_dissect_OpenServiceW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4122 uint32_t status;
4124 di->dcerpc_procedure_name="OpenServiceW";
4125 offset = svcctl_dissect_element_OpenServiceW_service_handle(tvb, offset, pinfo, tree, di, drep);
4126 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4128 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4130 if (status != 0)
4131 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4133 return offset;
4136 static int
4137 svcctl_dissect_OpenServiceW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4139 di->dcerpc_procedure_name="OpenServiceW";
4140 offset = svcctl_dissect_element_OpenServiceW_scm_handle(tvb, offset, pinfo, tree, di, drep);
4141 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4142 offset = svcctl_dissect_element_OpenServiceW_ServiceName(tvb, offset, pinfo, tree, di, drep);
4143 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4144 offset = svcctl_dissect_element_OpenServiceW_access_mask(tvb, offset, pinfo, tree, di, drep);
4145 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4146 return offset;
4149 static int
4150 svcctl_dissect_element_QueryServiceConfigW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4152 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceConfigW_service_handle);
4154 return offset;
4157 static int
4158 svcctl_dissect_element_QueryServiceConfigW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4160 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_service_handle, 0);
4162 return offset;
4165 static int
4166 svcctl_dissect_element_QueryServiceConfigW_service_config(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4168 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigW_service_config_, NDR_POINTER_REF, "Pointer to Service Config (QUERY_SERVICE_CONFIG)",hf_svcctl_svcctl_QueryServiceConfigW_service_config);
4170 return offset;
4173 static int
4174 svcctl_dissect_element_QueryServiceConfigW_service_config_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4176 offset = svcctl_dissect_struct_QUERY_SERVICE_CONFIG(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceConfigW_service_config,0);
4178 return offset;
4181 static int
4182 svcctl_dissect_element_QueryServiceConfigW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4184 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_offered, 0);
4186 return offset;
4189 static int
4190 svcctl_dissect_element_QueryServiceConfigW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4192 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigW_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceConfigW_needed);
4194 return offset;
4197 static int
4198 svcctl_dissect_element_QueryServiceConfigW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4200 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_needed, 0);
4202 return offset;
4205 /* IDL: WERROR svcctl_QueryServiceConfigW( */
4206 /* IDL: [in] [ref] policy_handle *service_handle, */
4207 /* IDL: [out] [ref] QUERY_SERVICE_CONFIG *service_config, */
4208 /* IDL: [in] [range(0,8192)] uint32 offered, */
4209 /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */
4210 /* IDL: ); */
4212 static int
4213 svcctl_dissect_QueryServiceConfigW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4215 uint32_t status;
4217 di->dcerpc_procedure_name="QueryServiceConfigW";
4218 offset = svcctl_dissect_element_QueryServiceConfigW_service_config(tvb, offset, pinfo, tree, di, drep);
4219 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4221 offset = svcctl_dissect_element_QueryServiceConfigW_needed(tvb, offset, pinfo, tree, di, drep);
4222 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4224 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4226 if (status != 0)
4227 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4229 return offset;
4232 static int
4233 svcctl_dissect_QueryServiceConfigW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4235 di->dcerpc_procedure_name="QueryServiceConfigW";
4236 offset = svcctl_dissect_element_QueryServiceConfigW_service_handle(tvb, offset, pinfo, tree, di, drep);
4237 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4238 offset = svcctl_dissect_element_QueryServiceConfigW_offered(tvb, offset, pinfo, tree, di, drep);
4239 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4240 return offset;
4243 static int
4244 svcctl_dissect_element_QueryServiceLockStatusW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4246 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle);
4248 return offset;
4251 static int
4252 svcctl_dissect_element_QueryServiceLockStatusW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4254 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle, 0);
4256 return offset;
4259 static int
4260 svcctl_dissect_element_QueryServiceLockStatusW_lock_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4262 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusW_lock_status_, NDR_POINTER_REF, "Pointer to Lock Status (SERVICE_LOCK_STATUS)",hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status);
4264 return offset;
4267 static int
4268 svcctl_dissect_element_QueryServiceLockStatusW_lock_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4270 offset = svcctl_dissect_struct_SERVICE_LOCK_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status,0);
4272 return offset;
4275 static int
4276 svcctl_dissect_element_QueryServiceLockStatusW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4278 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_offered, 0);
4280 return offset;
4283 static int
4284 svcctl_dissect_element_QueryServiceLockStatusW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4286 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusW_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceLockStatusW_needed);
4288 return offset;
4291 static int
4292 svcctl_dissect_element_QueryServiceLockStatusW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4294 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_needed, 0);
4296 return offset;
4299 /* IDL: WERROR svcctl_QueryServiceLockStatusW( */
4300 /* IDL: [in] [ref] policy_handle *scm_handle, */
4301 /* IDL: [out] [ref] SERVICE_LOCK_STATUS *lock_status, */
4302 /* IDL: [in] uint32 offered, */
4303 /* IDL: [out] [ref] uint32 *needed */
4304 /* IDL: ); */
4306 static int
4307 svcctl_dissect_QueryServiceLockStatusW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4309 uint32_t status;
4311 di->dcerpc_procedure_name="QueryServiceLockStatusW";
4312 offset = svcctl_dissect_element_QueryServiceLockStatusW_lock_status(tvb, offset, pinfo, tree, di, drep);
4313 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4315 offset = svcctl_dissect_element_QueryServiceLockStatusW_needed(tvb, offset, pinfo, tree, di, drep);
4316 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4318 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4320 if (status != 0)
4321 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4323 return offset;
4326 static int
4327 svcctl_dissect_QueryServiceLockStatusW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4329 di->dcerpc_procedure_name="QueryServiceLockStatusW";
4330 offset = svcctl_dissect_element_QueryServiceLockStatusW_scm_handle(tvb, offset, pinfo, tree, di, drep);
4331 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4332 offset = svcctl_dissect_element_QueryServiceLockStatusW_offered(tvb, offset, pinfo, tree, di, drep);
4333 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4334 return offset;
4337 static int
4338 svcctl_dissect_element_StartServiceW_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4340 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceW_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_StartServiceW_service_handle);
4342 return offset;
4345 static int
4346 svcctl_dissect_element_StartServiceW_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4348 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceW_service_handle, 0);
4350 return offset;
4353 static int
4354 svcctl_dissect_element_StartServiceW_NumArgs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4356 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceW_NumArgs, 0);
4358 return offset;
4361 static int
4362 svcctl_dissect_element_StartServiceW_Arguments(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4364 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceW_Arguments_, NDR_POINTER_UNIQUE, "Pointer to Arguments (svcctl_ArgumentString)",hf_svcctl_svcctl_StartServiceW_Arguments);
4366 return offset;
4369 static int
4370 svcctl_dissect_element_StartServiceW_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4372 struct ndr_generic_array nga = { .is_conformant = false, };
4374 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4376 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_StartServiceW_Arguments__);
4378 return offset;
4381 static int
4382 svcctl_dissect_element_StartServiceW_Arguments__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4384 offset = svcctl_dissect_struct_ArgumentString(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_StartServiceW_Arguments,0);
4386 return offset;
4389 /* IDL: WERROR svcctl_StartServiceW( */
4390 /* IDL: [in] [ref] policy_handle *service_handle, */
4391 /* IDL: [in] [range(0,SC_MAX_ARGUMENTS)] uint32 NumArgs, */
4392 /* IDL: [in] [size_is(NumArgs)] [unique(1)] svcctl_ArgumentString *Arguments */
4393 /* IDL: ); */
4395 static int
4396 svcctl_dissect_StartServiceW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4398 uint32_t status;
4400 di->dcerpc_procedure_name="StartServiceW";
4401 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_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 svcctl_dissect_StartServiceW_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="StartServiceW";
4413 offset = svcctl_dissect_element_StartServiceW_service_handle(tvb, offset, pinfo, tree, di, drep);
4414 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4415 offset = svcctl_dissect_element_StartServiceW_NumArgs(tvb, offset, pinfo, tree, di, drep);
4416 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4417 offset = svcctl_dissect_element_StartServiceW_Arguments(tvb, offset, pinfo, tree, di, drep);
4418 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4419 return offset;
4422 static int
4423 svcctl_dissect_element_GetServiceDisplayNameW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4425 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle);
4427 return offset;
4430 static int
4431 svcctl_dissect_element_GetServiceDisplayNameW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4433 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle, 0);
4435 return offset;
4438 static int
4439 svcctl_dissect_element_GetServiceDisplayNameW_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4441 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameW_service_name_, NDR_POINTER_UNIQUE, "Pointer to Service Name (uint16)",hf_svcctl_svcctl_GetServiceDisplayNameW_service_name);
4443 return offset;
4446 static int
4447 svcctl_dissect_element_GetServiceDisplayNameW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4449 char *data = NULL;
4450 struct ndr_generic_array nga = { .is_conformant = false, };
4452 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4454 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4455 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_service_name, false, &nga, &data);
4456 proto_item_append_text(tree, ": %s", data);
4458 return offset;
4461 static int
4462 svcctl_dissect_element_GetServiceDisplayNameW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4464 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameW_display_name_, NDR_POINTER_REF, "Pointer to Display Name (uint16)",hf_svcctl_svcctl_GetServiceDisplayNameW_display_name);
4466 return offset;
4469 static int
4470 svcctl_dissect_element_GetServiceDisplayNameW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4472 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameW_display_name__, NDR_POINTER_UNIQUE, "Pointer to Display Name (uint16)",hf_svcctl_svcctl_GetServiceDisplayNameW_display_name);
4474 return offset;
4477 static int
4478 svcctl_dissect_element_GetServiceDisplayNameW_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4480 char *data = NULL;
4481 struct ndr_generic_array nga = { .is_conformant = false, };
4483 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4485 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4486 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_display_name, false, &nga, &data);
4487 proto_item_append_text(tree, ": %s", data);
4489 return offset;
4492 static int
4493 svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(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, svcctl_dissect_element_GetServiceDisplayNameW_display_name_length_, NDR_POINTER_UNIQUE, "Pointer to Display Name Length (uint32)",hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length);
4497 return offset;
4500 static int
4501 svcctl_dissect_element_GetServiceDisplayNameW_display_name_length_(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 = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length, 0);
4505 return offset;
4508 /* IDL: WERROR svcctl_GetServiceDisplayNameW( */
4509 /* IDL: [in] [ref] policy_handle *scm_handle, */
4510 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_name, */
4511 /* IDL: [charset(UTF16)] [out] [ref] uint16 **display_name, */
4512 /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */
4513 /* IDL: ); */
4515 static int
4516 svcctl_dissect_GetServiceDisplayNameW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4518 uint32_t status;
4520 di->dcerpc_procedure_name="GetServiceDisplayNameW";
4521 offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name(tvb, offset, pinfo, tree, di, drep);
4522 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4524 offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(tvb, offset, pinfo, tree, di, drep);
4525 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4527 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4529 if (status != 0)
4530 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4532 return offset;
4535 static int
4536 svcctl_dissect_GetServiceDisplayNameW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4538 di->dcerpc_procedure_name="GetServiceDisplayNameW";
4539 offset = svcctl_dissect_element_GetServiceDisplayNameW_scm_handle(tvb, offset, pinfo, tree, di, drep);
4540 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4541 offset = svcctl_dissect_element_GetServiceDisplayNameW_service_name(tvb, offset, pinfo, tree, di, drep);
4542 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4543 offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(tvb, offset, pinfo, tree, di, drep);
4544 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4545 return offset;
4548 static int
4549 svcctl_dissect_element_GetServiceKeyNameW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4551 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle);
4553 return offset;
4556 static int
4557 svcctl_dissect_element_GetServiceKeyNameW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4559 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle, 0);
4561 return offset;
4564 static int
4565 svcctl_dissect_element_GetServiceKeyNameW_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4567 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameW_display_name_, NDR_POINTER_UNIQUE, "Pointer to Display Name (uint16)",hf_svcctl_svcctl_GetServiceKeyNameW_display_name);
4569 return offset;
4572 static int
4573 svcctl_dissect_element_GetServiceKeyNameW_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4575 char *data = NULL;
4576 struct ndr_generic_array nga = { .is_conformant = false, };
4578 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4580 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4581 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_display_name, false, &nga, &data);
4582 proto_item_append_text(tree, ": %s", data);
4584 return offset;
4587 static int
4588 svcctl_dissect_element_GetServiceKeyNameW_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4590 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameW_service_name_, NDR_POINTER_REF, "Pointer to Service Name (uint16)",hf_svcctl_svcctl_GetServiceKeyNameW_service_name);
4592 return offset;
4595 static int
4596 svcctl_dissect_element_GetServiceKeyNameW_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4598 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameW_service_name__, NDR_POINTER_UNIQUE, "Pointer to Service Name (uint16)",hf_svcctl_svcctl_GetServiceKeyNameW_service_name);
4600 return offset;
4603 static int
4604 svcctl_dissect_element_GetServiceKeyNameW_service_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4606 char *data = NULL;
4607 struct ndr_generic_array nga = { .is_conformant = false, };
4609 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4611 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4612 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_service_name, false, &nga, &data);
4613 proto_item_append_text(tree, ": %s", data);
4615 return offset;
4618 static int
4619 svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4621 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameW_service_name_length_, NDR_POINTER_UNIQUE, "Pointer to Service Name Length (uint32)",hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length);
4623 return offset;
4626 static int
4627 svcctl_dissect_element_GetServiceKeyNameW_service_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4629 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length, 0);
4631 return offset;
4634 /* IDL: WERROR svcctl_GetServiceKeyNameW( */
4635 /* IDL: [in] [ref] policy_handle *scm_handle, */
4636 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *display_name, */
4637 /* IDL: [charset(UTF16)] [out] [ref] uint16 **service_name, */
4638 /* IDL: [in] [out] [unique(1)] uint32 *service_name_length */
4639 /* IDL: ); */
4641 static int
4642 svcctl_dissect_GetServiceKeyNameW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4644 uint32_t status;
4646 di->dcerpc_procedure_name="GetServiceKeyNameW";
4647 offset = svcctl_dissect_element_GetServiceKeyNameW_service_name(tvb, offset, pinfo, tree, di, drep);
4648 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4650 offset = svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvb, offset, pinfo, tree, di, drep);
4651 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4653 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4655 if (status != 0)
4656 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4658 return offset;
4661 static int
4662 svcctl_dissect_GetServiceKeyNameW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4664 di->dcerpc_procedure_name="GetServiceKeyNameW";
4665 offset = svcctl_dissect_element_GetServiceKeyNameW_scm_handle(tvb, offset, pinfo, tree, di, drep);
4666 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4667 offset = svcctl_dissect_element_GetServiceKeyNameW_display_name(tvb, offset, pinfo, tree, di, drep);
4668 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4669 offset = svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvb, offset, pinfo, tree, di, drep);
4670 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4671 return offset;
4674 static int
4675 svcctl_dissect_element_SCSetServiceBitsA_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4677 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SCSetServiceBitsA_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_SCSetServiceBitsA_handle);
4679 return offset;
4682 static int
4683 svcctl_dissect_element_SCSetServiceBitsA_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4685 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_handle, 0);
4687 return offset;
4690 static int
4691 svcctl_dissect_element_SCSetServiceBitsA_service_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4693 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_service_bits, 0);
4695 return offset;
4698 static int
4699 svcctl_dissect_element_SCSetServiceBitsA_set_bits_on(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4701 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on, 0);
4703 return offset;
4706 static int
4707 svcctl_dissect_element_SCSetServiceBitsA_update_immediately(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4709 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately, 0);
4711 return offset;
4714 static int
4715 svcctl_dissect_element_SCSetServiceBitsA_lpString(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4717 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SCSetServiceBitsA_lpString_, NDR_POINTER_UNIQUE, "Pointer to LpString (uint16)",hf_svcctl_svcctl_SCSetServiceBitsA_lpString);
4719 return offset;
4722 static int
4723 svcctl_dissect_element_SCSetServiceBitsA_lpString_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4725 char *data = NULL;
4726 struct ndr_generic_array nga = { .is_conformant = false, };
4728 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4730 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
4731 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsA_lpString, false, &nga, &data);
4732 proto_item_append_text(tree, ": %s", data);
4734 return offset;
4737 /* IDL: WERROR svcctl_SCSetServiceBitsA( */
4738 /* IDL: [in] [ref] policy_handle *handle, */
4739 /* IDL: [in] uint32 service_bits, */
4740 /* IDL: [in] uint32 set_bits_on, */
4741 /* IDL: [in] uint32 update_immediately, */
4742 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpString */
4743 /* IDL: ); */
4745 static int
4746 svcctl_dissect_SCSetServiceBitsA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4748 uint32_t status;
4750 di->dcerpc_procedure_name="SCSetServiceBitsA";
4751 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4753 if (status != 0)
4754 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4756 return offset;
4759 static int
4760 svcctl_dissect_SCSetServiceBitsA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4762 di->dcerpc_procedure_name="SCSetServiceBitsA";
4763 offset = svcctl_dissect_element_SCSetServiceBitsA_handle(tvb, offset, pinfo, tree, di, drep);
4764 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4765 offset = svcctl_dissect_element_SCSetServiceBitsA_service_bits(tvb, offset, pinfo, tree, di, drep);
4766 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4767 offset = svcctl_dissect_element_SCSetServiceBitsA_set_bits_on(tvb, offset, pinfo, tree, di, drep);
4768 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4769 offset = svcctl_dissect_element_SCSetServiceBitsA_update_immediately(tvb, offset, pinfo, tree, di, drep);
4770 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4771 offset = svcctl_dissect_element_SCSetServiceBitsA_lpString(tvb, offset, pinfo, tree, di, drep);
4772 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4773 return offset;
4776 static int
4777 svcctl_dissect_element_ChangeServiceConfigA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4779 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_ChangeServiceConfigA_service_handle);
4781 return offset;
4784 static int
4785 svcctl_dissect_element_ChangeServiceConfigA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4787 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_handle, 0);
4789 return offset;
4792 static int
4793 svcctl_dissect_element_ChangeServiceConfigA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4795 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_type, 0);
4797 return offset;
4800 static int
4801 svcctl_dissect_element_ChangeServiceConfigA_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4803 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_start_type, 0);
4805 return offset;
4808 static int
4809 svcctl_dissect_element_ChangeServiceConfigA_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4811 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_error_control, 0);
4813 return offset;
4816 static int
4817 svcctl_dissect_element_ChangeServiceConfigA_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4819 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_binary_path_, NDR_POINTER_UNIQUE, "Pointer to Binary Path (string)",hf_svcctl_svcctl_ChangeServiceConfigA_binary_path);
4821 return offset;
4824 static int
4825 svcctl_dissect_element_ChangeServiceConfigA_binary_path_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4827 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_binary_path , 0);
4829 return offset;
4832 static int
4833 svcctl_dissect_element_ChangeServiceConfigA_load_order_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4835 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_load_order_group_, NDR_POINTER_UNIQUE, "Pointer to Load Order Group (string)",hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group);
4837 return offset;
4840 static int
4841 svcctl_dissect_element_ChangeServiceConfigA_load_order_group_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4843 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group , 0);
4845 return offset;
4848 static int
4849 svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4851 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_ChangeServiceConfigA_tag_id);
4853 return offset;
4856 static int
4857 svcctl_dissect_element_ChangeServiceConfigA_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4859 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_tag_id, 0);
4861 return offset;
4864 static int
4865 svcctl_dissect_element_ChangeServiceConfigA_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4867 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (string)",hf_svcctl_svcctl_ChangeServiceConfigA_dependencies);
4869 return offset;
4872 static int
4873 svcctl_dissect_element_ChangeServiceConfigA_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4875 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_dependencies , 0);
4877 return offset;
4880 static int
4881 svcctl_dissect_element_ChangeServiceConfigA_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4883 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (string)",hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name);
4885 return offset;
4888 static int
4889 svcctl_dissect_element_ChangeServiceConfigA_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4891 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name , 0);
4893 return offset;
4896 static int
4897 svcctl_dissect_element_ChangeServiceConfigA_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4899 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_password_, NDR_POINTER_UNIQUE, "Pointer to Password (string)",hf_svcctl_svcctl_ChangeServiceConfigA_password);
4901 return offset;
4904 static int
4905 svcctl_dissect_element_ChangeServiceConfigA_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4907 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_password , 0);
4909 return offset;
4912 static int
4913 svcctl_dissect_element_ChangeServiceConfigA_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4915 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfigA_display_name_, NDR_POINTER_UNIQUE, "Pointer to Display Name (string)",hf_svcctl_svcctl_ChangeServiceConfigA_display_name);
4917 return offset;
4920 static int
4921 svcctl_dissect_element_ChangeServiceConfigA_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4923 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_display_name , 0);
4925 return offset;
4928 /* IDL: WERROR svcctl_ChangeServiceConfigA( */
4929 /* IDL: [in] [ref] policy_handle *service_handle, */
4930 /* IDL: [in] svcctl_ServiceType service_type, */
4931 /* IDL: [in] svcctl_StartType start_type, */
4932 /* IDL: [in] svcctl_ErrorControl error_control, */
4933 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *binary_path, */
4934 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *load_order_group, */
4935 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
4936 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *dependencies, */
4937 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_start_name, */
4938 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *password, */
4939 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *display_name */
4940 /* IDL: ); */
4942 static int
4943 svcctl_dissect_ChangeServiceConfigA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4945 uint32_t status;
4947 di->dcerpc_procedure_name="ChangeServiceConfigA";
4948 offset = svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvb, offset, pinfo, tree, di, drep);
4949 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4951 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
4953 if (status != 0)
4954 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
4956 return offset;
4959 static int
4960 svcctl_dissect_ChangeServiceConfigA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4962 di->dcerpc_procedure_name="ChangeServiceConfigA";
4963 offset = svcctl_dissect_element_ChangeServiceConfigA_service_handle(tvb, offset, pinfo, tree, di, drep);
4964 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4965 offset = svcctl_dissect_element_ChangeServiceConfigA_service_type(tvb, offset, pinfo, tree, di, drep);
4966 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4967 offset = svcctl_dissect_element_ChangeServiceConfigA_start_type(tvb, offset, pinfo, tree, di, drep);
4968 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4969 offset = svcctl_dissect_element_ChangeServiceConfigA_error_control(tvb, offset, pinfo, tree, di, drep);
4970 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4971 offset = svcctl_dissect_element_ChangeServiceConfigA_binary_path(tvb, offset, pinfo, tree, di, drep);
4972 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4973 offset = svcctl_dissect_element_ChangeServiceConfigA_load_order_group(tvb, offset, pinfo, tree, di, drep);
4974 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4975 offset = svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvb, offset, pinfo, tree, di, drep);
4976 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4977 offset = svcctl_dissect_element_ChangeServiceConfigA_dependencies(tvb, offset, pinfo, tree, di, drep);
4978 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4979 offset = svcctl_dissect_element_ChangeServiceConfigA_service_start_name(tvb, offset, pinfo, tree, di, drep);
4980 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4981 offset = svcctl_dissect_element_ChangeServiceConfigA_password(tvb, offset, pinfo, tree, di, drep);
4982 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4983 offset = svcctl_dissect_element_ChangeServiceConfigA_display_name(tvb, offset, pinfo, tree, di, drep);
4984 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
4985 return offset;
4988 static int
4989 svcctl_dissect_element_CreateServiceA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4991 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceA_scm_handle);
4993 return offset;
4996 static int
4997 svcctl_dissect_element_CreateServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
4999 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_scm_handle, 0);
5001 return offset;
5004 static int
5005 svcctl_dissect_element_CreateServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5007 char *data = NULL;
5008 struct ndr_generic_array nga = { .is_conformant = false, };
5010 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5012 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5013 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_ServiceName, false, &nga, &data);
5014 proto_item_append_text(tree, ": %s", data);
5016 return offset;
5019 static int
5020 svcctl_dissect_element_CreateServiceA_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5022 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_DisplayName_, NDR_POINTER_UNIQUE, "Pointer to DisplayName (uint8)",hf_svcctl_svcctl_CreateServiceA_DisplayName);
5024 return offset;
5027 static int
5028 svcctl_dissect_element_CreateServiceA_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5030 char *data = NULL;
5031 struct ndr_generic_array nga = { .is_conformant = false, };
5033 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5035 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5036 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_DisplayName, false, &nga, &data);
5037 proto_item_append_text(tree, ": %s", data);
5039 return offset;
5042 static int
5043 svcctl_dissect_element_CreateServiceA_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5045 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_desired_access, 0);
5047 return offset;
5050 static int
5051 svcctl_dissect_element_CreateServiceA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5053 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_service_type, 0);
5055 return offset;
5058 static int
5059 svcctl_dissect_element_CreateServiceA_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5061 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_start_type, 0);
5063 return offset;
5066 static int
5067 svcctl_dissect_element_CreateServiceA_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5069 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_error_control, 0);
5071 return offset;
5074 static int
5075 svcctl_dissect_element_CreateServiceA_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5077 char *data = NULL;
5078 struct ndr_generic_array nga = { .is_conformant = false, };
5080 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5082 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5083 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_binary_path, false, &nga, &data);
5084 proto_item_append_text(tree, ": %s", data);
5086 return offset;
5089 static int
5090 svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5092 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey_, NDR_POINTER_UNIQUE, "Pointer to LoadOrderGroupKey (uint8)",hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey);
5094 return offset;
5097 static int
5098 svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5100 char *data = NULL;
5101 struct ndr_generic_array nga = { .is_conformant = false, };
5103 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5105 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5106 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey, false, &nga, &data);
5107 proto_item_append_text(tree, ": %s", data);
5109 return offset;
5112 static int
5113 svcctl_dissect_element_CreateServiceA_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5115 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_CreateServiceA_tag_id);
5117 return offset;
5120 static int
5121 svcctl_dissect_element_CreateServiceA_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5123 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_tag_id, 0);
5125 return offset;
5128 static int
5129 svcctl_dissect_element_CreateServiceA_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5131 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (string)",hf_svcctl_svcctl_CreateServiceA_dependencies);
5133 return offset;
5136 static int
5137 svcctl_dissect_element_CreateServiceA_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5139 struct ndr_generic_array nga = { .is_conformant = false, };
5141 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5143 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceA_dependencies__);
5145 return offset;
5148 static int
5149 svcctl_dissect_element_CreateServiceA_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5151 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_CreateServiceA_dependencies , 0);
5153 return offset;
5156 static int
5157 svcctl_dissect_element_CreateServiceA_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5159 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_dependencies_size, 0);
5161 return offset;
5164 static int
5165 svcctl_dissect_element_CreateServiceA_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5167 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint8)",hf_svcctl_svcctl_CreateServiceA_service_start_name);
5169 return offset;
5172 static int
5173 svcctl_dissect_element_CreateServiceA_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5175 char *data = NULL;
5176 struct ndr_generic_array nga = { .is_conformant = false, };
5178 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5180 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5181 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_service_start_name, false, &nga, &data);
5182 proto_item_append_text(tree, ": %s", data);
5184 return offset;
5187 static int
5188 svcctl_dissect_element_CreateServiceA_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5190 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint8)",hf_svcctl_svcctl_CreateServiceA_password);
5192 return offset;
5195 static int
5196 svcctl_dissect_element_CreateServiceA_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5198 struct ndr_generic_array nga = { .is_conformant = false, };
5200 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5202 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceA_password__);
5204 return offset;
5207 static int
5208 svcctl_dissect_element_CreateServiceA_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5210 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_password, 0);
5212 return offset;
5215 static int
5216 svcctl_dissect_element_CreateServiceA_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5218 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_password_size, 0);
5220 return offset;
5223 static int
5224 svcctl_dissect_element_CreateServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5226 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceA_service_handle);
5228 return offset;
5231 static int
5232 svcctl_dissect_element_CreateServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5234 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_service_handle, 0);
5236 return offset;
5239 /* IDL: WERROR svcctl_CreateServiceA( */
5240 /* IDL: [in] [ref] policy_handle *scm_handle, */
5241 /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */
5242 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DisplayName, */
5243 /* IDL: [in] uint32 desired_access, */
5244 /* IDL: [in] svcctl_ServiceType service_type, */
5245 /* IDL: [in] svcctl_StartType start_type, */
5246 /* IDL: [in] svcctl_ErrorControl error_control, */
5247 /* IDL: [charset(ASCII)] [in] uint8 binary_path[*], */
5248 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *LoadOrderGroupKey, */
5249 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
5250 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [size_is(dependencies_size)] [unique(1)] string *dependencies, */
5251 /* IDL: [in] uint32 dependencies_size, */
5252 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *service_start_name, */
5253 /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */
5254 /* IDL: [in] uint32 password_size, */
5255 /* IDL: [out] [ref] policy_handle *service_handle */
5256 /* IDL: ); */
5258 static int
5259 svcctl_dissect_CreateServiceA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5261 uint32_t status;
5263 di->dcerpc_procedure_name="CreateServiceA";
5264 offset = svcctl_dissect_element_CreateServiceA_tag_id(tvb, offset, pinfo, tree, di, drep);
5265 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5267 offset = svcctl_dissect_element_CreateServiceA_service_handle(tvb, offset, pinfo, tree, di, drep);
5268 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5270 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5272 if (status != 0)
5273 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5275 return offset;
5278 static int
5279 svcctl_dissect_CreateServiceA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5281 di->dcerpc_procedure_name="CreateServiceA";
5282 offset = svcctl_dissect_element_CreateServiceA_scm_handle(tvb, offset, pinfo, tree, di, drep);
5283 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5284 offset = svcctl_dissect_element_CreateServiceA_ServiceName(tvb, offset, pinfo, tree, di, drep);
5285 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5286 offset = svcctl_dissect_element_CreateServiceA_DisplayName(tvb, offset, pinfo, tree, di, drep);
5287 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5288 offset = svcctl_dissect_element_CreateServiceA_desired_access(tvb, offset, pinfo, tree, di, drep);
5289 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5290 offset = svcctl_dissect_element_CreateServiceA_service_type(tvb, offset, pinfo, tree, di, drep);
5291 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5292 offset = svcctl_dissect_element_CreateServiceA_start_type(tvb, offset, pinfo, tree, di, drep);
5293 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5294 offset = svcctl_dissect_element_CreateServiceA_error_control(tvb, offset, pinfo, tree, di, drep);
5295 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5296 offset = svcctl_dissect_element_CreateServiceA_binary_path(tvb, offset, pinfo, tree, di, drep);
5297 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5298 offset = svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep);
5299 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5300 offset = svcctl_dissect_element_CreateServiceA_tag_id(tvb, offset, pinfo, tree, di, drep);
5301 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5302 offset = svcctl_dissect_element_CreateServiceA_dependencies(tvb, offset, pinfo, tree, di, drep);
5303 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5304 offset = svcctl_dissect_element_CreateServiceA_dependencies_size(tvb, offset, pinfo, tree, di, drep);
5305 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5306 offset = svcctl_dissect_element_CreateServiceA_service_start_name(tvb, offset, pinfo, tree, di, drep);
5307 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5308 offset = svcctl_dissect_element_CreateServiceA_password(tvb, offset, pinfo, tree, di, drep);
5309 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5310 offset = svcctl_dissect_element_CreateServiceA_password_size(tvb, offset, pinfo, tree, di, drep);
5311 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5312 return offset;
5315 static int
5316 svcctl_dissect_element_EnumDependentServicesA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5318 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_EnumDependentServicesA_service_handle);
5320 return offset;
5323 static int
5324 svcctl_dissect_element_EnumDependentServicesA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5326 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_service_handle, 0);
5328 return offset;
5331 static int
5332 svcctl_dissect_element_EnumDependentServicesA_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5334 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_state, 0);
5336 return offset;
5339 static int
5340 svcctl_dissect_element_EnumDependentServicesA_service_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5342 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesA_service_status_, NDR_POINTER_REF, "Pointer to Service Status (ENUM_SERVICE_STATUSA)",hf_svcctl_svcctl_EnumDependentServicesA_service_status);
5344 return offset;
5347 static int
5348 svcctl_dissect_element_EnumDependentServicesA_service_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5350 offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSA(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_EnumDependentServicesA_service_status,0);
5352 return offset;
5355 static int
5356 svcctl_dissect_element_EnumDependentServicesA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5358 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_offered, 0);
5360 return offset;
5363 static int
5364 svcctl_dissect_element_EnumDependentServicesA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5366 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesA_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_EnumDependentServicesA_needed);
5368 return offset;
5371 static int
5372 svcctl_dissect_element_EnumDependentServicesA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5374 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_needed, 0);
5376 return offset;
5379 static int
5380 svcctl_dissect_element_EnumDependentServicesA_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5382 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesA_services_returned_, NDR_POINTER_REF, "Pointer to Services Returned (uint32)",hf_svcctl_svcctl_EnumDependentServicesA_services_returned);
5384 return offset;
5387 static int
5388 svcctl_dissect_element_EnumDependentServicesA_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5390 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_services_returned, 0);
5392 return offset;
5395 /* IDL: WERROR svcctl_EnumDependentServicesA( */
5396 /* IDL: [in] [ref] policy_handle *service_handle, */
5397 /* IDL: [in] svcctl_ServiceState state, */
5398 /* IDL: [out] [ref] ENUM_SERVICE_STATUSA *service_status, */
5399 /* IDL: [in] uint32 offered, */
5400 /* IDL: [out] [ref] uint32 *needed, */
5401 /* IDL: [out] [ref] uint32 *services_returned */
5402 /* IDL: ); */
5404 static int
5405 svcctl_dissect_EnumDependentServicesA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5407 uint32_t status;
5409 di->dcerpc_procedure_name="EnumDependentServicesA";
5410 offset = svcctl_dissect_element_EnumDependentServicesA_service_status(tvb, offset, pinfo, tree, di, drep);
5411 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5413 offset = svcctl_dissect_element_EnumDependentServicesA_needed(tvb, offset, pinfo, tree, di, drep);
5414 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5416 offset = svcctl_dissect_element_EnumDependentServicesA_services_returned(tvb, offset, pinfo, tree, di, drep);
5417 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5419 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5421 if (status != 0)
5422 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5424 return offset;
5427 static int
5428 svcctl_dissect_EnumDependentServicesA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5430 di->dcerpc_procedure_name="EnumDependentServicesA";
5431 offset = svcctl_dissect_element_EnumDependentServicesA_service_handle(tvb, offset, pinfo, tree, di, drep);
5432 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5433 offset = svcctl_dissect_element_EnumDependentServicesA_state(tvb, offset, pinfo, tree, di, drep);
5434 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5435 offset = svcctl_dissect_element_EnumDependentServicesA_offered(tvb, offset, pinfo, tree, di, drep);
5436 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5437 return offset;
5440 static int
5441 svcctl_dissect_element_EnumServicesStatusA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5443 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_EnumServicesStatusA_scm_handle);
5445 return offset;
5448 static int
5449 svcctl_dissect_element_EnumServicesStatusA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5451 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_scm_handle, 0);
5453 return offset;
5456 static int
5457 svcctl_dissect_element_EnumServicesStatusA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5459 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service_type, 0);
5461 return offset;
5464 static int
5465 svcctl_dissect_element_EnumServicesStatusA_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5467 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service_state, 0);
5469 return offset;
5472 static int
5473 svcctl_dissect_element_EnumServicesStatusA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5475 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_offered, 0);
5477 return offset;
5480 static int
5481 svcctl_dissect_element_EnumServicesStatusA_service(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5483 struct ndr_generic_array nga = { .is_conformant = false, };
5485 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5487 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusA_service_);
5489 return offset;
5492 static int
5493 svcctl_dissect_element_EnumServicesStatusA_service_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5495 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service, 0);
5497 return offset;
5500 static int
5501 svcctl_dissect_element_EnumServicesStatusA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5503 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_EnumServicesStatusA_needed);
5505 return offset;
5508 static int
5509 svcctl_dissect_element_EnumServicesStatusA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5511 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_needed, 0);
5513 return offset;
5516 static int
5517 svcctl_dissect_element_EnumServicesStatusA_services_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5519 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_services_returned_, NDR_POINTER_REF, "Pointer to Services Returned (uint32)",hf_svcctl_svcctl_EnumServicesStatusA_services_returned);
5521 return offset;
5524 static int
5525 svcctl_dissect_element_EnumServicesStatusA_services_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5527 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_services_returned, 0);
5529 return offset;
5532 static int
5533 svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5535 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_resume_handle_, NDR_POINTER_UNIQUE, "Pointer to Resume Handle (uint32)",hf_svcctl_svcctl_EnumServicesStatusA_resume_handle);
5537 return offset;
5540 static int
5541 svcctl_dissect_element_EnumServicesStatusA_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5543 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_resume_handle, 0);
5545 return offset;
5548 /* IDL: WERROR svcctl_EnumServicesStatusA( */
5549 /* IDL: [in] [ref] policy_handle *scm_handle, */
5550 /* IDL: [in] svcctl_ServiceType service_type, */
5551 /* IDL: [in] svcctl_ServiceState service_state, */
5552 /* IDL: [in] uint32 offered, */
5553 /* IDL: [out] [size_is(offered)] uint8 service[*], */
5554 /* IDL: [out] [ref] uint32 *needed, */
5555 /* IDL: [out] [ref] uint32 *services_returned, */
5556 /* IDL: [in] [out] [unique(1)] uint32 *resume_handle */
5557 /* IDL: ); */
5559 static int
5560 svcctl_dissect_EnumServicesStatusA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5562 uint32_t status;
5564 di->dcerpc_procedure_name="EnumServicesStatusA";
5565 offset = svcctl_dissect_element_EnumServicesStatusA_service(tvb, offset, pinfo, tree, di, drep);
5566 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5568 offset = svcctl_dissect_element_EnumServicesStatusA_needed(tvb, offset, pinfo, tree, di, drep);
5569 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5571 offset = svcctl_dissect_element_EnumServicesStatusA_services_returned(tvb, offset, pinfo, tree, di, drep);
5572 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5574 offset = svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvb, offset, pinfo, tree, di, drep);
5575 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5577 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5579 if (status != 0)
5580 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5582 return offset;
5585 static int
5586 svcctl_dissect_EnumServicesStatusA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5588 di->dcerpc_procedure_name="EnumServicesStatusA";
5589 offset = svcctl_dissect_element_EnumServicesStatusA_scm_handle(tvb, offset, pinfo, tree, di, drep);
5590 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5591 offset = svcctl_dissect_element_EnumServicesStatusA_service_type(tvb, offset, pinfo, tree, di, drep);
5592 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5593 offset = svcctl_dissect_element_EnumServicesStatusA_service_state(tvb, offset, pinfo, tree, di, drep);
5594 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5595 offset = svcctl_dissect_element_EnumServicesStatusA_offered(tvb, offset, pinfo, tree, di, drep);
5596 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5597 offset = svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvb, offset, pinfo, tree, di, drep);
5598 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5599 return offset;
5602 static int
5603 svcctl_dissect_element_OpenSCManagerA_MachineName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5605 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerA_MachineName_, NDR_POINTER_UNIQUE, "Pointer to MachineName (uint8)",hf_svcctl_svcctl_OpenSCManagerA_MachineName);
5607 return offset;
5610 static int
5611 svcctl_dissect_element_OpenSCManagerA_MachineName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5613 char *data = NULL;
5614 struct ndr_generic_array nga = { .is_conformant = false, };
5616 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5618 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5619 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_MachineName, false, &nga, &data);
5620 proto_item_append_text(tree, ": %s", data);
5622 return offset;
5625 static int
5626 svcctl_dissect_element_OpenSCManagerA_DatabaseName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5628 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerA_DatabaseName_, NDR_POINTER_UNIQUE, "Pointer to DatabaseName (uint8)",hf_svcctl_svcctl_OpenSCManagerA_DatabaseName);
5630 return offset;
5633 static int
5634 svcctl_dissect_element_OpenSCManagerA_DatabaseName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5636 char *data = NULL;
5637 struct ndr_generic_array nga = { .is_conformant = false, };
5639 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5641 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5642 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_DatabaseName, false, &nga, &data);
5643 proto_item_append_text(tree, ": %s", data);
5645 return offset;
5648 static int
5649 svcctl_dissect_element_OpenSCManagerA_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_)
5651 offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerA_access_mask, 0);
5653 return offset;
5656 static int
5657 svcctl_dissect_element_OpenSCManagerA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5659 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManagerA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_OpenSCManagerA_scm_handle);
5661 return offset;
5664 static int
5665 svcctl_dissect_element_OpenSCManagerA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5667 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerA_scm_handle, 0);
5669 return offset;
5672 /* IDL: WERROR svcctl_OpenSCManagerA( */
5673 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *MachineName, */
5674 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DatabaseName, */
5675 /* IDL: [in] svcctl_MgrAccessMask access_mask, */
5676 /* IDL: [out] [ref] policy_handle *scm_handle */
5677 /* IDL: ); */
5679 static int
5680 svcctl_dissect_OpenSCManagerA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5682 uint32_t status;
5684 di->dcerpc_procedure_name="OpenSCManagerA";
5685 offset = svcctl_dissect_element_OpenSCManagerA_scm_handle(tvb, offset, pinfo, tree, di, drep);
5686 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5688 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5690 if (status != 0)
5691 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5693 return offset;
5696 static int
5697 svcctl_dissect_OpenSCManagerA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5699 di->dcerpc_procedure_name="OpenSCManagerA";
5700 offset = svcctl_dissect_element_OpenSCManagerA_MachineName(tvb, offset, pinfo, tree, di, drep);
5701 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5702 offset = svcctl_dissect_element_OpenSCManagerA_DatabaseName(tvb, offset, pinfo, tree, di, drep);
5703 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5704 offset = svcctl_dissect_element_OpenSCManagerA_access_mask(tvb, offset, pinfo, tree, di, drep);
5705 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5706 return offset;
5709 static int
5710 svcctl_dissect_element_OpenServiceA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5712 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenServiceA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_OpenServiceA_scm_handle);
5714 return offset;
5717 static int
5718 svcctl_dissect_element_OpenServiceA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5720 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_scm_handle, 0);
5722 return offset;
5725 static int
5726 svcctl_dissect_element_OpenServiceA_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5728 char *data = NULL;
5729 struct ndr_generic_array nga = { .is_conformant = false, };
5731 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5733 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5734 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenServiceA_ServiceName, false, &nga, &data);
5735 proto_item_append_text(tree, ": %s", data);
5737 return offset;
5740 static int
5741 svcctl_dissect_element_OpenServiceA_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_)
5743 offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_access_mask, 0);
5745 return offset;
5748 static int
5749 svcctl_dissect_element_OpenServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5751 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenServiceA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_OpenServiceA_service_handle);
5753 return offset;
5756 static int
5757 svcctl_dissect_element_OpenServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5759 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_service_handle, 0);
5761 return offset;
5764 /* IDL: WERROR svcctl_OpenServiceA( */
5765 /* IDL: [in] [ref] policy_handle *scm_handle, */
5766 /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */
5767 /* IDL: [in] svcctl_MgrAccessMask access_mask, */
5768 /* IDL: [out] [ref] policy_handle *service_handle */
5769 /* IDL: ); */
5771 static int
5772 svcctl_dissect_OpenServiceA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5774 uint32_t status;
5776 di->dcerpc_procedure_name="OpenServiceA";
5777 offset = svcctl_dissect_element_OpenServiceA_service_handle(tvb, offset, pinfo, tree, di, drep);
5778 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5780 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5782 if (status != 0)
5783 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5785 return offset;
5788 static int
5789 svcctl_dissect_OpenServiceA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5791 di->dcerpc_procedure_name="OpenServiceA";
5792 offset = svcctl_dissect_element_OpenServiceA_scm_handle(tvb, offset, pinfo, tree, di, drep);
5793 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5794 offset = svcctl_dissect_element_OpenServiceA_ServiceName(tvb, offset, pinfo, tree, di, drep);
5795 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5796 offset = svcctl_dissect_element_OpenServiceA_access_mask(tvb, offset, pinfo, tree, di, drep);
5797 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5798 return offset;
5801 static int
5802 svcctl_dissect_element_QueryServiceConfigA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5804 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceConfigA_service_handle);
5806 return offset;
5809 static int
5810 svcctl_dissect_element_QueryServiceConfigA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5812 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_service_handle, 0);
5814 return offset;
5817 static int
5818 svcctl_dissect_element_QueryServiceConfigA_query(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5820 struct ndr_generic_array nga = { .is_conformant = false, };
5822 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
5824 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfigA_query_);
5826 return offset;
5829 static int
5830 svcctl_dissect_element_QueryServiceConfigA_query_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5832 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_query, 0);
5834 return offset;
5837 static int
5838 svcctl_dissect_element_QueryServiceConfigA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5840 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_offered, 0);
5842 return offset;
5845 static int
5846 svcctl_dissect_element_QueryServiceConfigA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5848 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigA_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceConfigA_needed);
5850 return offset;
5853 static int
5854 svcctl_dissect_element_QueryServiceConfigA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5856 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_needed, 0);
5858 return offset;
5861 /* IDL: WERROR svcctl_QueryServiceConfigA( */
5862 /* IDL: [in] [ref] policy_handle *service_handle, */
5863 /* IDL: [out] [size_is(cbBufSize)] uint8 query[*], */
5864 /* IDL: [in] uint32 offered, */
5865 /* IDL: [out] [ref] uint32 *needed */
5866 /* IDL: ); */
5868 static int
5869 svcctl_dissect_QueryServiceConfigA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5871 uint32_t status;
5873 di->dcerpc_procedure_name="QueryServiceConfigA";
5874 offset = svcctl_dissect_element_QueryServiceConfigA_query(tvb, offset, pinfo, tree, di, drep);
5875 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5877 offset = svcctl_dissect_element_QueryServiceConfigA_needed(tvb, offset, pinfo, tree, di, drep);
5878 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5880 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5882 if (status != 0)
5883 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5885 return offset;
5888 static int
5889 svcctl_dissect_QueryServiceConfigA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5891 di->dcerpc_procedure_name="QueryServiceConfigA";
5892 offset = svcctl_dissect_element_QueryServiceConfigA_service_handle(tvb, offset, pinfo, tree, di, drep);
5893 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5894 offset = svcctl_dissect_element_QueryServiceConfigA_offered(tvb, offset, pinfo, tree, di, drep);
5895 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5896 return offset;
5899 static int
5900 svcctl_dissect_element_QueryServiceLockStatusA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5902 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle);
5904 return offset;
5907 static int
5908 svcctl_dissect_element_QueryServiceLockStatusA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5910 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle, 0);
5912 return offset;
5915 static int
5916 svcctl_dissect_element_QueryServiceLockStatusA_lock_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5918 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusA_lock_status_, NDR_POINTER_REF, "Pointer to Lock Status (SERVICE_LOCK_STATUS)",hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status);
5920 return offset;
5923 static int
5924 svcctl_dissect_element_QueryServiceLockStatusA_lock_status_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5926 offset = svcctl_dissect_struct_SERVICE_LOCK_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status,0);
5928 return offset;
5931 static int
5932 svcctl_dissect_element_QueryServiceLockStatusA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5934 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_offered, 0);
5936 return offset;
5939 static int
5940 svcctl_dissect_element_QueryServiceLockStatusA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5942 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceLockStatusA_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceLockStatusA_needed);
5944 return offset;
5947 static int
5948 svcctl_dissect_element_QueryServiceLockStatusA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5950 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_needed, 0);
5952 return offset;
5955 /* IDL: WERROR svcctl_QueryServiceLockStatusA( */
5956 /* IDL: [in] [ref] policy_handle *scm_handle, */
5957 /* IDL: [out] [ref] SERVICE_LOCK_STATUS *lock_status, */
5958 /* IDL: [in] uint32 offered, */
5959 /* IDL: [out] [ref] uint32 *needed */
5960 /* IDL: ); */
5962 static int
5963 svcctl_dissect_QueryServiceLockStatusA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5965 uint32_t status;
5967 di->dcerpc_procedure_name="QueryServiceLockStatusA";
5968 offset = svcctl_dissect_element_QueryServiceLockStatusA_lock_status(tvb, offset, pinfo, tree, di, drep);
5969 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5971 offset = svcctl_dissect_element_QueryServiceLockStatusA_needed(tvb, offset, pinfo, tree, di, drep);
5972 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5974 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
5976 if (status != 0)
5977 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
5979 return offset;
5982 static int
5983 svcctl_dissect_QueryServiceLockStatusA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5985 di->dcerpc_procedure_name="QueryServiceLockStatusA";
5986 offset = svcctl_dissect_element_QueryServiceLockStatusA_scm_handle(tvb, offset, pinfo, tree, di, drep);
5987 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5988 offset = svcctl_dissect_element_QueryServiceLockStatusA_offered(tvb, offset, pinfo, tree, di, drep);
5989 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
5990 return offset;
5993 static int
5994 svcctl_dissect_element_StartServiceA_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
5996 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceA_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_StartServiceA_service_handle);
5998 return offset;
6001 static int
6002 svcctl_dissect_element_StartServiceA_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6004 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceA_service_handle, 0);
6006 return offset;
6009 static int
6010 svcctl_dissect_element_StartServiceA_NumArgs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6012 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceA_NumArgs, 0);
6014 return offset;
6017 static int
6018 svcctl_dissect_element_StartServiceA_Arguments(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6020 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceA_Arguments_, NDR_POINTER_UNIQUE, "Pointer to Arguments (svcctl_ArgumentStringA)",hf_svcctl_svcctl_StartServiceA_Arguments);
6022 return offset;
6025 static int
6026 svcctl_dissect_element_StartServiceA_Arguments_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6028 struct ndr_generic_array nga = { .is_conformant = false, };
6030 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6032 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_StartServiceA_Arguments__);
6034 return offset;
6037 static int
6038 svcctl_dissect_element_StartServiceA_Arguments__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6040 offset = svcctl_dissect_struct_ArgumentStringA(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_StartServiceA_Arguments,0);
6042 return offset;
6045 /* IDL: WERROR svcctl_StartServiceA( */
6046 /* IDL: [in] [ref] policy_handle *service_handle, */
6047 /* IDL: [in] uint32 NumArgs, */
6048 /* IDL: [in] [size_is(NumArgs)] [unique(1)] svcctl_ArgumentStringA *Arguments */
6049 /* IDL: ); */
6051 static int
6052 svcctl_dissect_StartServiceA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6054 uint32_t status;
6056 di->dcerpc_procedure_name="StartServiceA";
6057 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6059 if (status != 0)
6060 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6062 return offset;
6065 static int
6066 svcctl_dissect_StartServiceA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6068 di->dcerpc_procedure_name="StartServiceA";
6069 offset = svcctl_dissect_element_StartServiceA_service_handle(tvb, offset, pinfo, tree, di, drep);
6070 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6071 offset = svcctl_dissect_element_StartServiceA_NumArgs(tvb, offset, pinfo, tree, di, drep);
6072 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6073 offset = svcctl_dissect_element_StartServiceA_Arguments(tvb, offset, pinfo, tree, di, drep);
6074 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6075 return offset;
6078 static int
6079 svcctl_dissect_element_GetServiceDisplayNameA_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6081 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameA_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_GetServiceDisplayNameA_handle);
6083 return offset;
6086 static int
6087 svcctl_dissect_element_GetServiceDisplayNameA_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6089 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_handle, 0);
6091 return offset;
6094 static int
6095 svcctl_dissect_element_GetServiceDisplayNameA_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6097 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameA_service_name_, NDR_POINTER_UNIQUE, "Pointer to Service Name (string)",hf_svcctl_svcctl_GetServiceDisplayNameA_service_name);
6099 return offset;
6102 static int
6103 svcctl_dissect_element_GetServiceDisplayNameA_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6105 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_service_name , 0);
6107 return offset;
6110 static int
6111 svcctl_dissect_element_GetServiceDisplayNameA_display_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6113 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameA_display_name_, NDR_POINTER_REF, "Pointer to Display Name (uint8)",hf_svcctl_svcctl_GetServiceDisplayNameA_display_name);
6115 return offset;
6118 static int
6119 svcctl_dissect_element_GetServiceDisplayNameA_display_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6121 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameA_display_name__, NDR_POINTER_UNIQUE, "Pointer to Display Name (uint8)",hf_svcctl_svcctl_GetServiceDisplayNameA_display_name);
6123 return offset;
6126 static int
6127 svcctl_dissect_element_GetServiceDisplayNameA_display_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6129 char *data = NULL;
6130 struct ndr_generic_array nga = { .is_conformant = false, };
6132 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6134 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6135 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceDisplayNameA_display_name, false, &nga, &data);
6136 proto_item_append_text(tree, ": %s", data);
6138 return offset;
6141 static int
6142 svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6144 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceDisplayNameA_display_name_length_, NDR_POINTER_UNIQUE, "Pointer to Display Name Length (uint32)",hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length);
6146 return offset;
6149 static int
6150 svcctl_dissect_element_GetServiceDisplayNameA_display_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6152 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length, 0);
6154 return offset;
6157 /* IDL: WERROR svcctl_GetServiceDisplayNameA( */
6158 /* IDL: [in] [ref] policy_handle *handle, */
6159 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_name, */
6160 /* IDL: [charset(ASCII)] [out] [ref] uint8 **display_name, */
6161 /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */
6162 /* IDL: ); */
6164 static int
6165 svcctl_dissect_GetServiceDisplayNameA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6167 uint32_t status;
6169 di->dcerpc_procedure_name="GetServiceDisplayNameA";
6170 offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name(tvb, offset, pinfo, tree, di, drep);
6171 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6173 offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvb, offset, pinfo, tree, di, drep);
6174 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6176 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6178 if (status != 0)
6179 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6181 return offset;
6184 static int
6185 svcctl_dissect_GetServiceDisplayNameA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6187 di->dcerpc_procedure_name="GetServiceDisplayNameA";
6188 offset = svcctl_dissect_element_GetServiceDisplayNameA_handle(tvb, offset, pinfo, tree, di, drep);
6189 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6190 offset = svcctl_dissect_element_GetServiceDisplayNameA_service_name(tvb, offset, pinfo, tree, di, drep);
6191 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6192 offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvb, offset, pinfo, tree, di, drep);
6193 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6194 return offset;
6197 static int
6198 svcctl_dissect_element_GetServiceKeyNameA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6200 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle);
6202 return offset;
6205 static int
6206 svcctl_dissect_element_GetServiceKeyNameA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6208 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle, 0);
6210 return offset;
6213 static int
6214 svcctl_dissect_element_GetServiceKeyNameA_service_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6216 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameA_service_name_, NDR_POINTER_UNIQUE, "Pointer to Service Name (string)",hf_svcctl_svcctl_GetServiceKeyNameA_service_name);
6218 return offset;
6221 static int
6222 svcctl_dissect_element_GetServiceKeyNameA_service_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6224 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_GetServiceKeyNameA_service_name , 0);
6226 return offset;
6229 static int
6230 svcctl_dissect_element_GetServiceKeyNameA_key_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6232 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameA_key_name_, NDR_POINTER_REF, "Pointer to Key Name (uint8)",hf_svcctl_svcctl_GetServiceKeyNameA_key_name);
6234 return offset;
6237 static int
6238 svcctl_dissect_element_GetServiceKeyNameA_key_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6240 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameA_key_name__, NDR_POINTER_UNIQUE, "Pointer to Key Name (uint8)",hf_svcctl_svcctl_GetServiceKeyNameA_key_name);
6242 return offset;
6245 static int
6246 svcctl_dissect_element_GetServiceKeyNameA_key_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6248 char *data = NULL;
6249 struct ndr_generic_array nga = { .is_conformant = false, };
6251 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6253 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6254 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceKeyNameA_key_name, false, &nga, &data);
6255 proto_item_append_text(tree, ": %s", data);
6257 return offset;
6260 static int
6261 svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6263 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetServiceKeyNameA_display_name_length_, NDR_POINTER_UNIQUE, "Pointer to Display Name Length (uint32)",hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length);
6265 return offset;
6268 static int
6269 svcctl_dissect_element_GetServiceKeyNameA_display_name_length_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6271 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length, 0);
6273 return offset;
6276 /* IDL: WERROR svcctl_GetServiceKeyNameA( */
6277 /* IDL: [in] [ref] policy_handle *scm_handle, */
6278 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_name, */
6279 /* IDL: [charset(ASCII)] [out] [ref] uint8 **key_name, */
6280 /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */
6281 /* IDL: ); */
6283 static int
6284 svcctl_dissect_GetServiceKeyNameA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6286 uint32_t status;
6288 di->dcerpc_procedure_name="GetServiceKeyNameA";
6289 offset = svcctl_dissect_element_GetServiceKeyNameA_key_name(tvb, offset, pinfo, tree, di, drep);
6290 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6292 offset = svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvb, offset, pinfo, tree, di, drep);
6293 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6295 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6297 if (status != 0)
6298 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6300 return offset;
6303 static int
6304 svcctl_dissect_GetServiceKeyNameA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6306 di->dcerpc_procedure_name="GetServiceKeyNameA";
6307 offset = svcctl_dissect_element_GetServiceKeyNameA_scm_handle(tvb, offset, pinfo, tree, di, drep);
6308 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6309 offset = svcctl_dissect_element_GetServiceKeyNameA_service_name(tvb, offset, pinfo, tree, di, drep);
6310 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6311 offset = svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvb, offset, pinfo, tree, di, drep);
6312 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6313 return offset;
6316 static int
6317 svcctl_dissect_element_GetCurrentGroupeStateW_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6319 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetCurrentGroupeStateW_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_GetCurrentGroupeStateW_handle);
6321 return offset;
6324 static int
6325 svcctl_dissect_element_GetCurrentGroupeStateW_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6327 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetCurrentGroupeStateW_handle, 0);
6329 return offset;
6332 static int
6333 svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6335 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup_, NDR_POINTER_UNIQUE, "Pointer to LpLoadOrderGroup (uint16)",hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup);
6337 return offset;
6340 static int
6341 svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6343 char *data = NULL;
6344 struct ndr_generic_array nga = { .is_conformant = false, };
6346 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6348 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6349 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup, false, &nga, &data);
6350 proto_item_append_text(tree, ": %s", data);
6352 return offset;
6355 static int
6356 svcctl_dissect_element_GetCurrentGroupeStateW_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6358 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_GetCurrentGroupeStateW_state_, NDR_POINTER_REF, "Pointer to State (uint32)",hf_svcctl_svcctl_GetCurrentGroupeStateW_state);
6360 return offset;
6363 static int
6364 svcctl_dissect_element_GetCurrentGroupeStateW_state_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6366 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetCurrentGroupeStateW_state, 0);
6368 return offset;
6371 /* IDL: WERROR svcctl_GetCurrentGroupeStateW( */
6372 /* IDL: [in] [ref] policy_handle *handle, */
6373 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpLoadOrderGroup, */
6374 /* IDL: [out] [ref] uint32 *state */
6375 /* IDL: ); */
6377 static int
6378 svcctl_dissect_GetCurrentGroupeStateW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6380 uint32_t status;
6382 di->dcerpc_procedure_name="GetCurrentGroupeStateW";
6383 offset = svcctl_dissect_element_GetCurrentGroupeStateW_state(tvb, offset, pinfo, tree, di, drep);
6384 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6386 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6388 if (status != 0)
6389 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6391 return offset;
6394 static int
6395 svcctl_dissect_GetCurrentGroupeStateW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6397 di->dcerpc_procedure_name="GetCurrentGroupeStateW";
6398 offset = svcctl_dissect_element_GetCurrentGroupeStateW_handle(tvb, offset, pinfo, tree, di, drep);
6399 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6400 offset = svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup(tvb, offset, pinfo, tree, di, drep);
6401 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6402 return offset;
6405 static int
6406 svcctl_dissect_element_EnumServiceGroupW_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6408 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_EnumServiceGroupW_scm_handle);
6410 return offset;
6413 static int
6414 svcctl_dissect_element_EnumServiceGroupW_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6416 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_scm_handle, 0);
6418 return offset;
6421 static int
6422 svcctl_dissect_element_EnumServiceGroupW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6424 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_service_type, 0);
6426 return offset;
6429 static int
6430 svcctl_dissect_element_EnumServiceGroupW_service_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6432 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_service_state, 0);
6434 return offset;
6437 static int
6438 svcctl_dissect_element_EnumServiceGroupW_lpBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6440 struct ndr_generic_array nga = { .is_conformant = false, };
6442 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6444 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServiceGroupW_lpBuffer_);
6446 return offset;
6449 static int
6450 svcctl_dissect_element_EnumServiceGroupW_lpBuffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6452 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer, 0);
6454 return offset;
6457 static int
6458 svcctl_dissect_element_EnumServiceGroupW_cbBufSize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6460 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize, 0);
6462 return offset;
6465 static int
6466 svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6468 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded_, NDR_POINTER_REF, "Pointer to PcbBytesNeeded (uint32)",hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded);
6470 return offset;
6473 static int
6474 svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6476 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded, 0);
6478 return offset;
6481 static int
6482 svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6484 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned_, NDR_POINTER_REF, "Pointer to LpServicesReturned (uint32)",hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned);
6486 return offset;
6489 static int
6490 svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6492 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned, 0);
6494 return offset;
6497 static int
6498 svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6500 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_ResumeIndex_, NDR_POINTER_UNIQUE, "Pointer to ResumeIndex (uint32)",hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex);
6502 return offset;
6505 static int
6506 svcctl_dissect_element_EnumServiceGroupW_ResumeIndex_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6508 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex, 0);
6510 return offset;
6513 static int
6514 svcctl_dissect_element_EnumServiceGroupW_pszGroupName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6516 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_pszGroupName_, NDR_POINTER_UNIQUE, "Pointer to PszGroupName (uint16)",hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName);
6518 return offset;
6521 static int
6522 svcctl_dissect_element_EnumServiceGroupW_pszGroupName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6524 char *data = NULL;
6525 struct ndr_generic_array nga = { .is_conformant = false, };
6527 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6529 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6530 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName, false, &nga, &data);
6531 proto_item_append_text(tree, ": %s", data);
6533 return offset;
6536 /* IDL: WERROR svcctl_EnumServiceGroupW( */
6537 /* IDL: [in] [ref] policy_handle *scm_handle, */
6538 /* IDL: [in] svcctl_ServiceType service_type, */
6539 /* IDL: [in] svcctl_ServiceState service_state, */
6540 /* IDL: [out] [size_is(cbBufSize)] uint8 lpBuffer[*], */
6541 /* IDL: [in] [range(0,1024*256)] uint32 cbBufSize, */
6542 /* IDL: [out] [range(0,1024*256)] [ref] uint32 *pcbBytesNeeded, */
6543 /* IDL: [out] [range(0,1024*256)] [ref] uint32 *lpServicesReturned, */
6544 /* IDL: [in] [out] [unique(1)] uint32 *ResumeIndex, */
6545 /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_NAME_LENGTH)] [unique(1)] uint16 *pszGroupName */
6546 /* IDL: ); */
6548 static int
6549 svcctl_dissect_EnumServiceGroupW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6551 uint32_t status;
6553 di->dcerpc_procedure_name="EnumServiceGroupW";
6554 offset = svcctl_dissect_element_EnumServiceGroupW_lpBuffer(tvb, offset, pinfo, tree, di, drep);
6555 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6557 offset = svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded(tvb, offset, pinfo, tree, di, drep);
6558 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6560 offset = svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned(tvb, offset, pinfo, tree, di, drep);
6561 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6563 offset = svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvb, offset, pinfo, tree, di, drep);
6564 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6566 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6568 if (status != 0)
6569 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6571 return offset;
6574 static int
6575 svcctl_dissect_EnumServiceGroupW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6577 di->dcerpc_procedure_name="EnumServiceGroupW";
6578 offset = svcctl_dissect_element_EnumServiceGroupW_scm_handle(tvb, offset, pinfo, tree, di, drep);
6579 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6580 offset = svcctl_dissect_element_EnumServiceGroupW_service_type(tvb, offset, pinfo, tree, di, drep);
6581 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6582 offset = svcctl_dissect_element_EnumServiceGroupW_service_state(tvb, offset, pinfo, tree, di, drep);
6583 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6584 offset = svcctl_dissect_element_EnumServiceGroupW_cbBufSize(tvb, offset, pinfo, tree, di, drep);
6585 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6586 offset = svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvb, offset, pinfo, tree, di, drep);
6587 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6588 offset = svcctl_dissect_element_EnumServiceGroupW_pszGroupName(tvb, offset, pinfo, tree, di, drep);
6589 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6590 return offset;
6593 static int
6594 svcctl_dissect_element_ChangeServiceConfig2A_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6596 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfig2A_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle);
6598 return offset;
6601 static int
6602 svcctl_dissect_element_ChangeServiceConfig2A_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6604 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle, 0);
6606 return offset;
6609 static int
6610 svcctl_dissect_element_ChangeServiceConfig2A_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6612 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_info_level, 0);
6614 return offset;
6617 static int
6618 svcctl_dissect_element_ChangeServiceConfig2A_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6620 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfig2A_info_, NDR_POINTER_UNIQUE, "Pointer to Info (uint8)",hf_svcctl_svcctl_ChangeServiceConfig2A_info);
6622 return offset;
6625 static int
6626 svcctl_dissect_element_ChangeServiceConfig2A_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6628 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_info, 0);
6630 return offset;
6633 /* IDL: WERROR svcctl_ChangeServiceConfig2A( */
6634 /* IDL: [in] [ref] policy_handle *service_handle, */
6635 /* IDL: [in] uint32 info_level, */
6636 /* IDL: [in] [unique(1)] uint8 *info */
6637 /* IDL: ); */
6639 static int
6640 svcctl_dissect_ChangeServiceConfig2A_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6642 uint32_t status;
6644 di->dcerpc_procedure_name="ChangeServiceConfig2A";
6645 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6647 if (status != 0)
6648 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6650 return offset;
6653 static int
6654 svcctl_dissect_ChangeServiceConfig2A_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6656 di->dcerpc_procedure_name="ChangeServiceConfig2A";
6657 offset = svcctl_dissect_element_ChangeServiceConfig2A_service_handle(tvb, offset, pinfo, tree, di, drep);
6658 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6659 offset = svcctl_dissect_element_ChangeServiceConfig2A_info_level(tvb, offset, pinfo, tree, di, drep);
6660 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6661 offset = svcctl_dissect_element_ChangeServiceConfig2A_info(tvb, offset, pinfo, tree, di, drep);
6662 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6663 return offset;
6666 static int
6667 svcctl_dissect_element_ChangeServiceConfig2W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6669 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfig2W_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_ChangeServiceConfig2W_handle);
6671 return offset;
6674 static int
6675 svcctl_dissect_element_ChangeServiceConfig2W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6677 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_handle, 0);
6679 return offset;
6682 static int
6683 svcctl_dissect_element_ChangeServiceConfig2W_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6685 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_info_level, 0);
6687 return offset;
6690 static int
6691 svcctl_dissect_element_ChangeServiceConfig2W_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6693 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_ChangeServiceConfig2W_info_, NDR_POINTER_UNIQUE, "Pointer to Info (uint8)",hf_svcctl_svcctl_ChangeServiceConfig2W_info);
6695 return offset;
6698 static int
6699 svcctl_dissect_element_ChangeServiceConfig2W_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6701 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_info, 0);
6703 return offset;
6706 /* IDL: WERROR svcctl_ChangeServiceConfig2W( */
6707 /* IDL: [in] [ref] policy_handle *handle, */
6708 /* IDL: [in] uint32 info_level, */
6709 /* IDL: [in] [unique(1)] uint8 *info */
6710 /* IDL: ); */
6712 static int
6713 svcctl_dissect_ChangeServiceConfig2W_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6715 uint32_t status;
6717 di->dcerpc_procedure_name="ChangeServiceConfig2W";
6718 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6720 if (status != 0)
6721 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6723 return offset;
6726 static int
6727 svcctl_dissect_ChangeServiceConfig2W_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6729 di->dcerpc_procedure_name="ChangeServiceConfig2W";
6730 offset = svcctl_dissect_element_ChangeServiceConfig2W_handle(tvb, offset, pinfo, tree, di, drep);
6731 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6732 offset = svcctl_dissect_element_ChangeServiceConfig2W_info_level(tvb, offset, pinfo, tree, di, drep);
6733 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6734 offset = svcctl_dissect_element_ChangeServiceConfig2W_info(tvb, offset, pinfo, tree, di, drep);
6735 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6736 return offset;
6739 static int
6740 svcctl_dissect_element_QueryServiceConfig2A_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6742 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2A_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceConfig2A_handle);
6744 return offset;
6747 static int
6748 svcctl_dissect_element_QueryServiceConfig2A_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6750 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_handle, 0);
6752 return offset;
6755 static int
6756 svcctl_dissect_element_QueryServiceConfig2A_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6758 offset = svcctl_dissect_enum_ConfigLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_info_level, 0);
6760 return offset;
6763 static int
6764 svcctl_dissect_element_QueryServiceConfig2A_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6766 struct ndr_generic_array nga = { .is_conformant = false, };
6768 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6770 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfig2A_buffer_);
6772 return offset;
6775 static int
6776 svcctl_dissect_element_QueryServiceConfig2A_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6778 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_buffer, 0);
6780 return offset;
6783 static int
6784 svcctl_dissect_element_QueryServiceConfig2A_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6786 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_offered, 0);
6788 return offset;
6791 static int
6792 svcctl_dissect_element_QueryServiceConfig2A_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6794 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2A_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceConfig2A_needed);
6796 return offset;
6799 static int
6800 svcctl_dissect_element_QueryServiceConfig2A_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6802 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_needed, 0);
6804 return offset;
6807 /* IDL: WERROR svcctl_QueryServiceConfig2A( */
6808 /* IDL: [in] [ref] policy_handle *handle, */
6809 /* IDL: [in] svcctl_ConfigLevel info_level, */
6810 /* IDL: [out] [size_is(offered)] uint8 buffer[*], */
6811 /* IDL: [in] uint32 offered, */
6812 /* IDL: [out] [ref] uint32 *needed */
6813 /* IDL: ); */
6815 static int
6816 svcctl_dissect_QueryServiceConfig2A_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6818 uint32_t status;
6820 di->dcerpc_procedure_name="QueryServiceConfig2A";
6821 offset = svcctl_dissect_element_QueryServiceConfig2A_buffer(tvb, offset, pinfo, tree, di, drep);
6822 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6824 offset = svcctl_dissect_element_QueryServiceConfig2A_needed(tvb, offset, pinfo, tree, di, drep);
6825 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6827 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6829 if (status != 0)
6830 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6832 return offset;
6835 static int
6836 svcctl_dissect_QueryServiceConfig2A_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6838 di->dcerpc_procedure_name="QueryServiceConfig2A";
6839 offset = svcctl_dissect_element_QueryServiceConfig2A_handle(tvb, offset, pinfo, tree, di, drep);
6840 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6841 offset = svcctl_dissect_element_QueryServiceConfig2A_info_level(tvb, offset, pinfo, tree, di, drep);
6842 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6843 offset = svcctl_dissect_element_QueryServiceConfig2A_offered(tvb, offset, pinfo, tree, di, drep);
6844 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6845 return offset;
6848 static int
6849 svcctl_dissect_element_QueryServiceConfig2W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6851 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2W_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceConfig2W_handle);
6853 return offset;
6856 static int
6857 svcctl_dissect_element_QueryServiceConfig2W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6859 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_handle, 0);
6861 return offset;
6864 static int
6865 svcctl_dissect_element_QueryServiceConfig2W_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6867 offset = svcctl_dissect_enum_ConfigLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_info_level, 0);
6869 return offset;
6872 static int
6873 svcctl_dissect_element_QueryServiceConfig2W_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6875 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2W_buffer_, NDR_POINTER_REF, "Pointer to Buffer (uint8)",hf_svcctl_svcctl_QueryServiceConfig2W_buffer);
6877 return offset;
6880 static int
6881 svcctl_dissect_element_QueryServiceConfig2W_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6883 struct ndr_generic_array nga = { .is_conformant = false, };
6885 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
6887 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceConfig2W_buffer__);
6889 return offset;
6892 static int
6893 svcctl_dissect_element_QueryServiceConfig2W_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6895 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_buffer, 0);
6897 return offset;
6900 static int
6901 svcctl_dissect_element_QueryServiceConfig2W_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6903 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_offered, 0);
6905 return offset;
6908 static int
6909 svcctl_dissect_element_QueryServiceConfig2W_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6911 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2W_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceConfig2W_needed);
6913 return offset;
6916 static int
6917 svcctl_dissect_element_QueryServiceConfig2W_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6919 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_needed, 0);
6921 return offset;
6924 /* IDL: WERROR svcctl_QueryServiceConfig2W( */
6925 /* IDL: [in] [ref] policy_handle *handle, */
6926 /* IDL: [in] svcctl_ConfigLevel info_level, */
6927 /* IDL: [out] [ref] [size_is(offered)] uint8 *buffer, */
6928 /* IDL: [in] [range(0,8192)] uint32 offered, */
6929 /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */
6930 /* IDL: ); */
6932 static int
6933 svcctl_dissect_QueryServiceConfig2W_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6935 uint32_t status;
6937 di->dcerpc_procedure_name="QueryServiceConfig2W";
6938 offset = svcctl_dissect_element_QueryServiceConfig2W_buffer(tvb, offset, pinfo, tree, di, drep);
6939 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6941 offset = svcctl_dissect_element_QueryServiceConfig2W_needed(tvb, offset, pinfo, tree, di, drep);
6942 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6944 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
6946 if (status != 0)
6947 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
6949 return offset;
6952 static int
6953 svcctl_dissect_QueryServiceConfig2W_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6955 di->dcerpc_procedure_name="QueryServiceConfig2W";
6956 offset = svcctl_dissect_element_QueryServiceConfig2W_handle(tvb, offset, pinfo, tree, di, drep);
6957 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6958 offset = svcctl_dissect_element_QueryServiceConfig2W_info_level(tvb, offset, pinfo, tree, di, drep);
6959 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6960 offset = svcctl_dissect_element_QueryServiceConfig2W_offered(tvb, offset, pinfo, tree, di, drep);
6961 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
6962 return offset;
6965 static int
6966 svcctl_dissect_element_QueryServiceStatusEx_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6968 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatusEx_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceStatusEx_handle);
6970 return offset;
6973 static int
6974 svcctl_dissect_element_QueryServiceStatusEx_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6976 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_handle, 0);
6978 return offset;
6981 static int
6982 svcctl_dissect_element_QueryServiceStatusEx_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6984 offset = svcctl_dissect_enum_StatusLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_info_level, 0);
6986 return offset;
6989 static int
6990 svcctl_dissect_element_QueryServiceStatusEx_buffer(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
6992 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatusEx_buffer_, NDR_POINTER_REF, "Pointer to Buffer (uint8)",hf_svcctl_svcctl_QueryServiceStatusEx_buffer);
6994 return offset;
6997 static int
6998 svcctl_dissect_element_QueryServiceStatusEx_buffer_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7000 struct ndr_generic_array nga = { .is_conformant = false, };
7002 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7004 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_QueryServiceStatusEx_buffer__);
7006 return offset;
7009 static int
7010 svcctl_dissect_element_QueryServiceStatusEx_buffer__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7012 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_buffer, 0);
7014 return offset;
7017 static int
7018 svcctl_dissect_element_QueryServiceStatusEx_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7020 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_offered, 0);
7022 return offset;
7025 static int
7026 svcctl_dissect_element_QueryServiceStatusEx_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7028 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatusEx_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_svcctl_QueryServiceStatusEx_needed);
7030 return offset;
7033 static int
7034 svcctl_dissect_element_QueryServiceStatusEx_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7036 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_needed, 0);
7038 return offset;
7041 /* IDL: WERROR svcctl_QueryServiceStatusEx( */
7042 /* IDL: [in] [ref] policy_handle *handle, */
7043 /* IDL: [in] svcctl_StatusLevel info_level, */
7044 /* IDL: [out] [ref] [size_is(offered)] uint8 *buffer, */
7045 /* IDL: [in] [range(0,8192)] uint32 offered, */
7046 /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */
7047 /* IDL: ); */
7049 static int
7050 svcctl_dissect_QueryServiceStatusEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7052 uint32_t status;
7054 di->dcerpc_procedure_name="QueryServiceStatusEx";
7055 offset = svcctl_dissect_element_QueryServiceStatusEx_buffer(tvb, offset, pinfo, tree, di, drep);
7056 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7058 offset = svcctl_dissect_element_QueryServiceStatusEx_needed(tvb, offset, pinfo, tree, di, drep);
7059 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7061 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
7063 if (status != 0)
7064 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
7066 return offset;
7069 static int
7070 svcctl_dissect_QueryServiceStatusEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7072 di->dcerpc_procedure_name="QueryServiceStatusEx";
7073 offset = svcctl_dissect_element_QueryServiceStatusEx_handle(tvb, offset, pinfo, tree, di, drep);
7074 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7075 offset = svcctl_dissect_element_QueryServiceStatusEx_info_level(tvb, offset, pinfo, tree, di, drep);
7076 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7077 offset = svcctl_dissect_element_QueryServiceStatusEx_offered(tvb, offset, pinfo, tree, di, drep);
7078 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7079 return offset;
7082 static int
7083 svcctl_dissect_element_EnumServicesStatusExA_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7085 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_EnumServicesStatusExA_scm_handle);
7087 return offset;
7090 static int
7091 svcctl_dissect_element_EnumServicesStatusExA_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7093 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_scm_handle, 0);
7095 return offset;
7098 static int
7099 svcctl_dissect_element_EnumServicesStatusExA_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7101 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_info_level, 0);
7103 return offset;
7106 static int
7107 svcctl_dissect_element_EnumServicesStatusExA_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7109 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_service_type, 0);
7111 return offset;
7114 static int
7115 svcctl_dissect_element_EnumServicesStatusExA_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7117 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_state, 0);
7119 return offset;
7122 static int
7123 svcctl_dissect_element_EnumServicesStatusExA_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7125 struct ndr_generic_array nga = { .is_conformant = false, };
7127 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7129 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusExA_services_);
7131 return offset;
7134 static int
7135 svcctl_dissect_element_EnumServicesStatusExA_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7137 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_services, 0);
7139 return offset;
7142 static int
7143 svcctl_dissect_element_EnumServicesStatusExA_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7145 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_offered, 0);
7147 return offset;
7150 static int
7151 svcctl_dissect_element_EnumServicesStatusExA_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7153 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_EnumServicesStatusExA_needed);
7155 return offset;
7158 static int
7159 svcctl_dissect_element_EnumServicesStatusExA_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7161 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_needed, 0);
7163 return offset;
7166 static int
7167 svcctl_dissect_element_EnumServicesStatusExA_service_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7169 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_service_returned_, NDR_POINTER_REF, "Pointer to Service Returned (uint32)",hf_svcctl_EnumServicesStatusExA_service_returned);
7171 return offset;
7174 static int
7175 svcctl_dissect_element_EnumServicesStatusExA_service_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7177 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_service_returned, 0);
7179 return offset;
7182 static int
7183 svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7185 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_resume_handle_, NDR_POINTER_UNIQUE, "Pointer to Resume Handle (uint32)",hf_svcctl_EnumServicesStatusExA_resume_handle);
7187 return offset;
7190 static int
7191 svcctl_dissect_element_EnumServicesStatusExA_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7193 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_resume_handle, 0);
7195 return offset;
7198 static int
7199 svcctl_dissect_element_EnumServicesStatusExA_group_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7201 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_group_name_, NDR_POINTER_REF, "Pointer to Group Name (uint16)",hf_svcctl_EnumServicesStatusExA_group_name);
7203 return offset;
7206 static int
7207 svcctl_dissect_element_EnumServicesStatusExA_group_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7209 offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_group_name__, NDR_POINTER_UNIQUE, "Pointer to Group Name (uint16)",hf_svcctl_EnumServicesStatusExA_group_name);
7211 return offset;
7214 static int
7215 svcctl_dissect_element_EnumServicesStatusExA_group_name__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7217 char *data = NULL;
7218 struct ndr_generic_array nga = { .is_conformant = false, };
7220 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7222 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7223 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExA_group_name, false, &nga, &data);
7224 proto_item_append_text(tree, ": %s", data);
7226 return offset;
7229 /* IDL: WERROR EnumServicesStatusExA( */
7230 /* IDL: [in] [ref] policy_handle *scm_handle, */
7231 /* IDL: [in] uint32 info_level, */
7232 /* IDL: [in] svcctl_ServiceType service_type, */
7233 /* IDL: [in] svcctl_ServiceState state, */
7234 /* IDL: [out] [size_is(offered)] uint8 services[*], */
7235 /* IDL: [in] uint32 offered, */
7236 /* IDL: [out] [ref] uint32 *needed, */
7237 /* IDL: [out] [ref] uint32 *service_returned, */
7238 /* IDL: [in] [out] [unique(1)] uint32 *resume_handle, */
7239 /* IDL: [charset(UTF16)] [out] [ref] uint16 **group_name */
7240 /* IDL: ); */
7242 static int
7243 svcctl_dissect_EnumServicesStatusExA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7245 uint32_t status;
7247 di->dcerpc_procedure_name="EnumServicesStatusExA";
7248 offset = svcctl_dissect_element_EnumServicesStatusExA_services(tvb, offset, pinfo, tree, di, drep);
7249 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7251 offset = svcctl_dissect_element_EnumServicesStatusExA_needed(tvb, offset, pinfo, tree, di, drep);
7252 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7254 offset = svcctl_dissect_element_EnumServicesStatusExA_service_returned(tvb, offset, pinfo, tree, di, drep);
7255 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7257 offset = svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvb, offset, pinfo, tree, di, drep);
7258 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7260 offset = svcctl_dissect_element_EnumServicesStatusExA_group_name(tvb, offset, pinfo, tree, di, drep);
7261 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7263 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
7265 if (status != 0)
7266 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
7268 return offset;
7271 static int
7272 svcctl_dissect_EnumServicesStatusExA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7274 di->dcerpc_procedure_name="EnumServicesStatusExA";
7275 offset = svcctl_dissect_element_EnumServicesStatusExA_scm_handle(tvb, offset, pinfo, tree, di, drep);
7276 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7277 offset = svcctl_dissect_element_EnumServicesStatusExA_info_level(tvb, offset, pinfo, tree, di, drep);
7278 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7279 offset = svcctl_dissect_element_EnumServicesStatusExA_service_type(tvb, offset, pinfo, tree, di, drep);
7280 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7281 offset = svcctl_dissect_element_EnumServicesStatusExA_state(tvb, offset, pinfo, tree, di, drep);
7282 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7283 offset = svcctl_dissect_element_EnumServicesStatusExA_offered(tvb, offset, pinfo, tree, di, drep);
7284 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7285 offset = svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvb, offset, pinfo, tree, di, drep);
7286 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7287 return offset;
7290 static int
7291 svcctl_dissect_element_EnumServicesStatusExW_scmanager(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7293 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_scmanager_, NDR_POINTER_REF, "Pointer to Scmanager (policy_handle)",hf_svcctl_EnumServicesStatusExW_scmanager);
7295 return offset;
7298 static int
7299 svcctl_dissect_element_EnumServicesStatusExW_scmanager_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7301 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_scmanager, 0);
7303 return offset;
7306 static int
7307 svcctl_dissect_element_EnumServicesStatusExW_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7309 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_info_level, 0);
7311 return offset;
7314 static int
7315 svcctl_dissect_element_EnumServicesStatusExW_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7317 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_service_type, 0);
7319 return offset;
7322 static int
7323 svcctl_dissect_element_EnumServicesStatusExW_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7325 offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_state, 0);
7327 return offset;
7330 static int
7331 svcctl_dissect_element_EnumServicesStatusExW_services(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7333 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_services_, NDR_POINTER_REF, "Pointer to Services (uint8)",hf_svcctl_EnumServicesStatusExW_services);
7335 return offset;
7338 static int
7339 svcctl_dissect_element_EnumServicesStatusExW_services_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7341 struct ndr_generic_array nga = { .is_conformant = false, };
7343 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7345 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_EnumServicesStatusExW_services__);
7347 return offset;
7350 static int
7351 svcctl_dissect_element_EnumServicesStatusExW_services__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7353 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_services, 0);
7355 return offset;
7358 static int
7359 svcctl_dissect_element_EnumServicesStatusExW_offered(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7361 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_offered, 0);
7363 return offset;
7366 static int
7367 svcctl_dissect_element_EnumServicesStatusExW_needed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7369 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_needed_, NDR_POINTER_REF, "Pointer to Needed (uint32)",hf_svcctl_EnumServicesStatusExW_needed);
7371 return offset;
7374 static int
7375 svcctl_dissect_element_EnumServicesStatusExW_needed_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7377 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_needed, 0);
7379 return offset;
7382 static int
7383 svcctl_dissect_element_EnumServicesStatusExW_service_returned(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7385 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_service_returned_, NDR_POINTER_REF, "Pointer to Service Returned (uint32)",hf_svcctl_EnumServicesStatusExW_service_returned);
7387 return offset;
7390 static int
7391 svcctl_dissect_element_EnumServicesStatusExW_service_returned_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7393 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_service_returned, 0);
7395 return offset;
7398 static int
7399 svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7401 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_resume_handle_, NDR_POINTER_UNIQUE, "Pointer to Resume Handle (uint32)",hf_svcctl_EnumServicesStatusExW_resume_handle);
7403 return offset;
7406 static int
7407 svcctl_dissect_element_EnumServicesStatusExW_resume_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7409 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_resume_handle, 0);
7411 return offset;
7414 static int
7415 svcctl_dissect_element_EnumServicesStatusExW_group_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7417 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_group_name_, NDR_POINTER_UNIQUE, "Pointer to Group Name (uint16)",hf_svcctl_EnumServicesStatusExW_group_name);
7419 return offset;
7422 static int
7423 svcctl_dissect_element_EnumServicesStatusExW_group_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7425 char *data = NULL;
7426 struct ndr_generic_array nga = { .is_conformant = false, };
7428 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7430 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7431 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExW_group_name, false, &nga, &data);
7432 proto_item_append_text(tree, ": %s", data);
7434 return offset;
7437 /* IDL: WERROR EnumServicesStatusExW( */
7438 /* IDL: [in] [ref] policy_handle *scmanager, */
7439 /* IDL: [in] uint32 info_level, */
7440 /* IDL: [in] svcctl_ServiceType service_type, */
7441 /* IDL: [in] svcctl_ServiceState state, */
7442 /* IDL: [out] [ref] [size_is(offered)] uint8 *services, */
7443 /* IDL: [in] [range(0,0x40000)] uint32 offered, */
7444 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *needed, */
7445 /* IDL: [out] [range(0,0x40000)] [ref] uint32 *service_returned, */
7446 /* IDL: [in] [out] [range(0,0x40000)] [unique(1)] uint32 *resume_handle, */
7447 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *group_name */
7448 /* IDL: ); */
7450 static int
7451 svcctl_dissect_EnumServicesStatusExW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7453 uint32_t status;
7455 di->dcerpc_procedure_name="EnumServicesStatusExW";
7456 offset = svcctl_dissect_element_EnumServicesStatusExW_services(tvb, offset, pinfo, tree, di, drep);
7457 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7459 offset = svcctl_dissect_element_EnumServicesStatusExW_needed(tvb, offset, pinfo, tree, di, drep);
7460 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7462 offset = svcctl_dissect_element_EnumServicesStatusExW_service_returned(tvb, offset, pinfo, tree, di, drep);
7463 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7465 offset = svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvb, offset, pinfo, tree, di, drep);
7466 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7468 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
7470 if (status != 0)
7471 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
7473 return offset;
7476 static int
7477 svcctl_dissect_EnumServicesStatusExW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7479 di->dcerpc_procedure_name="EnumServicesStatusExW";
7480 offset = svcctl_dissect_element_EnumServicesStatusExW_scmanager(tvb, offset, pinfo, tree, di, drep);
7481 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7482 offset = svcctl_dissect_element_EnumServicesStatusExW_info_level(tvb, offset, pinfo, tree, di, drep);
7483 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7484 offset = svcctl_dissect_element_EnumServicesStatusExW_service_type(tvb, offset, pinfo, tree, di, drep);
7485 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7486 offset = svcctl_dissect_element_EnumServicesStatusExW_state(tvb, offset, pinfo, tree, di, drep);
7487 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7488 offset = svcctl_dissect_element_EnumServicesStatusExW_offered(tvb, offset, pinfo, tree, di, drep);
7489 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7490 offset = svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvb, offset, pinfo, tree, di, drep);
7491 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7492 offset = svcctl_dissect_element_EnumServicesStatusExW_group_name(tvb, offset, pinfo, tree, di, drep);
7493 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7494 return offset;
7497 /* IDL: WERROR svcctl_ScBroadcastServiceControlMessage( */
7498 /* IDL: */
7499 /* IDL: ); */
7501 static int
7502 svcctl_dissect_ScBroadcastServiceControlMessage_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7504 uint32_t status;
7506 di->dcerpc_procedure_name="ScBroadcastServiceControlMessage";
7507 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
7509 if (status != 0)
7510 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
7512 return offset;
7515 static int
7516 svcctl_dissect_ScBroadcastServiceControlMessage_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7518 di->dcerpc_procedure_name="ScBroadcastServiceControlMessage";
7519 return offset;
7522 static int
7523 svcctl_dissect_element_CreateServiceWOW64A_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7525 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle);
7527 return offset;
7530 static int
7531 svcctl_dissect_element_CreateServiceWOW64A_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7533 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle, 0);
7535 return offset;
7538 static int
7539 svcctl_dissect_element_CreateServiceWOW64A_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7541 char *data = NULL;
7542 struct ndr_generic_array nga = { .is_conformant = false, };
7544 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7546 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7547 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName, false, &nga, &data);
7548 proto_item_append_text(tree, ": %s", data);
7550 return offset;
7553 static int
7554 svcctl_dissect_element_CreateServiceWOW64A_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7556 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_DisplayName_, NDR_POINTER_UNIQUE, "Pointer to DisplayName (uint8)",hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName);
7558 return offset;
7561 static int
7562 svcctl_dissect_element_CreateServiceWOW64A_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7564 char *data = NULL;
7565 struct ndr_generic_array nga = { .is_conformant = false, };
7567 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7569 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7570 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName, false, &nga, &data);
7571 proto_item_append_text(tree, ": %s", data);
7573 return offset;
7576 static int
7577 svcctl_dissect_element_CreateServiceWOW64A_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7579 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_desired_access, 0);
7581 return offset;
7584 static int
7585 svcctl_dissect_element_CreateServiceWOW64A_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7587 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_service_type, 0);
7589 return offset;
7592 static int
7593 svcctl_dissect_element_CreateServiceWOW64A_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7595 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_start_type, 0);
7597 return offset;
7600 static int
7601 svcctl_dissect_element_CreateServiceWOW64A_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7603 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_error_control, 0);
7605 return offset;
7608 static int
7609 svcctl_dissect_element_CreateServiceWOW64A_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7611 char *data = NULL;
7612 struct ndr_generic_array nga = { .is_conformant = false, };
7614 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7616 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7617 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_binary_path, false, &nga, &data);
7618 proto_item_append_text(tree, ": %s", data);
7620 return offset;
7623 static int
7624 svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7626 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey_, NDR_POINTER_UNIQUE, "Pointer to LoadOrderGroupKey (uint8)",hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey);
7628 return offset;
7631 static int
7632 svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7634 char *data = NULL;
7635 struct ndr_generic_array nga = { .is_conformant = false, };
7637 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7639 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7640 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey, false, &nga, &data);
7641 proto_item_append_text(tree, ": %s", data);
7643 return offset;
7646 static int
7647 svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7649 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_CreateServiceWOW64A_tag_id);
7651 return offset;
7654 static int
7655 svcctl_dissect_element_CreateServiceWOW64A_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7657 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_tag_id, 0);
7659 return offset;
7662 static int
7663 svcctl_dissect_element_CreateServiceWOW64A_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7665 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (string)",hf_svcctl_svcctl_CreateServiceWOW64A_dependencies);
7667 return offset;
7670 static int
7671 svcctl_dissect_element_CreateServiceWOW64A_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7673 struct ndr_generic_array nga = { .is_conformant = false, };
7675 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7677 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64A_dependencies__);
7679 return offset;
7682 static int
7683 svcctl_dissect_element_CreateServiceWOW64A_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7685 offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_CreateServiceWOW64A_dependencies , 0);
7687 return offset;
7690 static int
7691 svcctl_dissect_element_CreateServiceWOW64A_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7693 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size, 0);
7695 return offset;
7698 static int
7699 svcctl_dissect_element_CreateServiceWOW64A_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7701 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint8)",hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name);
7703 return offset;
7706 static int
7707 svcctl_dissect_element_CreateServiceWOW64A_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7709 char *data = NULL;
7710 struct ndr_generic_array nga = { .is_conformant = false, };
7712 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7714 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7715 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name, false, &nga, &data);
7716 proto_item_append_text(tree, ": %s", data);
7718 return offset;
7721 static int
7722 svcctl_dissect_element_CreateServiceWOW64A_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7724 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint8)",hf_svcctl_svcctl_CreateServiceWOW64A_password);
7726 return offset;
7729 static int
7730 svcctl_dissect_element_CreateServiceWOW64A_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7732 struct ndr_generic_array nga = { .is_conformant = false, };
7734 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7736 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64A_password__);
7738 return offset;
7741 static int
7742 svcctl_dissect_element_CreateServiceWOW64A_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7744 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_password, 0);
7746 return offset;
7749 static int
7750 svcctl_dissect_element_CreateServiceWOW64A_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7752 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_password_size, 0);
7754 return offset;
7757 static int
7758 svcctl_dissect_element_CreateServiceWOW64A_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7760 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceWOW64A_handle);
7762 return offset;
7765 static int
7766 svcctl_dissect_element_CreateServiceWOW64A_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7768 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_handle, 0);
7770 return offset;
7773 /* IDL: WERROR svcctl_CreateServiceWOW64A( */
7774 /* IDL: [in] [ref] policy_handle *scm_handle, */
7775 /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */
7776 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DisplayName, */
7777 /* IDL: [in] uint32 desired_access, */
7778 /* IDL: [in] svcctl_ServiceType service_type, */
7779 /* IDL: [in] svcctl_StartType start_type, */
7780 /* IDL: [in] svcctl_ErrorControl error_control, */
7781 /* IDL: [charset(ASCII)] [in] uint8 binary_path[*], */
7782 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *LoadOrderGroupKey, */
7783 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
7784 /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [size_is(dependencies_size)] [unique(1)] string *dependencies, */
7785 /* IDL: [in] uint32 dependencies_size, */
7786 /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *service_start_name, */
7787 /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */
7788 /* IDL: [in] uint32 password_size, */
7789 /* IDL: [out] [ref] policy_handle *handle */
7790 /* IDL: ); */
7792 static int
7793 svcctl_dissect_CreateServiceWOW64A_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7795 uint32_t status;
7797 di->dcerpc_procedure_name="CreateServiceWOW64A";
7798 offset = svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvb, offset, pinfo, tree, di, drep);
7799 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7801 offset = svcctl_dissect_element_CreateServiceWOW64A_handle(tvb, offset, pinfo, tree, di, drep);
7802 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7804 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
7806 if (status != 0)
7807 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
7809 return offset;
7812 static int
7813 svcctl_dissect_CreateServiceWOW64A_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7815 di->dcerpc_procedure_name="CreateServiceWOW64A";
7816 offset = svcctl_dissect_element_CreateServiceWOW64A_scm_handle(tvb, offset, pinfo, tree, di, drep);
7817 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7818 offset = svcctl_dissect_element_CreateServiceWOW64A_ServiceName(tvb, offset, pinfo, tree, di, drep);
7819 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7820 offset = svcctl_dissect_element_CreateServiceWOW64A_DisplayName(tvb, offset, pinfo, tree, di, drep);
7821 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7822 offset = svcctl_dissect_element_CreateServiceWOW64A_desired_access(tvb, offset, pinfo, tree, di, drep);
7823 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7824 offset = svcctl_dissect_element_CreateServiceWOW64A_service_type(tvb, offset, pinfo, tree, di, drep);
7825 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7826 offset = svcctl_dissect_element_CreateServiceWOW64A_start_type(tvb, offset, pinfo, tree, di, drep);
7827 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7828 offset = svcctl_dissect_element_CreateServiceWOW64A_error_control(tvb, offset, pinfo, tree, di, drep);
7829 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7830 offset = svcctl_dissect_element_CreateServiceWOW64A_binary_path(tvb, offset, pinfo, tree, di, drep);
7831 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7832 offset = svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep);
7833 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7834 offset = svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvb, offset, pinfo, tree, di, drep);
7835 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7836 offset = svcctl_dissect_element_CreateServiceWOW64A_dependencies(tvb, offset, pinfo, tree, di, drep);
7837 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7838 offset = svcctl_dissect_element_CreateServiceWOW64A_dependencies_size(tvb, offset, pinfo, tree, di, drep);
7839 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7840 offset = svcctl_dissect_element_CreateServiceWOW64A_service_start_name(tvb, offset, pinfo, tree, di, drep);
7841 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7842 offset = svcctl_dissect_element_CreateServiceWOW64A_password(tvb, offset, pinfo, tree, di, drep);
7843 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7844 offset = svcctl_dissect_element_CreateServiceWOW64A_password_size(tvb, offset, pinfo, tree, di, drep);
7845 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
7846 return offset;
7849 static int
7850 svcctl_dissect_element_CreateServiceWOW64W_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7852 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle);
7854 return offset;
7857 static int
7858 svcctl_dissect_element_CreateServiceWOW64W_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7860 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle, 0);
7862 return offset;
7865 static int
7866 svcctl_dissect_element_CreateServiceWOW64W_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7868 char *data = NULL;
7869 struct ndr_generic_array nga = { .is_conformant = false, };
7871 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7873 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7874 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName, false, &nga, &data);
7875 proto_item_append_text(tree, ": %s", data);
7877 return offset;
7880 static int
7881 svcctl_dissect_element_CreateServiceWOW64W_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7883 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_DisplayName_, NDR_POINTER_UNIQUE, "Pointer to DisplayName (uint16)",hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName);
7885 return offset;
7888 static int
7889 svcctl_dissect_element_CreateServiceWOW64W_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7891 char *data = NULL;
7892 struct ndr_generic_array nga = { .is_conformant = false, };
7894 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7896 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7897 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName, false, &nga, &data);
7898 proto_item_append_text(tree, ": %s", data);
7900 return offset;
7903 static int
7904 svcctl_dissect_element_CreateServiceWOW64W_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7906 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_desired_access, 0);
7908 return offset;
7911 static int
7912 svcctl_dissect_element_CreateServiceWOW64W_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7914 offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_service_type, 0);
7916 return offset;
7919 static int
7920 svcctl_dissect_element_CreateServiceWOW64W_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7922 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_start_type, 0);
7924 return offset;
7927 static int
7928 svcctl_dissect_element_CreateServiceWOW64W_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7930 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_error_control, 0);
7932 return offset;
7935 static int
7936 svcctl_dissect_element_CreateServiceWOW64W_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7938 char *data = NULL;
7939 struct ndr_generic_array nga = { .is_conformant = false, };
7941 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7943 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7944 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_binary_path, false, &nga, &data);
7945 proto_item_append_text(tree, ": %s", data);
7947 return offset;
7950 static int
7951 svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7953 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey_, NDR_POINTER_UNIQUE, "Pointer to LoadOrderGroupKey (uint16)",hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey);
7955 return offset;
7958 static int
7959 svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7961 char *data = NULL;
7962 struct ndr_generic_array nga = { .is_conformant = false, };
7964 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7966 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
7967 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey, false, &nga, &data);
7968 proto_item_append_text(tree, ": %s", data);
7970 return offset;
7973 static int
7974 svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7976 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_CreateServiceWOW64W_tag_id);
7978 return offset;
7981 static int
7982 svcctl_dissect_element_CreateServiceWOW64W_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7984 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_tag_id, 0);
7986 return offset;
7989 static int
7990 svcctl_dissect_element_CreateServiceWOW64W_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
7992 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (uint8)",hf_svcctl_svcctl_CreateServiceWOW64W_dependencies);
7994 return offset;
7997 static int
7998 svcctl_dissect_element_CreateServiceWOW64W_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8000 struct ndr_generic_array nga = { .is_conformant = false, };
8002 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8004 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64W_dependencies__);
8006 return offset;
8009 static int
8010 svcctl_dissect_element_CreateServiceWOW64W_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8012 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_dependencies, 0);
8014 return offset;
8017 static int
8018 svcctl_dissect_element_CreateServiceWOW64W_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8020 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size, 0);
8022 return offset;
8025 static int
8026 svcctl_dissect_element_CreateServiceWOW64W_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8028 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint16)",hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name);
8030 return offset;
8033 static int
8034 svcctl_dissect_element_CreateServiceWOW64W_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8036 char *data = NULL;
8037 struct ndr_generic_array nga = { .is_conformant = false, };
8039 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8041 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8042 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name, false, &nga, &data);
8043 proto_item_append_text(tree, ": %s", data);
8045 return offset;
8048 static int
8049 svcctl_dissect_element_CreateServiceWOW64W_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8051 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint8)",hf_svcctl_svcctl_CreateServiceWOW64W_password);
8053 return offset;
8056 static int
8057 svcctl_dissect_element_CreateServiceWOW64W_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8059 struct ndr_generic_array nga = { .is_conformant = false, };
8061 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8063 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateServiceWOW64W_password__);
8065 return offset;
8068 static int
8069 svcctl_dissect_element_CreateServiceWOW64W_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8071 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_password, 0);
8073 return offset;
8076 static int
8077 svcctl_dissect_element_CreateServiceWOW64W_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8079 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_password_size, 0);
8081 return offset;
8084 static int
8085 svcctl_dissect_element_CreateServiceWOW64W_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8087 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_CreateServiceWOW64W_handle);
8089 return offset;
8092 static int
8093 svcctl_dissect_element_CreateServiceWOW64W_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8095 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_handle, 0);
8097 return offset;
8100 /* IDL: WERROR svcctl_CreateServiceWOW64W( */
8101 /* IDL: [in] [ref] policy_handle *scm_handle, */
8102 /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */
8103 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */
8104 /* IDL: [in] uint32 desired_access, */
8105 /* IDL: [in] svcctl_ServiceType service_type, */
8106 /* IDL: [in] svcctl_StartType start_type, */
8107 /* IDL: [in] svcctl_ErrorControl error_control, */
8108 /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */
8109 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroupKey, */
8110 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
8111 /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */
8112 /* IDL: [in] uint32 dependencies_size, */
8113 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */
8114 /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */
8115 /* IDL: [in] uint32 password_size, */
8116 /* IDL: [out] [ref] policy_handle *handle */
8117 /* IDL: ); */
8119 static int
8120 svcctl_dissect_CreateServiceWOW64W_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8122 uint32_t status;
8124 di->dcerpc_procedure_name="CreateServiceWOW64W";
8125 offset = svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvb, offset, pinfo, tree, di, drep);
8126 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8128 offset = svcctl_dissect_element_CreateServiceWOW64W_handle(tvb, offset, pinfo, tree, di, drep);
8129 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8131 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8133 if (status != 0)
8134 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8136 return offset;
8139 static int
8140 svcctl_dissect_CreateServiceWOW64W_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8142 di->dcerpc_procedure_name="CreateServiceWOW64W";
8143 offset = svcctl_dissect_element_CreateServiceWOW64W_scm_handle(tvb, offset, pinfo, tree, di, drep);
8144 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8145 offset = svcctl_dissect_element_CreateServiceWOW64W_ServiceName(tvb, offset, pinfo, tree, di, drep);
8146 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8147 offset = svcctl_dissect_element_CreateServiceWOW64W_DisplayName(tvb, offset, pinfo, tree, di, drep);
8148 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8149 offset = svcctl_dissect_element_CreateServiceWOW64W_desired_access(tvb, offset, pinfo, tree, di, drep);
8150 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8151 offset = svcctl_dissect_element_CreateServiceWOW64W_service_type(tvb, offset, pinfo, tree, di, drep);
8152 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8153 offset = svcctl_dissect_element_CreateServiceWOW64W_start_type(tvb, offset, pinfo, tree, di, drep);
8154 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8155 offset = svcctl_dissect_element_CreateServiceWOW64W_error_control(tvb, offset, pinfo, tree, di, drep);
8156 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8157 offset = svcctl_dissect_element_CreateServiceWOW64W_binary_path(tvb, offset, pinfo, tree, di, drep);
8158 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8159 offset = svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep);
8160 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8161 offset = svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvb, offset, pinfo, tree, di, drep);
8162 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8163 offset = svcctl_dissect_element_CreateServiceWOW64W_dependencies(tvb, offset, pinfo, tree, di, drep);
8164 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8165 offset = svcctl_dissect_element_CreateServiceWOW64W_dependencies_size(tvb, offset, pinfo, tree, di, drep);
8166 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8167 offset = svcctl_dissect_element_CreateServiceWOW64W_service_start_name(tvb, offset, pinfo, tree, di, drep);
8168 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8169 offset = svcctl_dissect_element_CreateServiceWOW64W_password(tvb, offset, pinfo, tree, di, drep);
8170 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8171 offset = svcctl_dissect_element_CreateServiceWOW64W_password_size(tvb, offset, pinfo, tree, di, drep);
8172 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8173 return offset;
8176 /* IDL: WERROR svcctl_ScQueryServiceTagInfo( */
8177 /* IDL: */
8178 /* IDL: ); */
8180 static int
8181 svcctl_dissect_ScQueryServiceTagInfo_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8183 uint32_t status;
8185 di->dcerpc_procedure_name="ScQueryServiceTagInfo";
8186 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8188 if (status != 0)
8189 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8191 return offset;
8194 static int
8195 svcctl_dissect_ScQueryServiceTagInfo_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8197 di->dcerpc_procedure_name="ScQueryServiceTagInfo";
8198 return offset;
8201 /* IDL: WERROR svcctl_NotifyServiceStatusChange( */
8202 /* IDL: */
8203 /* IDL: ); */
8205 static int
8206 svcctl_dissect_NotifyServiceStatusChange_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8208 uint32_t status;
8210 di->dcerpc_procedure_name="NotifyServiceStatusChange";
8211 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8213 if (status != 0)
8214 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8216 return offset;
8219 static int
8220 svcctl_dissect_NotifyServiceStatusChange_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8222 di->dcerpc_procedure_name="NotifyServiceStatusChange";
8223 return offset;
8226 /* IDL: WERROR svcctl_GetNotifyResults( */
8227 /* IDL: */
8228 /* IDL: ); */
8230 static int
8231 svcctl_dissect_GetNotifyResults_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8233 uint32_t status;
8235 di->dcerpc_procedure_name="GetNotifyResults";
8236 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8238 if (status != 0)
8239 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8241 return offset;
8244 static int
8245 svcctl_dissect_GetNotifyResults_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8247 di->dcerpc_procedure_name="GetNotifyResults";
8248 return offset;
8251 /* IDL: WERROR svcctl_CloseNotifyHandle( */
8252 /* IDL: */
8253 /* IDL: ); */
8255 static int
8256 svcctl_dissect_CloseNotifyHandle_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8258 uint32_t status;
8260 di->dcerpc_procedure_name="CloseNotifyHandle";
8261 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8263 if (status != 0)
8264 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8266 return offset;
8269 static int
8270 svcctl_dissect_CloseNotifyHandle_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8272 di->dcerpc_procedure_name="CloseNotifyHandle";
8273 return offset;
8276 /* IDL: WERROR svcctl_ControlServiceExA( */
8277 /* IDL: */
8278 /* IDL: ); */
8280 static int
8281 svcctl_dissect_ControlServiceExA_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8283 uint32_t status;
8285 di->dcerpc_procedure_name="ControlServiceExA";
8286 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8288 if (status != 0)
8289 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8291 return offset;
8294 static int
8295 svcctl_dissect_ControlServiceExA_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8297 di->dcerpc_procedure_name="ControlServiceExA";
8298 return offset;
8301 /* IDL: WERROR svcctl_ControlServiceExW( */
8302 /* IDL: */
8303 /* IDL: ); */
8305 static int
8306 svcctl_dissect_ControlServiceExW_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8308 uint32_t status;
8310 di->dcerpc_procedure_name="ControlServiceExW";
8311 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8313 if (status != 0)
8314 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8316 return offset;
8319 static int
8320 svcctl_dissect_ControlServiceExW_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8322 di->dcerpc_procedure_name="ControlServiceExW";
8323 return offset;
8326 /* IDL: WERROR svcctl_ScSendPnPMessage( */
8327 /* IDL: */
8328 /* IDL: ); */
8330 static int
8331 svcctl_dissect_ScSendPnPMessage_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8333 uint32_t status;
8335 di->dcerpc_procedure_name="ScSendPnPMessage";
8336 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8338 if (status != 0)
8339 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8341 return offset;
8344 static int
8345 svcctl_dissect_ScSendPnPMessage_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8347 di->dcerpc_procedure_name="ScSendPnPMessage";
8348 return offset;
8351 /* IDL: WERROR svcctl_ScValidatePnPService( */
8352 /* IDL: */
8353 /* IDL: ); */
8355 static int
8356 svcctl_dissect_ScValidatePnPService_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8358 uint32_t status;
8360 di->dcerpc_procedure_name="ScValidatePnPService";
8361 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8363 if (status != 0)
8364 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8366 return offset;
8369 static int
8370 svcctl_dissect_ScValidatePnPService_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8372 di->dcerpc_procedure_name="ScValidatePnPService";
8373 return offset;
8376 /* IDL: WERROR svcctl_ScOpenServiceStatusHandle( */
8377 /* IDL: */
8378 /* IDL: ); */
8380 static int
8381 svcctl_dissect_ScOpenServiceStatusHandle_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8383 uint32_t status;
8385 di->dcerpc_procedure_name="ScOpenServiceStatusHandle";
8386 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8388 if (status != 0)
8389 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8391 return offset;
8394 static int
8395 svcctl_dissect_ScOpenServiceStatusHandle_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8397 di->dcerpc_procedure_name="ScOpenServiceStatusHandle";
8398 return offset;
8401 /* IDL: WERROR svcctl_ScQueryServiceConfig( */
8402 /* IDL: */
8403 /* IDL: ); */
8405 static int
8406 svcctl_dissect_ScQueryServiceConfig_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8408 uint32_t status;
8410 di->dcerpc_procedure_name="ScQueryServiceConfig";
8411 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8413 if (status != 0)
8414 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8416 return offset;
8419 static int
8420 svcctl_dissect_ScQueryServiceConfig_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8422 di->dcerpc_procedure_name="ScQueryServiceConfig";
8423 return offset;
8426 static int
8427 svcctl_dissect_element_QueryServiceConfigEx_service_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8429 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigEx_service_handle_, NDR_POINTER_REF, "Pointer to Service Handle (policy_handle)",hf_svcctl_svcctl_QueryServiceConfigEx_service_handle);
8431 return offset;
8434 static int
8435 svcctl_dissect_element_QueryServiceConfigEx_service_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8437 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigEx_service_handle, 0);
8439 return offset;
8442 static int
8443 svcctl_dissect_element_QueryServiceConfigEx_info_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8445 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigEx_info_level, 0);
8447 return offset;
8450 /* IDL: WERROR svcctl_QueryServiceConfigEx( */
8451 /* IDL: [in] [ref] policy_handle *service_handle, */
8452 /* IDL: [in] uint32 info_level */
8453 /* IDL: ); */
8455 static int
8456 svcctl_dissect_QueryServiceConfigEx_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8458 uint32_t status;
8460 di->dcerpc_procedure_name="QueryServiceConfigEx";
8461 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8463 if (status != 0)
8464 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8466 return offset;
8469 static int
8470 svcctl_dissect_QueryServiceConfigEx_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8472 di->dcerpc_procedure_name="QueryServiceConfigEx";
8473 offset = svcctl_dissect_element_QueryServiceConfigEx_service_handle(tvb, offset, pinfo, tree, di, drep);
8474 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8475 offset = svcctl_dissect_element_QueryServiceConfigEx_info_level(tvb, offset, pinfo, tree, di, drep);
8476 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8477 return offset;
8480 /* IDL: WERROR svcctl_ScRegisterPreshutdownRestart( */
8481 /* IDL: */
8482 /* IDL: ); */
8484 static int
8485 svcctl_dissect_ScRegisterPreshutdownRestart_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8487 uint32_t status;
8489 di->dcerpc_procedure_name="ScRegisterPreshutdownRestart";
8490 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8492 if (status != 0)
8493 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8495 return offset;
8498 static int
8499 svcctl_dissect_ScRegisterPreshutdownRestart_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8501 di->dcerpc_procedure_name="ScRegisterPreshutdownRestart";
8502 return offset;
8505 /* IDL: WERROR svcctl_ScReparseServiceDatabase( */
8506 /* IDL: */
8507 /* IDL: ); */
8509 static int
8510 svcctl_dissect_ScReparseServiceDatabase_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8512 uint32_t status;
8514 di->dcerpc_procedure_name="ScReparseServiceDatabase";
8515 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8517 if (status != 0)
8518 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8520 return offset;
8523 static int
8524 svcctl_dissect_ScReparseServiceDatabase_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8526 di->dcerpc_procedure_name="ScReparseServiceDatabase";
8527 return offset;
8530 /* IDL: WERROR svcctl_QueryUserServiceName( */
8531 /* IDL: */
8532 /* IDL: ); */
8534 static int
8535 svcctl_dissect_QueryUserServiceName_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8537 uint32_t status;
8539 di->dcerpc_procedure_name="QueryUserServiceName";
8540 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8542 if (status != 0)
8543 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8545 return offset;
8548 static int
8549 svcctl_dissect_QueryUserServiceName_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8551 di->dcerpc_procedure_name="QueryUserServiceName";
8552 return offset;
8555 static int
8556 svcctl_dissect_element_CreateWowService_scm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8558 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_scm_handle_, NDR_POINTER_REF, "Pointer to Scm Handle (policy_handle)",hf_svcctl_svcctl_CreateWowService_scm_handle);
8560 return offset;
8563 static int
8564 svcctl_dissect_element_CreateWowService_scm_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8566 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_scm_handle, 0);
8568 return offset;
8571 static int
8572 svcctl_dissect_element_CreateWowService_ServiceName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8574 char *data = NULL;
8575 struct ndr_generic_array nga = { .is_conformant = false, };
8577 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8579 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8580 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_ServiceName, false, &nga, &data);
8581 proto_item_append_text(tree, ": %s", data);
8583 return offset;
8586 static int
8587 svcctl_dissect_element_CreateWowService_DisplayName(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8589 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_DisplayName_, NDR_POINTER_UNIQUE, "Pointer to DisplayName (uint16)",hf_svcctl_svcctl_CreateWowService_DisplayName);
8591 return offset;
8594 static int
8595 svcctl_dissect_element_CreateWowService_DisplayName_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8597 char *data = NULL;
8598 struct ndr_generic_array nga = { .is_conformant = false, };
8600 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8602 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8603 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_DisplayName, false, &nga, &data);
8604 proto_item_append_text(tree, ": %s", data);
8606 return offset;
8609 static int
8610 svcctl_dissect_element_CreateWowService_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8612 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_desired_access, 0);
8614 return offset;
8617 static int
8618 svcctl_dissect_element_CreateWowService_service_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8620 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_service_type, 0);
8622 return offset;
8625 static int
8626 svcctl_dissect_element_CreateWowService_start_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8628 offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_start_type, 0);
8630 return offset;
8633 static int
8634 svcctl_dissect_element_CreateWowService_error_control(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8636 offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_error_control, 0);
8638 return offset;
8641 static int
8642 svcctl_dissect_element_CreateWowService_binary_path(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8644 char *data = NULL;
8645 struct ndr_generic_array nga = { .is_conformant = false, };
8647 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8649 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8650 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_binary_path, false, &nga, &data);
8651 proto_item_append_text(tree, ": %s", data);
8653 return offset;
8656 static int
8657 svcctl_dissect_element_CreateWowService_LoadOrderGroupKey(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8659 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_LoadOrderGroupKey_, NDR_POINTER_UNIQUE, "Pointer to LoadOrderGroupKey (uint16)",hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey);
8661 return offset;
8664 static int
8665 svcctl_dissect_element_CreateWowService_LoadOrderGroupKey_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8667 char *data = NULL;
8668 struct ndr_generic_array nga = { .is_conformant = false, };
8670 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8672 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8673 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey, false, &nga, &data);
8674 proto_item_append_text(tree, ": %s", data);
8676 return offset;
8679 static int
8680 svcctl_dissect_element_CreateWowService_tag_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8682 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_tag_id_, NDR_POINTER_UNIQUE, "Pointer to Tag Id (uint32)",hf_svcctl_svcctl_CreateWowService_tag_id);
8684 return offset;
8687 static int
8688 svcctl_dissect_element_CreateWowService_tag_id_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8690 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_tag_id, 0);
8692 return offset;
8695 static int
8696 svcctl_dissect_element_CreateWowService_dependencies(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8698 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_dependencies_, NDR_POINTER_UNIQUE, "Pointer to Dependencies (uint8)",hf_svcctl_svcctl_CreateWowService_dependencies);
8700 return offset;
8703 static int
8704 svcctl_dissect_element_CreateWowService_dependencies_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8706 struct ndr_generic_array nga = { .is_conformant = false, };
8708 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8710 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateWowService_dependencies__);
8712 return offset;
8715 static int
8716 svcctl_dissect_element_CreateWowService_dependencies__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8718 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_dependencies, 0);
8720 return offset;
8723 static int
8724 svcctl_dissect_element_CreateWowService_dependencies_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8726 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_dependencies_size, 0);
8728 return offset;
8731 static int
8732 svcctl_dissect_element_CreateWowService_service_start_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8734 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_service_start_name_, NDR_POINTER_UNIQUE, "Pointer to Service Start Name (uint16)",hf_svcctl_svcctl_CreateWowService_service_start_name);
8736 return offset;
8739 static int
8740 svcctl_dissect_element_CreateWowService_service_start_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8742 char *data = NULL;
8743 struct ndr_generic_array nga = { .is_conformant = false, };
8745 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8747 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8748 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_service_start_name, false, &nga, &data);
8749 proto_item_append_text(tree, ": %s", data);
8751 return offset;
8754 static int
8755 svcctl_dissect_element_CreateWowService_password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8757 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_password_, NDR_POINTER_UNIQUE, "Pointer to Password (uint8)",hf_svcctl_svcctl_CreateWowService_password);
8759 return offset;
8762 static int
8763 svcctl_dissect_element_CreateWowService_password_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8765 struct ndr_generic_array nga = { .is_conformant = false, };
8767 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8769 offset = dissect_ndr_generic_array_bytes(tvb, offset, pinfo, tree, di, drep, &nga, svcctl_dissect_element_CreateWowService_password__);
8771 return offset;
8774 static int
8775 svcctl_dissect_element_CreateWowService_password__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8777 offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_password, 0);
8779 return offset;
8782 static int
8783 svcctl_dissect_element_CreateWowService_password_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8785 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_password_size, 0);
8787 return offset;
8790 static int
8791 svcctl_dissect_element_CreateWowService_service_wow_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8793 offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_service_wow_type, 0);
8795 return offset;
8798 static int
8799 svcctl_dissect_element_CreateWowService_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8801 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_CreateWowService_handle);
8803 return offset;
8806 static int
8807 svcctl_dissect_element_CreateWowService_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8809 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_handle, 0);
8811 return offset;
8814 /* IDL: WERROR svcctl_CreateWowService( */
8815 /* IDL: [in] [ref] policy_handle *scm_handle, */
8816 /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */
8817 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */
8818 /* IDL: [in] uint32 desired_access, */
8819 /* IDL: [in] uint32 service_type, */
8820 /* IDL: [in] svcctl_StartType start_type, */
8821 /* IDL: [in] svcctl_ErrorControl error_control, */
8822 /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */
8823 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroupKey, */
8824 /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */
8825 /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */
8826 /* IDL: [in] uint32 dependencies_size, */
8827 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */
8828 /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */
8829 /* IDL: [in] uint32 password_size, */
8830 /* IDL: [in] uint16 service_wow_type, */
8831 /* IDL: [out] [ref] policy_handle *handle */
8832 /* IDL: ); */
8834 static int
8835 svcctl_dissect_CreateWowService_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8837 uint32_t status;
8839 di->dcerpc_procedure_name="CreateWowService";
8840 offset = svcctl_dissect_element_CreateWowService_tag_id(tvb, offset, pinfo, tree, di, drep);
8841 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8843 offset = svcctl_dissect_element_CreateWowService_handle(tvb, offset, pinfo, tree, di, drep);
8844 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8846 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8848 if (status != 0)
8849 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8851 return offset;
8854 static int
8855 svcctl_dissect_CreateWowService_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8857 di->dcerpc_procedure_name="CreateWowService";
8858 offset = svcctl_dissect_element_CreateWowService_scm_handle(tvb, offset, pinfo, tree, di, drep);
8859 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8860 offset = svcctl_dissect_element_CreateWowService_ServiceName(tvb, offset, pinfo, tree, di, drep);
8861 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8862 offset = svcctl_dissect_element_CreateWowService_DisplayName(tvb, offset, pinfo, tree, di, drep);
8863 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8864 offset = svcctl_dissect_element_CreateWowService_desired_access(tvb, offset, pinfo, tree, di, drep);
8865 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8866 offset = svcctl_dissect_element_CreateWowService_service_type(tvb, offset, pinfo, tree, di, drep);
8867 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8868 offset = svcctl_dissect_element_CreateWowService_start_type(tvb, offset, pinfo, tree, di, drep);
8869 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8870 offset = svcctl_dissect_element_CreateWowService_error_control(tvb, offset, pinfo, tree, di, drep);
8871 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8872 offset = svcctl_dissect_element_CreateWowService_binary_path(tvb, offset, pinfo, tree, di, drep);
8873 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8874 offset = svcctl_dissect_element_CreateWowService_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep);
8875 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8876 offset = svcctl_dissect_element_CreateWowService_tag_id(tvb, offset, pinfo, tree, di, drep);
8877 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8878 offset = svcctl_dissect_element_CreateWowService_dependencies(tvb, offset, pinfo, tree, di, drep);
8879 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8880 offset = svcctl_dissect_element_CreateWowService_dependencies_size(tvb, offset, pinfo, tree, di, drep);
8881 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8882 offset = svcctl_dissect_element_CreateWowService_service_start_name(tvb, offset, pinfo, tree, di, drep);
8883 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8884 offset = svcctl_dissect_element_CreateWowService_password(tvb, offset, pinfo, tree, di, drep);
8885 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8886 offset = svcctl_dissect_element_CreateWowService_password_size(tvb, offset, pinfo, tree, di, drep);
8887 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8888 offset = svcctl_dissect_element_CreateWowService_service_wow_type(tvb, offset, pinfo, tree, di, drep);
8889 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
8890 return offset;
8893 /* IDL: WERROR svcctl_GetServiceRegistryStateKey( */
8894 /* IDL: */
8895 /* IDL: ); */
8897 static int
8898 svcctl_dissect_GetServiceRegistryStateKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8900 uint32_t status;
8902 di->dcerpc_procedure_name="GetServiceRegistryStateKey";
8903 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8905 if (status != 0)
8906 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8908 return offset;
8911 static int
8912 svcctl_dissect_GetServiceRegistryStateKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8914 di->dcerpc_procedure_name="GetServiceRegistryStateKey";
8915 return offset;
8918 /* IDL: WERROR svcctl_GetServiceDirectory( */
8919 /* IDL: */
8920 /* IDL: ); */
8922 static int
8923 svcctl_dissect_GetServiceDirectory_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8925 uint32_t status;
8927 di->dcerpc_procedure_name="GetServiceDirectory";
8928 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8930 if (status != 0)
8931 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8933 return offset;
8936 static int
8937 svcctl_dissect_GetServiceDirectory_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8939 di->dcerpc_procedure_name="GetServiceDirectory";
8940 return offset;
8943 /* IDL: WERROR svcctl_GetServiceProcessToken( */
8944 /* IDL: */
8945 /* IDL: ); */
8947 static int
8948 svcctl_dissect_GetServiceProcessToken_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8950 uint32_t status;
8952 di->dcerpc_procedure_name="GetServiceProcessToken";
8953 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
8955 if (status != 0)
8956 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
8958 return offset;
8961 static int
8962 svcctl_dissect_GetServiceProcessToken_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8964 di->dcerpc_procedure_name="GetServiceProcessToken";
8965 return offset;
8968 static int
8969 svcctl_dissect_element_OpenSCManager2_database_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8971 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManager2_database_name_, NDR_POINTER_UNIQUE, "Pointer to Database Name (uint16)",hf_svcctl_svcctl_OpenSCManager2_database_name);
8973 return offset;
8976 static int
8977 svcctl_dissect_element_OpenSCManager2_database_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8979 char *data = NULL;
8980 struct ndr_generic_array nga = { .is_conformant = false, };
8982 offset = dissect_ndr_conformant_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8984 offset = dissect_ndr_varying_array_hdr(tvb, offset, pinfo, tree, di, drep, &nga);
8985 offset = dissect_ndr_generic_array_string(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManager2_database_name, false, &nga, &data);
8986 proto_item_append_text(tree, ": %s", data);
8988 return offset;
8991 static int
8992 svcctl_dissect_element_OpenSCManager2_desired_access(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
8994 offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManager2_desired_access, 0);
8996 return offset;
8999 static int
9000 svcctl_dissect_element_OpenSCManager2_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9002 offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_OpenSCManager2_handle_, NDR_POINTER_REF, "Pointer to Handle (policy_handle)",hf_svcctl_svcctl_OpenSCManager2_handle);
9004 return offset;
9007 static int
9008 svcctl_dissect_element_OpenSCManager2_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9010 offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManager2_handle, 0);
9012 return offset;
9015 /* IDL: WERROR svcctl_OpenSCManager2( */
9016 /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *database_name, */
9017 /* IDL: [in] uint32 desired_access, */
9018 /* IDL: [out] [ref] policy_handle *handle */
9019 /* IDL: ); */
9021 static int
9022 svcctl_dissect_OpenSCManager2_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9024 uint32_t status;
9026 di->dcerpc_procedure_name="OpenSCManager2";
9027 offset = svcctl_dissect_element_OpenSCManager2_handle(tvb, offset, pinfo, tree, di, drep);
9028 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
9030 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
9032 if (status != 0)
9033 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
9035 return offset;
9038 static int
9039 svcctl_dissect_OpenSCManager2_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9041 di->dcerpc_procedure_name="OpenSCManager2";
9042 offset = svcctl_dissect_element_OpenSCManager2_database_name(tvb, offset, pinfo, tree, di, drep);
9043 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
9044 offset = svcctl_dissect_element_OpenSCManager2_desired_access(tvb, offset, pinfo, tree, di, drep);
9045 offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep);
9046 return offset;
9049 /* IDL: WERROR svcctl_GetSharedServiceRegistryStateKey( */
9050 /* IDL: */
9051 /* IDL: ); */
9053 static int
9054 svcctl_dissect_GetSharedServiceRegistryStateKey_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9056 uint32_t status;
9058 di->dcerpc_procedure_name="GetSharedServiceRegistryStateKey";
9059 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
9061 if (status != 0)
9062 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
9064 return offset;
9067 static int
9068 svcctl_dissect_GetSharedServiceRegistryStateKey_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9070 di->dcerpc_procedure_name="GetSharedServiceRegistryStateKey";
9071 return offset;
9074 /* IDL: WERROR svcctl_GetSharedServiceDirectory( */
9075 /* IDL: */
9076 /* IDL: ); */
9078 static int
9079 svcctl_dissect_GetSharedServiceDirectory_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9081 uint32_t status;
9083 di->dcerpc_procedure_name="GetSharedServiceDirectory";
9084 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status);
9086 if (status != 0)
9087 col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x"));
9089 return offset;
9092 static int
9093 svcctl_dissect_GetSharedServiceDirectory_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, dcerpc_info* di _U_, uint8_t *drep _U_)
9095 di->dcerpc_procedure_name="GetSharedServiceDirectory";
9096 return offset;
9100 static const dcerpc_sub_dissector svcctl_dissectors[] = {
9101 { 0, "CloseServiceHandle",
9102 svcctl_dissect_CloseServiceHandle_request, svcctl_dissect_CloseServiceHandle_response},
9103 { 1, "ControlService",
9104 svcctl_dissect_ControlService_request, svcctl_dissect_ControlService_response},
9105 { 2, "DeleteService",
9106 svcctl_dissect_DeleteService_request, svcctl_dissect_DeleteService_response},
9107 { 3, "LockServiceDatabase",
9108 svcctl_dissect_LockServiceDatabase_request, svcctl_dissect_LockServiceDatabase_response},
9109 { 4, "QueryServiceObjectSecurity",
9110 svcctl_dissect_QueryServiceObjectSecurity_request, svcctl_dissect_QueryServiceObjectSecurity_response},
9111 { 5, "SetServiceObjectSecurity",
9112 svcctl_dissect_SetServiceObjectSecurity_request, svcctl_dissect_SetServiceObjectSecurity_response},
9113 { 6, "QueryServiceStatus",
9114 svcctl_dissect_QueryServiceStatus_request, svcctl_dissect_QueryServiceStatus_response},
9115 { 7, "SetServiceStatus",
9116 svcctl_dissect_SetServiceStatus_request, svcctl_dissect_SetServiceStatus_response},
9117 { 8, "UnlockServiceDatabase",
9118 svcctl_dissect_UnlockServiceDatabase_request, svcctl_dissect_UnlockServiceDatabase_response},
9119 { 9, "NotifyBootConfigStatus",
9120 svcctl_dissect_NotifyBootConfigStatus_request, svcctl_dissect_NotifyBootConfigStatus_response},
9121 { 10, "SCSetServiceBitsW",
9122 svcctl_dissect_SCSetServiceBitsW_request, svcctl_dissect_SCSetServiceBitsW_response},
9123 { 11, "ChangeServiceConfigW",
9124 svcctl_dissect_ChangeServiceConfigW_request, svcctl_dissect_ChangeServiceConfigW_response},
9125 { 12, "CreateServiceW",
9126 svcctl_dissect_CreateServiceW_request, svcctl_dissect_CreateServiceW_response},
9127 { 13, "EnumDependentServicesW",
9128 svcctl_dissect_EnumDependentServicesW_request, svcctl_dissect_EnumDependentServicesW_response},
9129 { 14, "EnumServicesStatusW",
9130 svcctl_dissect_EnumServicesStatusW_request, svcctl_dissect_EnumServicesStatusW_response},
9131 { 15, "OpenSCManagerW",
9132 svcctl_dissect_OpenSCManagerW_request, svcctl_dissect_OpenSCManagerW_response},
9133 { 16, "OpenServiceW",
9134 svcctl_dissect_OpenServiceW_request, svcctl_dissect_OpenServiceW_response},
9135 { 17, "QueryServiceConfigW",
9136 svcctl_dissect_QueryServiceConfigW_request, svcctl_dissect_QueryServiceConfigW_response},
9137 { 18, "QueryServiceLockStatusW",
9138 svcctl_dissect_QueryServiceLockStatusW_request, svcctl_dissect_QueryServiceLockStatusW_response},
9139 { 19, "StartServiceW",
9140 svcctl_dissect_StartServiceW_request, svcctl_dissect_StartServiceW_response},
9141 { 20, "GetServiceDisplayNameW",
9142 svcctl_dissect_GetServiceDisplayNameW_request, svcctl_dissect_GetServiceDisplayNameW_response},
9143 { 21, "GetServiceKeyNameW",
9144 svcctl_dissect_GetServiceKeyNameW_request, svcctl_dissect_GetServiceKeyNameW_response},
9145 { 22, "SCSetServiceBitsA",
9146 svcctl_dissect_SCSetServiceBitsA_request, svcctl_dissect_SCSetServiceBitsA_response},
9147 { 23, "ChangeServiceConfigA",
9148 svcctl_dissect_ChangeServiceConfigA_request, svcctl_dissect_ChangeServiceConfigA_response},
9149 { 24, "CreateServiceA",
9150 svcctl_dissect_CreateServiceA_request, svcctl_dissect_CreateServiceA_response},
9151 { 25, "EnumDependentServicesA",
9152 svcctl_dissect_EnumDependentServicesA_request, svcctl_dissect_EnumDependentServicesA_response},
9153 { 26, "EnumServicesStatusA",
9154 svcctl_dissect_EnumServicesStatusA_request, svcctl_dissect_EnumServicesStatusA_response},
9155 { 27, "OpenSCManagerA",
9156 svcctl_dissect_OpenSCManagerA_request, svcctl_dissect_OpenSCManagerA_response},
9157 { 28, "OpenServiceA",
9158 svcctl_dissect_OpenServiceA_request, svcctl_dissect_OpenServiceA_response},
9159 { 29, "QueryServiceConfigA",
9160 svcctl_dissect_QueryServiceConfigA_request, svcctl_dissect_QueryServiceConfigA_response},
9161 { 30, "QueryServiceLockStatusA",
9162 svcctl_dissect_QueryServiceLockStatusA_request, svcctl_dissect_QueryServiceLockStatusA_response},
9163 { 31, "StartServiceA",
9164 svcctl_dissect_StartServiceA_request, svcctl_dissect_StartServiceA_response},
9165 { 32, "GetServiceDisplayNameA",
9166 svcctl_dissect_GetServiceDisplayNameA_request, svcctl_dissect_GetServiceDisplayNameA_response},
9167 { 33, "GetServiceKeyNameA",
9168 svcctl_dissect_GetServiceKeyNameA_request, svcctl_dissect_GetServiceKeyNameA_response},
9169 { 34, "GetCurrentGroupeStateW",
9170 svcctl_dissect_GetCurrentGroupeStateW_request, svcctl_dissect_GetCurrentGroupeStateW_response},
9171 { 35, "EnumServiceGroupW",
9172 svcctl_dissect_EnumServiceGroupW_request, svcctl_dissect_EnumServiceGroupW_response},
9173 { 36, "ChangeServiceConfig2A",
9174 svcctl_dissect_ChangeServiceConfig2A_request, svcctl_dissect_ChangeServiceConfig2A_response},
9175 { 37, "ChangeServiceConfig2W",
9176 svcctl_dissect_ChangeServiceConfig2W_request, svcctl_dissect_ChangeServiceConfig2W_response},
9177 { 38, "QueryServiceConfig2A",
9178 svcctl_dissect_QueryServiceConfig2A_request, svcctl_dissect_QueryServiceConfig2A_response},
9179 { 39, "QueryServiceConfig2W",
9180 svcctl_dissect_QueryServiceConfig2W_request, svcctl_dissect_QueryServiceConfig2W_response},
9181 { 40, "QueryServiceStatusEx",
9182 svcctl_dissect_QueryServiceStatusEx_request, svcctl_dissect_QueryServiceStatusEx_response},
9183 { 41, "EnumServicesStatusExA",
9184 svcctl_dissect_EnumServicesStatusExA_request, svcctl_dissect_EnumServicesStatusExA_response},
9185 { 42, "EnumServicesStatusExW",
9186 svcctl_dissect_EnumServicesStatusExW_request, svcctl_dissect_EnumServicesStatusExW_response},
9187 { 43, "ScBroadcastServiceControlMessage",
9188 svcctl_dissect_ScBroadcastServiceControlMessage_request, svcctl_dissect_ScBroadcastServiceControlMessage_response},
9189 { 44, "CreateServiceWOW64A",
9190 svcctl_dissect_CreateServiceWOW64A_request, svcctl_dissect_CreateServiceWOW64A_response},
9191 { 45, "CreateServiceWOW64W",
9192 svcctl_dissect_CreateServiceWOW64W_request, svcctl_dissect_CreateServiceWOW64W_response},
9193 { 46, "ScQueryServiceTagInfo",
9194 svcctl_dissect_ScQueryServiceTagInfo_request, svcctl_dissect_ScQueryServiceTagInfo_response},
9195 { 47, "NotifyServiceStatusChange",
9196 svcctl_dissect_NotifyServiceStatusChange_request, svcctl_dissect_NotifyServiceStatusChange_response},
9197 { 48, "GetNotifyResults",
9198 svcctl_dissect_GetNotifyResults_request, svcctl_dissect_GetNotifyResults_response},
9199 { 49, "CloseNotifyHandle",
9200 svcctl_dissect_CloseNotifyHandle_request, svcctl_dissect_CloseNotifyHandle_response},
9201 { 50, "ControlServiceExA",
9202 svcctl_dissect_ControlServiceExA_request, svcctl_dissect_ControlServiceExA_response},
9203 { 51, "ControlServiceExW",
9204 svcctl_dissect_ControlServiceExW_request, svcctl_dissect_ControlServiceExW_response},
9205 { 52, "ScSendPnPMessage",
9206 svcctl_dissect_ScSendPnPMessage_request, svcctl_dissect_ScSendPnPMessage_response},
9207 { 53, "ScValidatePnPService",
9208 svcctl_dissect_ScValidatePnPService_request, svcctl_dissect_ScValidatePnPService_response},
9209 { 54, "ScOpenServiceStatusHandle",
9210 svcctl_dissect_ScOpenServiceStatusHandle_request, svcctl_dissect_ScOpenServiceStatusHandle_response},
9211 { 55, "ScQueryServiceConfig",
9212 svcctl_dissect_ScQueryServiceConfig_request, svcctl_dissect_ScQueryServiceConfig_response},
9213 { 56, "QueryServiceConfigEx",
9214 svcctl_dissect_QueryServiceConfigEx_request, svcctl_dissect_QueryServiceConfigEx_response},
9215 { 57, "ScRegisterPreshutdownRestart",
9216 svcctl_dissect_ScRegisterPreshutdownRestart_request, svcctl_dissect_ScRegisterPreshutdownRestart_response},
9217 { 58, "ScReparseServiceDatabase",
9218 svcctl_dissect_ScReparseServiceDatabase_request, svcctl_dissect_ScReparseServiceDatabase_response},
9219 { 59, "QueryUserServiceName",
9220 svcctl_dissect_QueryUserServiceName_request, svcctl_dissect_QueryUserServiceName_response},
9221 { 60, "CreateWowService",
9222 svcctl_dissect_CreateWowService_request, svcctl_dissect_CreateWowService_response},
9223 { 61, "GetServiceRegistryStateKey",
9224 svcctl_dissect_GetServiceRegistryStateKey_request, svcctl_dissect_GetServiceRegistryStateKey_response},
9225 { 62, "GetServiceDirectory",
9226 svcctl_dissect_GetServiceDirectory_request, svcctl_dissect_GetServiceDirectory_response},
9227 { 63, "GetServiceProcessToken",
9228 svcctl_dissect_GetServiceProcessToken_request, svcctl_dissect_GetServiceProcessToken_response},
9229 { 64, "OpenSCManager2",
9230 svcctl_dissect_OpenSCManager2_request, svcctl_dissect_OpenSCManager2_response},
9231 { 65, "GetSharedServiceRegistryStateKey",
9232 svcctl_dissect_GetSharedServiceRegistryStateKey_request, svcctl_dissect_GetSharedServiceRegistryStateKey_response},
9233 { 66, "GetSharedServiceDirectory",
9234 svcctl_dissect_GetSharedServiceDirectory_request, svcctl_dissect_GetSharedServiceDirectory_response},
9235 { 0, NULL, NULL, NULL }
9238 void proto_register_dcerpc_svcctl(void)
9240 static hf_register_info hf[] = {
9241 { &hf_svcctl_ENUM_SERVICE_STATUSA_display_name,
9242 { "Display Name", "svcctl.ENUM_SERVICE_STATUSA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9243 { &hf_svcctl_ENUM_SERVICE_STATUSA_service_name,
9244 { "Service Name", "svcctl.ENUM_SERVICE_STATUSA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9245 { &hf_svcctl_ENUM_SERVICE_STATUSA_status,
9246 { "Status", "svcctl.ENUM_SERVICE_STATUSA.status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9247 { &hf_svcctl_ENUM_SERVICE_STATUSW_display_name,
9248 { "Display Name", "svcctl.ENUM_SERVICE_STATUSW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9249 { &hf_svcctl_ENUM_SERVICE_STATUSW_service_name,
9250 { "Service Name", "svcctl.ENUM_SERVICE_STATUSW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9251 { &hf_svcctl_ENUM_SERVICE_STATUSW_status,
9252 { "Status", "svcctl.ENUM_SERVICE_STATUSW.status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9253 { &hf_svcctl_EnumServicesStatusExA_group_name,
9254 { "Group Name", "svcctl.EnumServicesStatusExA.group_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9255 { &hf_svcctl_EnumServicesStatusExA_info_level,
9256 { "Info Level", "svcctl.EnumServicesStatusExA.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9257 { &hf_svcctl_EnumServicesStatusExA_needed,
9258 { "Needed", "svcctl.EnumServicesStatusExA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9259 { &hf_svcctl_EnumServicesStatusExA_offered,
9260 { "Offered", "svcctl.EnumServicesStatusExA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9261 { &hf_svcctl_EnumServicesStatusExA_resume_handle,
9262 { "Resume Handle", "svcctl.EnumServicesStatusExA.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9263 { &hf_svcctl_EnumServicesStatusExA_scm_handle,
9264 { "Scm Handle", "svcctl.EnumServicesStatusExA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9265 { &hf_svcctl_EnumServicesStatusExA_service_returned,
9266 { "Service Returned", "svcctl.EnumServicesStatusExA.service_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9267 { &hf_svcctl_EnumServicesStatusExA_service_type,
9268 { "Service Type", "svcctl.EnumServicesStatusExA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9269 { &hf_svcctl_EnumServicesStatusExA_services,
9270 { "Services", "svcctl.EnumServicesStatusExA.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9271 { &hf_svcctl_EnumServicesStatusExA_state,
9272 { "State", "svcctl.EnumServicesStatusExA.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9273 { &hf_svcctl_EnumServicesStatusExW_group_name,
9274 { "Group Name", "svcctl.EnumServicesStatusExW.group_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9275 { &hf_svcctl_EnumServicesStatusExW_info_level,
9276 { "Info Level", "svcctl.EnumServicesStatusExW.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9277 { &hf_svcctl_EnumServicesStatusExW_needed,
9278 { "Needed", "svcctl.EnumServicesStatusExW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9279 { &hf_svcctl_EnumServicesStatusExW_offered,
9280 { "Offered", "svcctl.EnumServicesStatusExW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9281 { &hf_svcctl_EnumServicesStatusExW_resume_handle,
9282 { "Resume Handle", "svcctl.EnumServicesStatusExW.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9283 { &hf_svcctl_EnumServicesStatusExW_scmanager,
9284 { "Scmanager", "svcctl.EnumServicesStatusExW.scmanager", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9285 { &hf_svcctl_EnumServicesStatusExW_service_returned,
9286 { "Service Returned", "svcctl.EnumServicesStatusExW.service_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9287 { &hf_svcctl_EnumServicesStatusExW_service_type,
9288 { "Service Type", "svcctl.EnumServicesStatusExW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9289 { &hf_svcctl_EnumServicesStatusExW_services,
9290 { "Services", "svcctl.EnumServicesStatusExW.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9291 { &hf_svcctl_EnumServicesStatusExW_state,
9292 { "State", "svcctl.EnumServicesStatusExW.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9293 { &hf_svcctl_QUERY_SERVICE_CONFIG_dependencies,
9294 { "Dependencies", "svcctl.QUERY_SERVICE_CONFIG.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9295 { &hf_svcctl_QUERY_SERVICE_CONFIG_displayname,
9296 { "Displayname", "svcctl.QUERY_SERVICE_CONFIG.displayname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9297 { &hf_svcctl_QUERY_SERVICE_CONFIG_error_control,
9298 { "Error Control", "svcctl.QUERY_SERVICE_CONFIG.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9299 { &hf_svcctl_QUERY_SERVICE_CONFIG_executablepath,
9300 { "Executablepath", "svcctl.QUERY_SERVICE_CONFIG.executablepath", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9301 { &hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup,
9302 { "Loadordergroup", "svcctl.QUERY_SERVICE_CONFIG.loadordergroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9303 { &hf_svcctl_QUERY_SERVICE_CONFIG_service_type,
9304 { "Service Type", "svcctl.QUERY_SERVICE_CONFIG.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9305 { &hf_svcctl_QUERY_SERVICE_CONFIG_start_type,
9306 { "Start Type", "svcctl.QUERY_SERVICE_CONFIG.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9307 { &hf_svcctl_QUERY_SERVICE_CONFIG_startname,
9308 { "Startname", "svcctl.QUERY_SERVICE_CONFIG.startname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9309 { &hf_svcctl_QUERY_SERVICE_CONFIG_tag_id,
9310 { "Tag Id", "svcctl.QUERY_SERVICE_CONFIG.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9311 { &hf_svcctl_SERVICE_LOCK_STATUS_is_locked,
9312 { "Is Locked", "svcctl.SERVICE_LOCK_STATUS.is_locked", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9313 { &hf_svcctl_SERVICE_LOCK_STATUS_lock_duration,
9314 { "Lock Duration", "svcctl.SERVICE_LOCK_STATUS.lock_duration", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9315 { &hf_svcctl_SERVICE_LOCK_STATUS_lock_owner,
9316 { "Lock Owner", "svcctl.SERVICE_LOCK_STATUS.lock_owner", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9317 { &hf_svcctl_SERVICE_STATUS_PROCESS_check_point,
9318 { "Check Point", "svcctl.SERVICE_STATUS_PROCESS.check_point", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9319 { &hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted,
9320 { "Controls Accepted", "svcctl.SERVICE_STATUS_PROCESS.controls_accepted", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9321 { &hf_svcctl_SERVICE_STATUS_PROCESS_process_id,
9322 { "Process Id", "svcctl.SERVICE_STATUS_PROCESS.process_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9323 { &hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code,
9324 { "Service Exit Code", "svcctl.SERVICE_STATUS_PROCESS.service_exit_code", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9325 { &hf_svcctl_SERVICE_STATUS_PROCESS_service_flags,
9326 { "Service Flags", "svcctl.SERVICE_STATUS_PROCESS.service_flags", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceFlags_vals), 0, NULL, HFILL }},
9327 { &hf_svcctl_SERVICE_STATUS_PROCESS_state,
9328 { "State", "svcctl.SERVICE_STATUS_PROCESS.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceStatus_vals), 0, NULL, HFILL }},
9329 { &hf_svcctl_SERVICE_STATUS_PROCESS_type,
9330 { "Type", "svcctl.SERVICE_STATUS_PROCESS.type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9331 { &hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint,
9332 { "Wait Hint", "svcctl.SERVICE_STATUS_PROCESS.wait_hint", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9333 { &hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code,
9334 { "Win32 Exit Code", "svcctl.SERVICE_STATUS_PROCESS.win32_exit_code", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }},
9335 { &hf_svcctl_SERVICE_STATUS_check_point,
9336 { "Check Point", "svcctl.SERVICE_STATUS.check_point", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9337 { &hf_svcctl_SERVICE_STATUS_controls_accepted,
9338 { "Controls Accepted", "svcctl.SERVICE_STATUS.controls_accepted", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9339 { &hf_svcctl_SERVICE_STATUS_service_exit_code,
9340 { "Service Exit Code", "svcctl.SERVICE_STATUS.service_exit_code", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9341 { &hf_svcctl_SERVICE_STATUS_state,
9342 { "State", "svcctl.SERVICE_STATUS.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceStatus_vals), 0, NULL, HFILL }},
9343 { &hf_svcctl_SERVICE_STATUS_type,
9344 { "Type", "svcctl.SERVICE_STATUS.type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9345 { &hf_svcctl_SERVICE_STATUS_wait_hint,
9346 { "Wait Hint", "svcctl.SERVICE_STATUS.wait_hint", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9347 { &hf_svcctl_SERVICE_STATUS_win32_exit_code,
9348 { "Win32 Exit Code", "svcctl.SERVICE_STATUS.win32_exit_code", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }},
9349 { &hf_svcctl_opnum,
9350 { "Operation", "svcctl.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
9351 { &hf_svcctl_service_buffer_size,
9352 { "Buffer Size", "svcctl.services.buffer_size", FT_UINT32, BASE_DEC, NULL, 0, "NULL", HFILL }},
9353 { &hf_svcctl_service_referent_id,
9354 { "Referent ID(offset)", "svcctl.ENUM_SERVICE_STATUSW.referent_id", FT_UINT32, BASE_DEC, NULL, 0, "NULL", HFILL }},
9355 { &hf_svcctl_svcctl_ArgumentStringA_string,
9356 { "String", "svcctl.svcctl_ArgumentStringA.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9357 { &hf_svcctl_svcctl_ArgumentString_string,
9358 { "String", "svcctl.svcctl_ArgumentString.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9359 { &hf_svcctl_svcctl_ChangeServiceConfig2A_info,
9360 { "Info", "svcctl.svcctl_ChangeServiceConfig2A.info", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9361 { &hf_svcctl_svcctl_ChangeServiceConfig2A_info_level,
9362 { "Info Level", "svcctl.svcctl_ChangeServiceConfig2A.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9363 { &hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle,
9364 { "Service Handle", "svcctl.svcctl_ChangeServiceConfig2A.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9365 { &hf_svcctl_svcctl_ChangeServiceConfig2W_handle,
9366 { "Handle", "svcctl.svcctl_ChangeServiceConfig2W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9367 { &hf_svcctl_svcctl_ChangeServiceConfig2W_info,
9368 { "Info", "svcctl.svcctl_ChangeServiceConfig2W.info", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9369 { &hf_svcctl_svcctl_ChangeServiceConfig2W_info_level,
9370 { "Info Level", "svcctl.svcctl_ChangeServiceConfig2W.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9371 { &hf_svcctl_svcctl_ChangeServiceConfigA_binary_path,
9372 { "Binary Path", "svcctl.svcctl_ChangeServiceConfigA.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9373 { &hf_svcctl_svcctl_ChangeServiceConfigA_dependencies,
9374 { "Dependencies", "svcctl.svcctl_ChangeServiceConfigA.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9375 { &hf_svcctl_svcctl_ChangeServiceConfigA_display_name,
9376 { "Display Name", "svcctl.svcctl_ChangeServiceConfigA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9377 { &hf_svcctl_svcctl_ChangeServiceConfigA_error_control,
9378 { "Error Control", "svcctl.svcctl_ChangeServiceConfigA.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9379 { &hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group,
9380 { "Load Order Group", "svcctl.svcctl_ChangeServiceConfigA.load_order_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9381 { &hf_svcctl_svcctl_ChangeServiceConfigA_password,
9382 { "Password", "svcctl.svcctl_ChangeServiceConfigA.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9383 { &hf_svcctl_svcctl_ChangeServiceConfigA_service_handle,
9384 { "Service Handle", "svcctl.svcctl_ChangeServiceConfigA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9385 { &hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name,
9386 { "Service Start Name", "svcctl.svcctl_ChangeServiceConfigA.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9387 { &hf_svcctl_svcctl_ChangeServiceConfigA_service_type,
9388 { "Service Type", "svcctl.svcctl_ChangeServiceConfigA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9389 { &hf_svcctl_svcctl_ChangeServiceConfigA_start_type,
9390 { "Start Type", "svcctl.svcctl_ChangeServiceConfigA.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9391 { &hf_svcctl_svcctl_ChangeServiceConfigA_tag_id,
9392 { "Tag Id", "svcctl.svcctl_ChangeServiceConfigA.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9393 { &hf_svcctl_svcctl_ChangeServiceConfigW_binary_path,
9394 { "Binary Path", "svcctl.svcctl_ChangeServiceConfigW.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9395 { &hf_svcctl_svcctl_ChangeServiceConfigW_dependencies,
9396 { "Dependencies", "svcctl.svcctl_ChangeServiceConfigW.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9397 { &hf_svcctl_svcctl_ChangeServiceConfigW_display_name,
9398 { "Display Name", "svcctl.svcctl_ChangeServiceConfigW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9399 { &hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize,
9400 { "DwDependSize", "svcctl.svcctl_ChangeServiceConfigW.dwDependSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9401 { &hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize,
9402 { "DwPwSize", "svcctl.svcctl_ChangeServiceConfigW.dwPwSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9403 { &hf_svcctl_svcctl_ChangeServiceConfigW_error_control,
9404 { "Error Control", "svcctl.svcctl_ChangeServiceConfigW.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9405 { &hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group,
9406 { "Load Order Group", "svcctl.svcctl_ChangeServiceConfigW.load_order_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9407 { &hf_svcctl_svcctl_ChangeServiceConfigW_password,
9408 { "Password", "svcctl.svcctl_ChangeServiceConfigW.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9409 { &hf_svcctl_svcctl_ChangeServiceConfigW_service_handle,
9410 { "Service Handle", "svcctl.svcctl_ChangeServiceConfigW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9411 { &hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name,
9412 { "Service Start Name", "svcctl.svcctl_ChangeServiceConfigW.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9413 { &hf_svcctl_svcctl_ChangeServiceConfigW_service_type,
9414 { "Service Type", "svcctl.svcctl_ChangeServiceConfigW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9415 { &hf_svcctl_svcctl_ChangeServiceConfigW_start_type,
9416 { "Start Type", "svcctl.svcctl_ChangeServiceConfigW.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9417 { &hf_svcctl_svcctl_ChangeServiceConfigW_tag_id,
9418 { "Tag Id", "svcctl.svcctl_ChangeServiceConfigW.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9419 { &hf_svcctl_svcctl_CloseServiceHandle_object_handle,
9420 { "Object Handle", "svcctl.svcctl_CloseServiceHandle.object_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9421 { &hf_svcctl_svcctl_ControlService_control,
9422 { "Control", "svcctl.svcctl_ControlService.control", FT_UINT32, BASE_DEC, VALS(svcctl_SERVICE_CONTROL_vals), 0, NULL, HFILL }},
9423 { &hf_svcctl_svcctl_ControlService_service_handle,
9424 { "Service Handle", "svcctl.svcctl_ControlService.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9425 { &hf_svcctl_svcctl_ControlService_service_status,
9426 { "Service Status", "svcctl.svcctl_ControlService.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9427 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE,
9428 { "SERVICE ACCEPT HARDWAREPROFILECHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_HARDWAREPROFILECHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE_tfs), ( 0x00000020 ), NULL, HFILL }},
9429 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE,
9430 { "SERVICE ACCEPT NETBINDCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_NETBINDCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE_tfs), ( 0x00000010 ), NULL, HFILL }},
9431 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE,
9432 { "SERVICE ACCEPT PARAMCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_PARAMCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE_tfs), ( 0x00000008 ), NULL, HFILL }},
9433 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE,
9434 { "SERVICE ACCEPT PAUSE CONTINUE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_PAUSE_CONTINUE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE_tfs), ( 0x00000002 ), NULL, HFILL }},
9435 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT,
9436 { "SERVICE ACCEPT POWEREVENT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_POWEREVENT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT_tfs), ( 0x00000040 ), NULL, HFILL }},
9437 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN,
9438 { "SERVICE ACCEPT PRESHUTDOWN", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_PRESHUTDOWN", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN_tfs), ( 0x00000100 ), NULL, HFILL }},
9439 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE,
9440 { "SERVICE ACCEPT SESSIONCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_SESSIONCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE_tfs), ( 0x00000080 ), NULL, HFILL }},
9441 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN,
9442 { "SERVICE ACCEPT SHUTDOWN", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_SHUTDOWN", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN_tfs), ( 0x00000004 ), NULL, HFILL }},
9443 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP,
9444 { "SERVICE ACCEPT STOP", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_STOP", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP_tfs), ( 0x00000001 ), NULL, HFILL }},
9445 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE,
9446 { "SERVICE ACCEPT TIMECHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_TIMECHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE_tfs), ( 0x00000200 ), NULL, HFILL }},
9447 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT,
9448 { "SERVICE ACCEPT TRIGGEREVENT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_TRIGGEREVENT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT_tfs), ( 0x00000400 ), NULL, HFILL }},
9449 { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT,
9450 { "SERVICE ACCEPT USERMODEREBOOT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_USERMODEREBOOT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT_tfs), ( 0x00000800 ), NULL, HFILL }},
9451 { &hf_svcctl_svcctl_CreateServiceA_DisplayName,
9452 { "DisplayName", "svcctl.svcctl_CreateServiceA.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9453 { &hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey,
9454 { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceA.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9455 { &hf_svcctl_svcctl_CreateServiceA_ServiceName,
9456 { "ServiceName", "svcctl.svcctl_CreateServiceA.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9457 { &hf_svcctl_svcctl_CreateServiceA_binary_path,
9458 { "Binary Path", "svcctl.svcctl_CreateServiceA.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9459 { &hf_svcctl_svcctl_CreateServiceA_dependencies,
9460 { "Dependencies", "svcctl.svcctl_CreateServiceA.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9461 { &hf_svcctl_svcctl_CreateServiceA_dependencies_size,
9462 { "Dependencies Size", "svcctl.svcctl_CreateServiceA.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9463 { &hf_svcctl_svcctl_CreateServiceA_desired_access,
9464 { "Desired Access", "svcctl.svcctl_CreateServiceA.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9465 { &hf_svcctl_svcctl_CreateServiceA_error_control,
9466 { "Error Control", "svcctl.svcctl_CreateServiceA.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9467 { &hf_svcctl_svcctl_CreateServiceA_password,
9468 { "Password", "svcctl.svcctl_CreateServiceA.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9469 { &hf_svcctl_svcctl_CreateServiceA_password_size,
9470 { "Password Size", "svcctl.svcctl_CreateServiceA.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9471 { &hf_svcctl_svcctl_CreateServiceA_scm_handle,
9472 { "Scm Handle", "svcctl.svcctl_CreateServiceA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9473 { &hf_svcctl_svcctl_CreateServiceA_service_handle,
9474 { "Service Handle", "svcctl.svcctl_CreateServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9475 { &hf_svcctl_svcctl_CreateServiceA_service_start_name,
9476 { "Service Start Name", "svcctl.svcctl_CreateServiceA.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9477 { &hf_svcctl_svcctl_CreateServiceA_service_type,
9478 { "Service Type", "svcctl.svcctl_CreateServiceA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9479 { &hf_svcctl_svcctl_CreateServiceA_start_type,
9480 { "Start Type", "svcctl.svcctl_CreateServiceA.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9481 { &hf_svcctl_svcctl_CreateServiceA_tag_id,
9482 { "Tag Id", "svcctl.svcctl_CreateServiceA.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9483 { &hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName,
9484 { "DisplayName", "svcctl.svcctl_CreateServiceWOW64A.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9485 { &hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey,
9486 { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceWOW64A.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9487 { &hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName,
9488 { "ServiceName", "svcctl.svcctl_CreateServiceWOW64A.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9489 { &hf_svcctl_svcctl_CreateServiceWOW64A_binary_path,
9490 { "Binary Path", "svcctl.svcctl_CreateServiceWOW64A.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9491 { &hf_svcctl_svcctl_CreateServiceWOW64A_dependencies,
9492 { "Dependencies", "svcctl.svcctl_CreateServiceWOW64A.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9493 { &hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size,
9494 { "Dependencies Size", "svcctl.svcctl_CreateServiceWOW64A.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9495 { &hf_svcctl_svcctl_CreateServiceWOW64A_desired_access,
9496 { "Desired Access", "svcctl.svcctl_CreateServiceWOW64A.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9497 { &hf_svcctl_svcctl_CreateServiceWOW64A_error_control,
9498 { "Error Control", "svcctl.svcctl_CreateServiceWOW64A.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9499 { &hf_svcctl_svcctl_CreateServiceWOW64A_handle,
9500 { "Handle", "svcctl.svcctl_CreateServiceWOW64A.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9501 { &hf_svcctl_svcctl_CreateServiceWOW64A_password,
9502 { "Password", "svcctl.svcctl_CreateServiceWOW64A.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9503 { &hf_svcctl_svcctl_CreateServiceWOW64A_password_size,
9504 { "Password Size", "svcctl.svcctl_CreateServiceWOW64A.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9505 { &hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle,
9506 { "Scm Handle", "svcctl.svcctl_CreateServiceWOW64A.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9507 { &hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name,
9508 { "Service Start Name", "svcctl.svcctl_CreateServiceWOW64A.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9509 { &hf_svcctl_svcctl_CreateServiceWOW64A_service_type,
9510 { "Service Type", "svcctl.svcctl_CreateServiceWOW64A.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9511 { &hf_svcctl_svcctl_CreateServiceWOW64A_start_type,
9512 { "Start Type", "svcctl.svcctl_CreateServiceWOW64A.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9513 { &hf_svcctl_svcctl_CreateServiceWOW64A_tag_id,
9514 { "Tag Id", "svcctl.svcctl_CreateServiceWOW64A.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9515 { &hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName,
9516 { "DisplayName", "svcctl.svcctl_CreateServiceWOW64W.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9517 { &hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey,
9518 { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceWOW64W.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9519 { &hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName,
9520 { "ServiceName", "svcctl.svcctl_CreateServiceWOW64W.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9521 { &hf_svcctl_svcctl_CreateServiceWOW64W_binary_path,
9522 { "Binary Path", "svcctl.svcctl_CreateServiceWOW64W.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9523 { &hf_svcctl_svcctl_CreateServiceWOW64W_dependencies,
9524 { "Dependencies", "svcctl.svcctl_CreateServiceWOW64W.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9525 { &hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size,
9526 { "Dependencies Size", "svcctl.svcctl_CreateServiceWOW64W.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9527 { &hf_svcctl_svcctl_CreateServiceWOW64W_desired_access,
9528 { "Desired Access", "svcctl.svcctl_CreateServiceWOW64W.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9529 { &hf_svcctl_svcctl_CreateServiceWOW64W_error_control,
9530 { "Error Control", "svcctl.svcctl_CreateServiceWOW64W.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9531 { &hf_svcctl_svcctl_CreateServiceWOW64W_handle,
9532 { "Handle", "svcctl.svcctl_CreateServiceWOW64W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9533 { &hf_svcctl_svcctl_CreateServiceWOW64W_password,
9534 { "Password", "svcctl.svcctl_CreateServiceWOW64W.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9535 { &hf_svcctl_svcctl_CreateServiceWOW64W_password_size,
9536 { "Password Size", "svcctl.svcctl_CreateServiceWOW64W.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9537 { &hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle,
9538 { "Scm Handle", "svcctl.svcctl_CreateServiceWOW64W.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9539 { &hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name,
9540 { "Service Start Name", "svcctl.svcctl_CreateServiceWOW64W.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9541 { &hf_svcctl_svcctl_CreateServiceWOW64W_service_type,
9542 { "Service Type", "svcctl.svcctl_CreateServiceWOW64W.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9543 { &hf_svcctl_svcctl_CreateServiceWOW64W_start_type,
9544 { "Start Type", "svcctl.svcctl_CreateServiceWOW64W.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9545 { &hf_svcctl_svcctl_CreateServiceWOW64W_tag_id,
9546 { "Tag Id", "svcctl.svcctl_CreateServiceWOW64W.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9547 { &hf_svcctl_svcctl_CreateServiceW_DisplayName,
9548 { "DisplayName", "svcctl.svcctl_CreateServiceW.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9549 { &hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup,
9550 { "LoadOrderGroup", "svcctl.svcctl_CreateServiceW.LoadOrderGroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9551 { &hf_svcctl_svcctl_CreateServiceW_ServiceName,
9552 { "ServiceName", "svcctl.svcctl_CreateServiceW.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9553 { &hf_svcctl_svcctl_CreateServiceW_binary_path,
9554 { "Binary Path", "svcctl.svcctl_CreateServiceW.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9555 { &hf_svcctl_svcctl_CreateServiceW_dependencies,
9556 { "Dependencies", "svcctl.svcctl_CreateServiceW.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9557 { &hf_svcctl_svcctl_CreateServiceW_dependencies_size,
9558 { "Dependencies Size", "svcctl.svcctl_CreateServiceW.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9559 { &hf_svcctl_svcctl_CreateServiceW_desired_access,
9560 { "Desired Access", "svcctl.svcctl_CreateServiceW.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9561 { &hf_svcctl_svcctl_CreateServiceW_error_control,
9562 { "Error Control", "svcctl.svcctl_CreateServiceW.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9563 { &hf_svcctl_svcctl_CreateServiceW_password,
9564 { "Password", "svcctl.svcctl_CreateServiceW.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9565 { &hf_svcctl_svcctl_CreateServiceW_password_size,
9566 { "Password Size", "svcctl.svcctl_CreateServiceW.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9567 { &hf_svcctl_svcctl_CreateServiceW_scm_handle,
9568 { "Scm Handle", "svcctl.svcctl_CreateServiceW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9569 { &hf_svcctl_svcctl_CreateServiceW_service_handle,
9570 { "Service Handle", "svcctl.svcctl_CreateServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9571 { &hf_svcctl_svcctl_CreateServiceW_service_start_name,
9572 { "Service Start Name", "svcctl.svcctl_CreateServiceW.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9573 { &hf_svcctl_svcctl_CreateServiceW_service_type,
9574 { "Service Type", "svcctl.svcctl_CreateServiceW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9575 { &hf_svcctl_svcctl_CreateServiceW_start_type,
9576 { "Start Type", "svcctl.svcctl_CreateServiceW.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9577 { &hf_svcctl_svcctl_CreateServiceW_tag_id,
9578 { "Tag Id", "svcctl.svcctl_CreateServiceW.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9579 { &hf_svcctl_svcctl_CreateWowService_DisplayName,
9580 { "DisplayName", "svcctl.svcctl_CreateWowService.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9581 { &hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey,
9582 { "LoadOrderGroupKey", "svcctl.svcctl_CreateWowService.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9583 { &hf_svcctl_svcctl_CreateWowService_ServiceName,
9584 { "ServiceName", "svcctl.svcctl_CreateWowService.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9585 { &hf_svcctl_svcctl_CreateWowService_binary_path,
9586 { "Binary Path", "svcctl.svcctl_CreateWowService.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9587 { &hf_svcctl_svcctl_CreateWowService_dependencies,
9588 { "Dependencies", "svcctl.svcctl_CreateWowService.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9589 { &hf_svcctl_svcctl_CreateWowService_dependencies_size,
9590 { "Dependencies Size", "svcctl.svcctl_CreateWowService.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9591 { &hf_svcctl_svcctl_CreateWowService_desired_access,
9592 { "Desired Access", "svcctl.svcctl_CreateWowService.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9593 { &hf_svcctl_svcctl_CreateWowService_error_control,
9594 { "Error Control", "svcctl.svcctl_CreateWowService.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }},
9595 { &hf_svcctl_svcctl_CreateWowService_handle,
9596 { "Handle", "svcctl.svcctl_CreateWowService.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9597 { &hf_svcctl_svcctl_CreateWowService_password,
9598 { "Password", "svcctl.svcctl_CreateWowService.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9599 { &hf_svcctl_svcctl_CreateWowService_password_size,
9600 { "Password Size", "svcctl.svcctl_CreateWowService.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9601 { &hf_svcctl_svcctl_CreateWowService_scm_handle,
9602 { "Scm Handle", "svcctl.svcctl_CreateWowService.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9603 { &hf_svcctl_svcctl_CreateWowService_service_start_name,
9604 { "Service Start Name", "svcctl.svcctl_CreateWowService.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9605 { &hf_svcctl_svcctl_CreateWowService_service_type,
9606 { "Service Type", "svcctl.svcctl_CreateWowService.service_type", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9607 { &hf_svcctl_svcctl_CreateWowService_service_wow_type,
9608 { "Service Wow Type", "svcctl.svcctl_CreateWowService.service_wow_type", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
9609 { &hf_svcctl_svcctl_CreateWowService_start_type,
9610 { "Start Type", "svcctl.svcctl_CreateWowService.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }},
9611 { &hf_svcctl_svcctl_CreateWowService_tag_id,
9612 { "Tag Id", "svcctl.svcctl_CreateWowService.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9613 { &hf_svcctl_svcctl_DeleteService_service_handle,
9614 { "Service Handle", "svcctl.svcctl_DeleteService.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9615 { &hf_svcctl_svcctl_EnumDependentServicesA_needed,
9616 { "Needed", "svcctl.svcctl_EnumDependentServicesA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9617 { &hf_svcctl_svcctl_EnumDependentServicesA_offered,
9618 { "Offered", "svcctl.svcctl_EnumDependentServicesA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9619 { &hf_svcctl_svcctl_EnumDependentServicesA_service_handle,
9620 { "Service Handle", "svcctl.svcctl_EnumDependentServicesA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9621 { &hf_svcctl_svcctl_EnumDependentServicesA_service_status,
9622 { "Service Status", "svcctl.svcctl_EnumDependentServicesA.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9623 { &hf_svcctl_svcctl_EnumDependentServicesA_services_returned,
9624 { "Services Returned", "svcctl.svcctl_EnumDependentServicesA.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9625 { &hf_svcctl_svcctl_EnumDependentServicesA_state,
9626 { "State", "svcctl.svcctl_EnumDependentServicesA.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9627 { &hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded,
9628 { "Bytesneeded", "svcctl.svcctl_EnumDependentServicesW.bytesneeded", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9629 { &hf_svcctl_svcctl_EnumDependentServicesW_offered,
9630 { "Offered", "svcctl.svcctl_EnumDependentServicesW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9631 { &hf_svcctl_svcctl_EnumDependentServicesW_service_handle,
9632 { "Service Handle", "svcctl.svcctl_EnumDependentServicesW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9633 { &hf_svcctl_svcctl_EnumDependentServicesW_service_state,
9634 { "Service State", "svcctl.svcctl_EnumDependentServicesW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9635 { &hf_svcctl_svcctl_EnumDependentServicesW_service_status,
9636 { "Service Status", "svcctl.svcctl_EnumDependentServicesW.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9637 { &hf_svcctl_svcctl_EnumDependentServicesW_services_returned,
9638 { "Services Returned", "svcctl.svcctl_EnumDependentServicesW.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9639 { &hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex,
9640 { "ResumeIndex", "svcctl.svcctl_EnumServiceGroupW.ResumeIndex", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9641 { &hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize,
9642 { "CbBufSize", "svcctl.svcctl_EnumServiceGroupW.cbBufSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9643 { &hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer,
9644 { "LpBuffer", "svcctl.svcctl_EnumServiceGroupW.lpBuffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9645 { &hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned,
9646 { "LpServicesReturned", "svcctl.svcctl_EnumServiceGroupW.lpServicesReturned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9647 { &hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded,
9648 { "PcbBytesNeeded", "svcctl.svcctl_EnumServiceGroupW.pcbBytesNeeded", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9649 { &hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName,
9650 { "PszGroupName", "svcctl.svcctl_EnumServiceGroupW.pszGroupName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9651 { &hf_svcctl_svcctl_EnumServiceGroupW_scm_handle,
9652 { "Scm Handle", "svcctl.svcctl_EnumServiceGroupW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9653 { &hf_svcctl_svcctl_EnumServiceGroupW_service_state,
9654 { "Service State", "svcctl.svcctl_EnumServiceGroupW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9655 { &hf_svcctl_svcctl_EnumServiceGroupW_service_type,
9656 { "Service Type", "svcctl.svcctl_EnumServiceGroupW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9657 { &hf_svcctl_svcctl_EnumServicesStatusA_needed,
9658 { "Needed", "svcctl.svcctl_EnumServicesStatusA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9659 { &hf_svcctl_svcctl_EnumServicesStatusA_offered,
9660 { "Offered", "svcctl.svcctl_EnumServicesStatusA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9661 { &hf_svcctl_svcctl_EnumServicesStatusA_resume_handle,
9662 { "Resume Handle", "svcctl.svcctl_EnumServicesStatusA.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9663 { &hf_svcctl_svcctl_EnumServicesStatusA_scm_handle,
9664 { "Scm Handle", "svcctl.svcctl_EnumServicesStatusA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9665 { &hf_svcctl_svcctl_EnumServicesStatusA_service,
9666 { "Service", "svcctl.svcctl_EnumServicesStatusA.service", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9667 { &hf_svcctl_svcctl_EnumServicesStatusA_service_state,
9668 { "Service State", "svcctl.svcctl_EnumServicesStatusA.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9669 { &hf_svcctl_svcctl_EnumServicesStatusA_service_type,
9670 { "Service Type", "svcctl.svcctl_EnumServicesStatusA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9671 { &hf_svcctl_svcctl_EnumServicesStatusA_services_returned,
9672 { "Services Returned", "svcctl.svcctl_EnumServicesStatusA.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9673 { &hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed,
9674 { "Bytes Needed", "svcctl.svcctl_EnumServicesStatusW.bytes_needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9675 { &hf_svcctl_svcctl_EnumServicesStatusW_offered,
9676 { "Offered", "svcctl.svcctl_EnumServicesStatusW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9677 { &hf_svcctl_svcctl_EnumServicesStatusW_resume_index,
9678 { "Resume Index", "svcctl.svcctl_EnumServicesStatusW.resume_index", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9679 { &hf_svcctl_svcctl_EnumServicesStatusW_scm_handle,
9680 { "Scm Handle", "svcctl.svcctl_EnumServicesStatusW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9681 { &hf_svcctl_svcctl_EnumServicesStatusW_service_state,
9682 { "Service State", "svcctl.svcctl_EnumServicesStatusW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }},
9683 { &hf_svcctl_svcctl_EnumServicesStatusW_service_type,
9684 { "Service Type", "svcctl.svcctl_EnumServicesStatusW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }},
9685 { &hf_svcctl_svcctl_EnumServicesStatusW_services,
9686 { "Services", "svcctl.svcctl_EnumServicesStatusW.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9687 { &hf_svcctl_svcctl_EnumServicesStatusW_services_returned,
9688 { "Services Returned", "svcctl.svcctl_EnumServicesStatusW.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9689 { &hf_svcctl_svcctl_GetCurrentGroupeStateW_handle,
9690 { "Handle", "svcctl.svcctl_GetCurrentGroupeStateW.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9691 { &hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup,
9692 { "LpLoadOrderGroup", "svcctl.svcctl_GetCurrentGroupeStateW.lpLoadOrderGroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9693 { &hf_svcctl_svcctl_GetCurrentGroupeStateW_state,
9694 { "State", "svcctl.svcctl_GetCurrentGroupeStateW.state", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9695 { &hf_svcctl_svcctl_GetServiceDisplayNameA_display_name,
9696 { "Display Name", "svcctl.svcctl_GetServiceDisplayNameA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9697 { &hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length,
9698 { "Display Name Length", "svcctl.svcctl_GetServiceDisplayNameA.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9699 { &hf_svcctl_svcctl_GetServiceDisplayNameA_handle,
9700 { "Handle", "svcctl.svcctl_GetServiceDisplayNameA.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9701 { &hf_svcctl_svcctl_GetServiceDisplayNameA_service_name,
9702 { "Service Name", "svcctl.svcctl_GetServiceDisplayNameA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9703 { &hf_svcctl_svcctl_GetServiceDisplayNameW_display_name,
9704 { "Display Name", "svcctl.svcctl_GetServiceDisplayNameW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9705 { &hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length,
9706 { "Display Name Length", "svcctl.svcctl_GetServiceDisplayNameW.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9707 { &hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle,
9708 { "Scm Handle", "svcctl.svcctl_GetServiceDisplayNameW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9709 { &hf_svcctl_svcctl_GetServiceDisplayNameW_service_name,
9710 { "Service Name", "svcctl.svcctl_GetServiceDisplayNameW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9711 { &hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length,
9712 { "Display Name Length", "svcctl.svcctl_GetServiceKeyNameA.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9713 { &hf_svcctl_svcctl_GetServiceKeyNameA_key_name,
9714 { "Key Name", "svcctl.svcctl_GetServiceKeyNameA.key_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9715 { &hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle,
9716 { "Scm Handle", "svcctl.svcctl_GetServiceKeyNameA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9717 { &hf_svcctl_svcctl_GetServiceKeyNameA_service_name,
9718 { "Service Name", "svcctl.svcctl_GetServiceKeyNameA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9719 { &hf_svcctl_svcctl_GetServiceKeyNameW_display_name,
9720 { "Display Name", "svcctl.svcctl_GetServiceKeyNameW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9721 { &hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle,
9722 { "Scm Handle", "svcctl.svcctl_GetServiceKeyNameW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9723 { &hf_svcctl_svcctl_GetServiceKeyNameW_service_name,
9724 { "Service Name", "svcctl.svcctl_GetServiceKeyNameW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9725 { &hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length,
9726 { "Service Name Length", "svcctl.svcctl_GetServiceKeyNameW.service_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9727 { &hf_svcctl_svcctl_LockServiceDatabase_lock_handle,
9728 { "Lock Handle", "svcctl.svcctl_LockServiceDatabase.lock_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9729 { &hf_svcctl_svcctl_LockServiceDatabase_scm_handle,
9730 { "Scm Handle", "svcctl.svcctl_LockServiceDatabase.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9731 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS,
9732 { "SC RIGHT MGR ALL ACCESS", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_ALL_ACCESS", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS_tfs), ( 0x000F003F ), NULL, HFILL }},
9733 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT,
9734 { "SC RIGHT MGR CONNECT", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_CONNECT", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT_tfs), ( 0x00000001 ), NULL, HFILL }},
9735 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE,
9736 { "SC RIGHT MGR CREATE SERVICE", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_CREATE_SERVICE", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE_tfs), ( 0x00000002 ), NULL, HFILL }},
9737 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE,
9738 { "SC RIGHT MGR ENUMERATE SERVICE", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_ENUMERATE_SERVICE", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE_tfs), ( 0x00000004 ), NULL, HFILL }},
9739 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK,
9740 { "SC RIGHT MGR LOCK", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_LOCK", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK_tfs), ( 0x00000008 ), NULL, HFILL }},
9741 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG,
9742 { "SC RIGHT MGR MODIFY BOOT CONFIG", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG_tfs), ( 0x00000020 ), NULL, HFILL }},
9743 { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS,
9744 { "SC RIGHT MGR QUERY LOCK STATUS", "svcctl.svcctl_MgrAccessMask.SC_RIGHT_MGR_QUERY_LOCK_STATUS", FT_BOOLEAN, 32, TFS(&svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS_tfs), ( 0x00000010 ), NULL, HFILL }},
9745 { &hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable,
9746 { "Boot Acceptable", "svcctl.svcctl_NotifyBootConfigStatus.boot_acceptable", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9747 { &hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name,
9748 { "Machine Name", "svcctl.svcctl_NotifyBootConfigStatus.machine_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9749 { &hf_svcctl_svcctl_OpenSCManager2_database_name,
9750 { "Database Name", "svcctl.svcctl_OpenSCManager2.database_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9751 { &hf_svcctl_svcctl_OpenSCManager2_desired_access,
9752 { "Desired Access", "svcctl.svcctl_OpenSCManager2.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9753 { &hf_svcctl_svcctl_OpenSCManager2_handle,
9754 { "Handle", "svcctl.svcctl_OpenSCManager2.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9755 { &hf_svcctl_svcctl_OpenSCManagerA_DatabaseName,
9756 { "DatabaseName", "svcctl.svcctl_OpenSCManagerA.DatabaseName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9757 { &hf_svcctl_svcctl_OpenSCManagerA_MachineName,
9758 { "MachineName", "svcctl.svcctl_OpenSCManagerA.MachineName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9759 { &hf_svcctl_svcctl_OpenSCManagerA_access_mask,
9760 { "Access Mask", "svcctl.svcctl_OpenSCManagerA.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9761 { &hf_svcctl_svcctl_OpenSCManagerA_scm_handle,
9762 { "Scm Handle", "svcctl.svcctl_OpenSCManagerA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9763 { &hf_svcctl_svcctl_OpenSCManagerW_DatabaseName,
9764 { "DatabaseName", "svcctl.svcctl_OpenSCManagerW.DatabaseName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9765 { &hf_svcctl_svcctl_OpenSCManagerW_MachineName,
9766 { "MachineName", "svcctl.svcctl_OpenSCManagerW.MachineName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9767 { &hf_svcctl_svcctl_OpenSCManagerW_access_mask,
9768 { "Access Mask", "svcctl.svcctl_OpenSCManagerW.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9769 { &hf_svcctl_svcctl_OpenSCManagerW_scm_handle,
9770 { "Scm Handle", "svcctl.svcctl_OpenSCManagerW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9771 { &hf_svcctl_svcctl_OpenServiceA_ServiceName,
9772 { "ServiceName", "svcctl.svcctl_OpenServiceA.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9773 { &hf_svcctl_svcctl_OpenServiceA_access_mask,
9774 { "Access Mask", "svcctl.svcctl_OpenServiceA.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9775 { &hf_svcctl_svcctl_OpenServiceA_scm_handle,
9776 { "Scm Handle", "svcctl.svcctl_OpenServiceA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9777 { &hf_svcctl_svcctl_OpenServiceA_service_handle,
9778 { "Service Handle", "svcctl.svcctl_OpenServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9779 { &hf_svcctl_svcctl_OpenServiceW_ServiceName,
9780 { "ServiceName", "svcctl.svcctl_OpenServiceW.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9781 { &hf_svcctl_svcctl_OpenServiceW_access_mask,
9782 { "Access Mask", "svcctl.svcctl_OpenServiceW.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9783 { &hf_svcctl_svcctl_OpenServiceW_scm_handle,
9784 { "Scm Handle", "svcctl.svcctl_OpenServiceW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9785 { &hf_svcctl_svcctl_OpenServiceW_service_handle,
9786 { "Service Handle", "svcctl.svcctl_OpenServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9787 { &hf_svcctl_svcctl_QueryServiceConfig2A_buffer,
9788 { "Buffer", "svcctl.svcctl_QueryServiceConfig2A.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9789 { &hf_svcctl_svcctl_QueryServiceConfig2A_handle,
9790 { "Handle", "svcctl.svcctl_QueryServiceConfig2A.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9791 { &hf_svcctl_svcctl_QueryServiceConfig2A_info_level,
9792 { "Info Level", "svcctl.svcctl_QueryServiceConfig2A.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ConfigLevel_vals), 0, NULL, HFILL }},
9793 { &hf_svcctl_svcctl_QueryServiceConfig2A_needed,
9794 { "Needed", "svcctl.svcctl_QueryServiceConfig2A.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9795 { &hf_svcctl_svcctl_QueryServiceConfig2A_offered,
9796 { "Offered", "svcctl.svcctl_QueryServiceConfig2A.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9797 { &hf_svcctl_svcctl_QueryServiceConfig2W_buffer,
9798 { "Buffer", "svcctl.svcctl_QueryServiceConfig2W.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9799 { &hf_svcctl_svcctl_QueryServiceConfig2W_handle,
9800 { "Handle", "svcctl.svcctl_QueryServiceConfig2W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9801 { &hf_svcctl_svcctl_QueryServiceConfig2W_info_level,
9802 { "Info Level", "svcctl.svcctl_QueryServiceConfig2W.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ConfigLevel_vals), 0, NULL, HFILL }},
9803 { &hf_svcctl_svcctl_QueryServiceConfig2W_needed,
9804 { "Needed", "svcctl.svcctl_QueryServiceConfig2W.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9805 { &hf_svcctl_svcctl_QueryServiceConfig2W_offered,
9806 { "Offered", "svcctl.svcctl_QueryServiceConfig2W.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9807 { &hf_svcctl_svcctl_QueryServiceConfigA_needed,
9808 { "Needed", "svcctl.svcctl_QueryServiceConfigA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9809 { &hf_svcctl_svcctl_QueryServiceConfigA_offered,
9810 { "Offered", "svcctl.svcctl_QueryServiceConfigA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9811 { &hf_svcctl_svcctl_QueryServiceConfigA_query,
9812 { "Query", "svcctl.svcctl_QueryServiceConfigA.query", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9813 { &hf_svcctl_svcctl_QueryServiceConfigA_service_handle,
9814 { "Service Handle", "svcctl.svcctl_QueryServiceConfigA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9815 { &hf_svcctl_svcctl_QueryServiceConfigEx_info_level,
9816 { "Info Level", "svcctl.svcctl_QueryServiceConfigEx.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9817 { &hf_svcctl_svcctl_QueryServiceConfigEx_service_handle,
9818 { "Service Handle", "svcctl.svcctl_QueryServiceConfigEx.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9819 { &hf_svcctl_svcctl_QueryServiceConfigW_needed,
9820 { "Needed", "svcctl.svcctl_QueryServiceConfigW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9821 { &hf_svcctl_svcctl_QueryServiceConfigW_offered,
9822 { "Offered", "svcctl.svcctl_QueryServiceConfigW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9823 { &hf_svcctl_svcctl_QueryServiceConfigW_service_config,
9824 { "Service Config", "svcctl.svcctl_QueryServiceConfigW.service_config", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9825 { &hf_svcctl_svcctl_QueryServiceConfigW_service_handle,
9826 { "Service Handle", "svcctl.svcctl_QueryServiceConfigW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9827 { &hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status,
9828 { "Lock Status", "svcctl.svcctl_QueryServiceLockStatusA.lock_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9829 { &hf_svcctl_svcctl_QueryServiceLockStatusA_needed,
9830 { "Needed", "svcctl.svcctl_QueryServiceLockStatusA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9831 { &hf_svcctl_svcctl_QueryServiceLockStatusA_offered,
9832 { "Offered", "svcctl.svcctl_QueryServiceLockStatusA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9833 { &hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle,
9834 { "Scm Handle", "svcctl.svcctl_QueryServiceLockStatusA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9835 { &hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status,
9836 { "Lock Status", "svcctl.svcctl_QueryServiceLockStatusW.lock_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9837 { &hf_svcctl_svcctl_QueryServiceLockStatusW_needed,
9838 { "Needed", "svcctl.svcctl_QueryServiceLockStatusW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9839 { &hf_svcctl_svcctl_QueryServiceLockStatusW_offered,
9840 { "Offered", "svcctl.svcctl_QueryServiceLockStatusW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9841 { &hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle,
9842 { "Scm Handle", "svcctl.svcctl_QueryServiceLockStatusW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9843 { &hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed,
9844 { "Bytes Needed", "svcctl.svcctl_QueryServiceObjectSecurity.bytes_needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9845 { &hf_svcctl_svcctl_QueryServiceObjectSecurity_offered,
9846 { "Offered", "svcctl.svcctl_QueryServiceObjectSecurity.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9847 { &hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor,
9848 { "Security Descriptor", "svcctl.svcctl_QueryServiceObjectSecurity.security_descriptor", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9849 { &hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags,
9850 { "Security Flags", "svcctl.svcctl_QueryServiceObjectSecurity.security_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9851 { &hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle,
9852 { "Service Handle", "svcctl.svcctl_QueryServiceObjectSecurity.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9853 { &hf_svcctl_svcctl_QueryServiceStatusEx_buffer,
9854 { "Buffer", "svcctl.svcctl_QueryServiceStatusEx.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9855 { &hf_svcctl_svcctl_QueryServiceStatusEx_handle,
9856 { "Handle", "svcctl.svcctl_QueryServiceStatusEx.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9857 { &hf_svcctl_svcctl_QueryServiceStatusEx_info_level,
9858 { "Info Level", "svcctl.svcctl_QueryServiceStatusEx.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StatusLevel_vals), 0, NULL, HFILL }},
9859 { &hf_svcctl_svcctl_QueryServiceStatusEx_needed,
9860 { "Needed", "svcctl.svcctl_QueryServiceStatusEx.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9861 { &hf_svcctl_svcctl_QueryServiceStatusEx_offered,
9862 { "Offered", "svcctl.svcctl_QueryServiceStatusEx.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9863 { &hf_svcctl_svcctl_QueryServiceStatus_service_handle,
9864 { "Service Handle", "svcctl.svcctl_QueryServiceStatus.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9865 { &hf_svcctl_svcctl_QueryServiceStatus_service_status,
9866 { "Service Status", "svcctl.svcctl_QueryServiceStatus.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9867 { &hf_svcctl_svcctl_SCSetServiceBitsA_handle,
9868 { "Handle", "svcctl.svcctl_SCSetServiceBitsA.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9869 { &hf_svcctl_svcctl_SCSetServiceBitsA_lpString,
9870 { "LpString", "svcctl.svcctl_SCSetServiceBitsA.lpString", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9871 { &hf_svcctl_svcctl_SCSetServiceBitsA_service_bits,
9872 { "Service Bits", "svcctl.svcctl_SCSetServiceBitsA.service_bits", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9873 { &hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on,
9874 { "Set Bits On", "svcctl.svcctl_SCSetServiceBitsA.set_bits_on", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9875 { &hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately,
9876 { "Update Immediately", "svcctl.svcctl_SCSetServiceBitsA.update_immediately", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9877 { &hf_svcctl_svcctl_SCSetServiceBitsW_lpString,
9878 { "LpString", "svcctl.svcctl_SCSetServiceBitsW.lpString", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
9879 { &hf_svcctl_svcctl_SCSetServiceBitsW_service_bits,
9880 { "Service Bits", "svcctl.svcctl_SCSetServiceBitsW.service_bits", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9881 { &hf_svcctl_svcctl_SCSetServiceBitsW_service_handle,
9882 { "Service Handle", "svcctl.svcctl_SCSetServiceBitsW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9883 { &hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on,
9884 { "Set Bits On", "svcctl.svcctl_SCSetServiceBitsW.set_bits_on", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9885 { &hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately,
9886 { "Update Immediately", "svcctl.svcctl_SCSetServiceBitsW.update_immediately", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9887 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG,
9888 { "SC RIGHT SVC CHANGE CONFIG", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_CHANGE_CONFIG", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG_tfs), ( 0x00000002 ), NULL, HFILL }},
9889 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS,
9890 { "SC RIGHT SVC ENUMERATE DEPENDENTS", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS_tfs), ( 0x00000008 ), NULL, HFILL }},
9891 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE,
9892 { "SC RIGHT SVC INTERROGATE", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_INTERROGATE", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE_tfs), ( 0x00000080 ), NULL, HFILL }},
9893 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE,
9894 { "SC RIGHT SVC PAUSE CONTINUE", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_PAUSE_CONTINUE", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE_tfs), ( 0x00000040 ), NULL, HFILL }},
9895 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG,
9896 { "SC RIGHT SVC QUERY CONFIG", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_QUERY_CONFIG", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG_tfs), ( 0x00000001 ), NULL, HFILL }},
9897 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS,
9898 { "SC RIGHT SVC QUERY STATUS", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_QUERY_STATUS", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS_tfs), ( 0x00000004 ), NULL, HFILL }},
9899 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START,
9900 { "SC RIGHT SVC START", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_START", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_START_tfs), ( 0x00000010 ), NULL, HFILL }},
9901 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP,
9902 { "SC RIGHT SVC STOP", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_STOP", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP_tfs), ( 0x00000020 ), NULL, HFILL }},
9903 { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL,
9904 { "SC RIGHT SVC USER DEFINED CONTROL", "svcctl.svcctl_ServiceAccessMask.SC_RIGHT_SVC_USER_DEFINED_CONTROL", FT_BOOLEAN, 32, TFS(&svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL_tfs), ( 0x00000100 ), NULL, HFILL }},
9905 { &hf_svcctl_svcctl_SetServiceObjectSecurity_offered,
9906 { "Offered", "svcctl.svcctl_SetServiceObjectSecurity.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9907 { &hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor,
9908 { "Security Descriptor", "svcctl.svcctl_SetServiceObjectSecurity.security_descriptor", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
9909 { &hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags,
9910 { "Security Flags", "svcctl.svcctl_SetServiceObjectSecurity.security_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
9911 { &hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle,
9912 { "Service Handle", "svcctl.svcctl_SetServiceObjectSecurity.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9913 { &hf_svcctl_svcctl_SetServiceStatus_service_handle,
9914 { "Service Handle", "svcctl.svcctl_SetServiceStatus.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9915 { &hf_svcctl_svcctl_SetServiceStatus_service_status,
9916 { "Service Status", "svcctl.svcctl_SetServiceStatus.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9917 { &hf_svcctl_svcctl_StartServiceA_Arguments,
9918 { "Arguments", "svcctl.svcctl_StartServiceA.Arguments", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9919 { &hf_svcctl_svcctl_StartServiceA_NumArgs,
9920 { "NumArgs", "svcctl.svcctl_StartServiceA.NumArgs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9921 { &hf_svcctl_svcctl_StartServiceA_service_handle,
9922 { "Service Handle", "svcctl.svcctl_StartServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9923 { &hf_svcctl_svcctl_StartServiceW_Arguments,
9924 { "Arguments", "svcctl.svcctl_StartServiceW.Arguments", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
9925 { &hf_svcctl_svcctl_StartServiceW_NumArgs,
9926 { "NumArgs", "svcctl.svcctl_StartServiceW.NumArgs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }},
9927 { &hf_svcctl_svcctl_StartServiceW_service_handle,
9928 { "Service Handle", "svcctl.svcctl_StartServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9929 { &hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle,
9930 { "Lock Handle", "svcctl.svcctl_UnlockServiceDatabase.lock_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
9931 { &hf_svcctl_werror,
9932 { "Windows Error", "svcctl.werror", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }},
9936 static int *ett[] = {
9937 &ett_svcctl_service,
9938 &ett_svcctl_service_name,
9939 &ett_svcctl_display_name,
9940 &ett_dcerpc_svcctl,
9941 &ett_svcctl_security_secinfo,
9942 &ett_svcctl_SERVICE_LOCK_STATUS,
9943 &ett_svcctl_svcctl_ControlsAccepted,
9944 &ett_svcctl_SERVICE_STATUS,
9945 &ett_svcctl_SERVICE_STATUS_PROCESS,
9946 &ett_svcctl_ENUM_SERVICE_STATUSW,
9947 &ett_svcctl_ENUM_SERVICE_STATUSA,
9948 &ett_svcctl_svcctl_MgrAccessMask,
9949 &ett_svcctl_svcctl_ServiceAccessMask,
9950 &ett_svcctl_QUERY_SERVICE_CONFIG,
9951 &ett_svcctl_svcctl_ArgumentString,
9952 &ett_svcctl_svcctl_ArgumentStringA,
9955 proto_dcerpc_svcctl = proto_register_protocol("Service Control", "SVCCTL", "svcctl");
9956 proto_register_field_array(proto_dcerpc_svcctl, hf, array_length (hf));
9957 proto_register_subtree_array(ett, array_length(ett));
9960 void proto_reg_handoff_dcerpc_svcctl(void)
9962 dcerpc_init_uuid(proto_dcerpc_svcctl, ett_dcerpc_svcctl,
9963 &uuid_dcerpc_svcctl, ver_dcerpc_svcctl,
9964 svcctl_dissectors, hf_svcctl_opnum);