/* DO NOT EDIT This file was automatically generated by Pidl from svcctl.idl and svcctl.cnf. Pidl is a perl based IDL compiler for DCE/RPC idl files. It is maintained by the Samba team, not the Wireshark team. Instructions on how to download and install Pidl can be found at https://wiki.wireshark.org/Pidl */ #include "config.h" #include #include #include #include #include "packet-dcerpc.h" #include "packet-dcerpc-nt.h" #include "packet-windows-common.h" #include "packet-dcerpc-svcctl.h" void proto_register_dcerpc_svcctl(void); void proto_reg_handoff_dcerpc_svcctl(void); /* Ett declarations */ static int ett_svcctl_service; static int ett_svcctl_service_name; static int ett_svcctl_display_name; static int ett_dcerpc_svcctl; static int ett_svcctl_security_secinfo; static int ett_svcctl_SERVICE_LOCK_STATUS; static int ett_svcctl_svcctl_ControlsAccepted; static int ett_svcctl_SERVICE_STATUS; static int ett_svcctl_SERVICE_STATUS_PROCESS; static int ett_svcctl_ENUM_SERVICE_STATUSW; static int ett_svcctl_ENUM_SERVICE_STATUSA; static int ett_svcctl_svcctl_MgrAccessMask; static int ett_svcctl_svcctl_ServiceAccessMask; static int ett_svcctl_QUERY_SERVICE_CONFIG; static int ett_svcctl_svcctl_ArgumentString; static int ett_svcctl_svcctl_ArgumentStringA; /* Header field declarations */ static int hf_svcctl_ENUM_SERVICE_STATUSA_display_name; static int hf_svcctl_ENUM_SERVICE_STATUSA_service_name; static int hf_svcctl_ENUM_SERVICE_STATUSA_status; static int hf_svcctl_ENUM_SERVICE_STATUSW_display_name; static int hf_svcctl_ENUM_SERVICE_STATUSW_service_name; static int hf_svcctl_ENUM_SERVICE_STATUSW_status; static int hf_svcctl_EnumServicesStatusExA_group_name; static int hf_svcctl_EnumServicesStatusExA_info_level; static int hf_svcctl_EnumServicesStatusExA_needed; static int hf_svcctl_EnumServicesStatusExA_offered; static int hf_svcctl_EnumServicesStatusExA_resume_handle; static int hf_svcctl_EnumServicesStatusExA_scm_handle; static int hf_svcctl_EnumServicesStatusExA_service_returned; static int hf_svcctl_EnumServicesStatusExA_service_type; static int hf_svcctl_EnumServicesStatusExA_services; static int hf_svcctl_EnumServicesStatusExA_state; static int hf_svcctl_EnumServicesStatusExW_group_name; static int hf_svcctl_EnumServicesStatusExW_info_level; static int hf_svcctl_EnumServicesStatusExW_needed; static int hf_svcctl_EnumServicesStatusExW_offered; static int hf_svcctl_EnumServicesStatusExW_resume_handle; static int hf_svcctl_EnumServicesStatusExW_scmanager; static int hf_svcctl_EnumServicesStatusExW_service_returned; static int hf_svcctl_EnumServicesStatusExW_service_type; static int hf_svcctl_EnumServicesStatusExW_services; static int hf_svcctl_EnumServicesStatusExW_state; static int hf_svcctl_QUERY_SERVICE_CONFIG_dependencies; static int hf_svcctl_QUERY_SERVICE_CONFIG_displayname; static int hf_svcctl_QUERY_SERVICE_CONFIG_error_control; static int hf_svcctl_QUERY_SERVICE_CONFIG_executablepath; static int hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup; static int hf_svcctl_QUERY_SERVICE_CONFIG_service_type; static int hf_svcctl_QUERY_SERVICE_CONFIG_start_type; static int hf_svcctl_QUERY_SERVICE_CONFIG_startname; static int hf_svcctl_QUERY_SERVICE_CONFIG_tag_id; static int hf_svcctl_SERVICE_LOCK_STATUS_is_locked; static int hf_svcctl_SERVICE_LOCK_STATUS_lock_duration; static int hf_svcctl_SERVICE_LOCK_STATUS_lock_owner; static int hf_svcctl_SERVICE_STATUS_PROCESS_check_point; static int hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted; static int hf_svcctl_SERVICE_STATUS_PROCESS_process_id; static int hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code; static int hf_svcctl_SERVICE_STATUS_PROCESS_service_flags; static int hf_svcctl_SERVICE_STATUS_PROCESS_state; static int hf_svcctl_SERVICE_STATUS_PROCESS_type; static int hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint; static int hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code; static int hf_svcctl_SERVICE_STATUS_check_point; static int hf_svcctl_SERVICE_STATUS_controls_accepted; static int hf_svcctl_SERVICE_STATUS_service_exit_code; static int hf_svcctl_SERVICE_STATUS_state; static int hf_svcctl_SERVICE_STATUS_type; static int hf_svcctl_SERVICE_STATUS_wait_hint; static int hf_svcctl_SERVICE_STATUS_win32_exit_code; static int hf_svcctl_opnum; static int hf_svcctl_service_buffer_size; static int hf_svcctl_service_referent_id; static int hf_svcctl_svcctl_ArgumentStringA_string; static int hf_svcctl_svcctl_ArgumentString_string; static int hf_svcctl_svcctl_ChangeServiceConfig2A_info; static int hf_svcctl_svcctl_ChangeServiceConfig2A_info_level; static int hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle; static int hf_svcctl_svcctl_ChangeServiceConfig2W_handle; static int hf_svcctl_svcctl_ChangeServiceConfig2W_info; static int hf_svcctl_svcctl_ChangeServiceConfig2W_info_level; static int hf_svcctl_svcctl_ChangeServiceConfigA_binary_path; static int hf_svcctl_svcctl_ChangeServiceConfigA_dependencies; static int hf_svcctl_svcctl_ChangeServiceConfigA_display_name; static int hf_svcctl_svcctl_ChangeServiceConfigA_error_control; static int hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group; static int hf_svcctl_svcctl_ChangeServiceConfigA_password; static int hf_svcctl_svcctl_ChangeServiceConfigA_service_handle; static int hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name; static int hf_svcctl_svcctl_ChangeServiceConfigA_service_type; static int hf_svcctl_svcctl_ChangeServiceConfigA_start_type; static int hf_svcctl_svcctl_ChangeServiceConfigA_tag_id; static int hf_svcctl_svcctl_ChangeServiceConfigW_binary_path; static int hf_svcctl_svcctl_ChangeServiceConfigW_dependencies; static int hf_svcctl_svcctl_ChangeServiceConfigW_display_name; static int hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize; static int hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize; static int hf_svcctl_svcctl_ChangeServiceConfigW_error_control; static int hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group; static int hf_svcctl_svcctl_ChangeServiceConfigW_password; static int hf_svcctl_svcctl_ChangeServiceConfigW_service_handle; static int hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name; static int hf_svcctl_svcctl_ChangeServiceConfigW_service_type; static int hf_svcctl_svcctl_ChangeServiceConfigW_start_type; static int hf_svcctl_svcctl_ChangeServiceConfigW_tag_id; static int hf_svcctl_svcctl_CloseServiceHandle_object_handle; static int hf_svcctl_svcctl_ControlService_control; static int hf_svcctl_svcctl_ControlService_service_handle; static int hf_svcctl_svcctl_ControlService_service_status; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT; static int hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT; static int hf_svcctl_svcctl_CreateServiceA_DisplayName; static int hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey; static int hf_svcctl_svcctl_CreateServiceA_ServiceName; static int hf_svcctl_svcctl_CreateServiceA_binary_path; static int hf_svcctl_svcctl_CreateServiceA_dependencies; static int hf_svcctl_svcctl_CreateServiceA_dependencies_size; static int hf_svcctl_svcctl_CreateServiceA_desired_access; static int hf_svcctl_svcctl_CreateServiceA_error_control; static int hf_svcctl_svcctl_CreateServiceA_password; static int hf_svcctl_svcctl_CreateServiceA_password_size; static int hf_svcctl_svcctl_CreateServiceA_scm_handle; static int hf_svcctl_svcctl_CreateServiceA_service_handle; static int hf_svcctl_svcctl_CreateServiceA_service_start_name; static int hf_svcctl_svcctl_CreateServiceA_service_type; static int hf_svcctl_svcctl_CreateServiceA_start_type; static int hf_svcctl_svcctl_CreateServiceA_tag_id; static int hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName; static int hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey; static int hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName; static int hf_svcctl_svcctl_CreateServiceWOW64A_binary_path; static int hf_svcctl_svcctl_CreateServiceWOW64A_dependencies; static int hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size; static int hf_svcctl_svcctl_CreateServiceWOW64A_desired_access; static int hf_svcctl_svcctl_CreateServiceWOW64A_error_control; static int hf_svcctl_svcctl_CreateServiceWOW64A_handle; static int hf_svcctl_svcctl_CreateServiceWOW64A_password; static int hf_svcctl_svcctl_CreateServiceWOW64A_password_size; static int hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle; static int hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name; static int hf_svcctl_svcctl_CreateServiceWOW64A_service_type; static int hf_svcctl_svcctl_CreateServiceWOW64A_start_type; static int hf_svcctl_svcctl_CreateServiceWOW64A_tag_id; static int hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName; static int hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey; static int hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName; static int hf_svcctl_svcctl_CreateServiceWOW64W_binary_path; static int hf_svcctl_svcctl_CreateServiceWOW64W_dependencies; static int hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size; static int hf_svcctl_svcctl_CreateServiceWOW64W_desired_access; static int hf_svcctl_svcctl_CreateServiceWOW64W_error_control; static int hf_svcctl_svcctl_CreateServiceWOW64W_handle; static int hf_svcctl_svcctl_CreateServiceWOW64W_password; static int hf_svcctl_svcctl_CreateServiceWOW64W_password_size; static int hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle; static int hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name; static int hf_svcctl_svcctl_CreateServiceWOW64W_service_type; static int hf_svcctl_svcctl_CreateServiceWOW64W_start_type; static int hf_svcctl_svcctl_CreateServiceWOW64W_tag_id; static int hf_svcctl_svcctl_CreateServiceW_DisplayName; static int hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup; static int hf_svcctl_svcctl_CreateServiceW_ServiceName; static int hf_svcctl_svcctl_CreateServiceW_binary_path; static int hf_svcctl_svcctl_CreateServiceW_dependencies; static int hf_svcctl_svcctl_CreateServiceW_dependencies_size; static int hf_svcctl_svcctl_CreateServiceW_desired_access; static int hf_svcctl_svcctl_CreateServiceW_error_control; static int hf_svcctl_svcctl_CreateServiceW_password; static int hf_svcctl_svcctl_CreateServiceW_password_size; static int hf_svcctl_svcctl_CreateServiceW_scm_handle; static int hf_svcctl_svcctl_CreateServiceW_service_handle; static int hf_svcctl_svcctl_CreateServiceW_service_start_name; static int hf_svcctl_svcctl_CreateServiceW_service_type; static int hf_svcctl_svcctl_CreateServiceW_start_type; static int hf_svcctl_svcctl_CreateServiceW_tag_id; static int hf_svcctl_svcctl_CreateWowService_DisplayName; static int hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey; static int hf_svcctl_svcctl_CreateWowService_ServiceName; static int hf_svcctl_svcctl_CreateWowService_binary_path; static int hf_svcctl_svcctl_CreateWowService_dependencies; static int hf_svcctl_svcctl_CreateWowService_dependencies_size; static int hf_svcctl_svcctl_CreateWowService_desired_access; static int hf_svcctl_svcctl_CreateWowService_error_control; static int hf_svcctl_svcctl_CreateWowService_handle; static int hf_svcctl_svcctl_CreateWowService_password; static int hf_svcctl_svcctl_CreateWowService_password_size; static int hf_svcctl_svcctl_CreateWowService_scm_handle; static int hf_svcctl_svcctl_CreateWowService_service_start_name; static int hf_svcctl_svcctl_CreateWowService_service_type; static int hf_svcctl_svcctl_CreateWowService_service_wow_type; static int hf_svcctl_svcctl_CreateWowService_start_type; static int hf_svcctl_svcctl_CreateWowService_tag_id; static int hf_svcctl_svcctl_DeleteService_service_handle; static int hf_svcctl_svcctl_EnumDependentServicesA_needed; static int hf_svcctl_svcctl_EnumDependentServicesA_offered; static int hf_svcctl_svcctl_EnumDependentServicesA_service_handle; static int hf_svcctl_svcctl_EnumDependentServicesA_service_status; static int hf_svcctl_svcctl_EnumDependentServicesA_services_returned; static int hf_svcctl_svcctl_EnumDependentServicesA_state; static int hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded; static int hf_svcctl_svcctl_EnumDependentServicesW_offered; static int hf_svcctl_svcctl_EnumDependentServicesW_service_handle; static int hf_svcctl_svcctl_EnumDependentServicesW_service_state; static int hf_svcctl_svcctl_EnumDependentServicesW_service_status; static int hf_svcctl_svcctl_EnumDependentServicesW_services_returned; static int hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex; static int hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize; static int hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer; static int hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned; static int hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded; static int hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName; static int hf_svcctl_svcctl_EnumServiceGroupW_scm_handle; static int hf_svcctl_svcctl_EnumServiceGroupW_service_state; static int hf_svcctl_svcctl_EnumServiceGroupW_service_type; static int hf_svcctl_svcctl_EnumServicesStatusA_needed; static int hf_svcctl_svcctl_EnumServicesStatusA_offered; static int hf_svcctl_svcctl_EnumServicesStatusA_resume_handle; static int hf_svcctl_svcctl_EnumServicesStatusA_scm_handle; static int hf_svcctl_svcctl_EnumServicesStatusA_service; static int hf_svcctl_svcctl_EnumServicesStatusA_service_state; static int hf_svcctl_svcctl_EnumServicesStatusA_service_type; static int hf_svcctl_svcctl_EnumServicesStatusA_services_returned; static int hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed; static int hf_svcctl_svcctl_EnumServicesStatusW_offered; static int hf_svcctl_svcctl_EnumServicesStatusW_resume_index; static int hf_svcctl_svcctl_EnumServicesStatusW_scm_handle; static int hf_svcctl_svcctl_EnumServicesStatusW_service_state; static int hf_svcctl_svcctl_EnumServicesStatusW_service_type; static int hf_svcctl_svcctl_EnumServicesStatusW_services; static int hf_svcctl_svcctl_EnumServicesStatusW_services_returned; static int hf_svcctl_svcctl_GetCurrentGroupeStateW_handle; static int hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup; static int hf_svcctl_svcctl_GetCurrentGroupeStateW_state; static int hf_svcctl_svcctl_GetServiceDisplayNameA_display_name; static int hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length; static int hf_svcctl_svcctl_GetServiceDisplayNameA_handle; static int hf_svcctl_svcctl_GetServiceDisplayNameA_service_name; static int hf_svcctl_svcctl_GetServiceDisplayNameW_display_name; static int hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length; static int hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle; static int hf_svcctl_svcctl_GetServiceDisplayNameW_service_name; static int hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length; static int hf_svcctl_svcctl_GetServiceKeyNameA_key_name; static int hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle; static int hf_svcctl_svcctl_GetServiceKeyNameA_service_name; static int hf_svcctl_svcctl_GetServiceKeyNameW_display_name; static int hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle; static int hf_svcctl_svcctl_GetServiceKeyNameW_service_name; static int hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length; static int hf_svcctl_svcctl_LockServiceDatabase_lock_handle; static int hf_svcctl_svcctl_LockServiceDatabase_scm_handle; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG; static int hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS; static int hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable; static int hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name; static int hf_svcctl_svcctl_OpenSCManager2_database_name; static int hf_svcctl_svcctl_OpenSCManager2_desired_access; static int hf_svcctl_svcctl_OpenSCManager2_handle; static int hf_svcctl_svcctl_OpenSCManagerA_DatabaseName; static int hf_svcctl_svcctl_OpenSCManagerA_MachineName; static int hf_svcctl_svcctl_OpenSCManagerA_access_mask; static int hf_svcctl_svcctl_OpenSCManagerA_scm_handle; static int hf_svcctl_svcctl_OpenSCManagerW_DatabaseName; static int hf_svcctl_svcctl_OpenSCManagerW_MachineName; static int hf_svcctl_svcctl_OpenSCManagerW_access_mask; static int hf_svcctl_svcctl_OpenSCManagerW_scm_handle; static int hf_svcctl_svcctl_OpenServiceA_ServiceName; static int hf_svcctl_svcctl_OpenServiceA_access_mask; static int hf_svcctl_svcctl_OpenServiceA_scm_handle; static int hf_svcctl_svcctl_OpenServiceA_service_handle; static int hf_svcctl_svcctl_OpenServiceW_ServiceName; static int hf_svcctl_svcctl_OpenServiceW_access_mask; static int hf_svcctl_svcctl_OpenServiceW_scm_handle; static int hf_svcctl_svcctl_OpenServiceW_service_handle; static int hf_svcctl_svcctl_QueryServiceConfig2A_buffer; static int hf_svcctl_svcctl_QueryServiceConfig2A_handle; static int hf_svcctl_svcctl_QueryServiceConfig2A_info_level; static int hf_svcctl_svcctl_QueryServiceConfig2A_needed; static int hf_svcctl_svcctl_QueryServiceConfig2A_offered; static int hf_svcctl_svcctl_QueryServiceConfig2W_buffer; static int hf_svcctl_svcctl_QueryServiceConfig2W_handle; static int hf_svcctl_svcctl_QueryServiceConfig2W_info_level; static int hf_svcctl_svcctl_QueryServiceConfig2W_needed; static int hf_svcctl_svcctl_QueryServiceConfig2W_offered; static int hf_svcctl_svcctl_QueryServiceConfigA_needed; static int hf_svcctl_svcctl_QueryServiceConfigA_offered; static int hf_svcctl_svcctl_QueryServiceConfigA_query; static int hf_svcctl_svcctl_QueryServiceConfigA_service_handle; static int hf_svcctl_svcctl_QueryServiceConfigEx_info_level; static int hf_svcctl_svcctl_QueryServiceConfigEx_service_handle; static int hf_svcctl_svcctl_QueryServiceConfigW_needed; static int hf_svcctl_svcctl_QueryServiceConfigW_offered; static int hf_svcctl_svcctl_QueryServiceConfigW_service_config; static int hf_svcctl_svcctl_QueryServiceConfigW_service_handle; static int hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status; static int hf_svcctl_svcctl_QueryServiceLockStatusA_needed; static int hf_svcctl_svcctl_QueryServiceLockStatusA_offered; static int hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle; static int hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status; static int hf_svcctl_svcctl_QueryServiceLockStatusW_needed; static int hf_svcctl_svcctl_QueryServiceLockStatusW_offered; static int hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle; static int hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed; static int hf_svcctl_svcctl_QueryServiceObjectSecurity_offered; static int hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor; static int hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags; static int hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle; static int hf_svcctl_svcctl_QueryServiceStatusEx_buffer; static int hf_svcctl_svcctl_QueryServiceStatusEx_handle; static int hf_svcctl_svcctl_QueryServiceStatusEx_info_level; static int hf_svcctl_svcctl_QueryServiceStatusEx_needed; static int hf_svcctl_svcctl_QueryServiceStatusEx_offered; static int hf_svcctl_svcctl_QueryServiceStatus_service_handle; static int hf_svcctl_svcctl_QueryServiceStatus_service_status; static int hf_svcctl_svcctl_SCSetServiceBitsA_handle; static int hf_svcctl_svcctl_SCSetServiceBitsA_lpString; static int hf_svcctl_svcctl_SCSetServiceBitsA_service_bits; static int hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on; static int hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately; static int hf_svcctl_svcctl_SCSetServiceBitsW_lpString; static int hf_svcctl_svcctl_SCSetServiceBitsW_service_bits; static int hf_svcctl_svcctl_SCSetServiceBitsW_service_handle; static int hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on; static int hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP; static int hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL; static int hf_svcctl_svcctl_SetServiceObjectSecurity_offered; static int hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor; static int hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags; static int hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle; static int hf_svcctl_svcctl_SetServiceStatus_service_handle; static int hf_svcctl_svcctl_SetServiceStatus_service_status; static int hf_svcctl_svcctl_StartServiceA_Arguments; static int hf_svcctl_svcctl_StartServiceA_NumArgs; static int hf_svcctl_svcctl_StartServiceA_service_handle; static int hf_svcctl_svcctl_StartServiceW_Arguments; static int hf_svcctl_svcctl_StartServiceW_NumArgs; static int hf_svcctl_svcctl_StartServiceW_service_handle; static int hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle; static int hf_svcctl_werror; static int proto_dcerpc_svcctl; /* Version information */ static e_guid_t uuid_dcerpc_svcctl = { 0x367abb81, 0x9844, 0x35f1, { 0xad, 0x32, 0x98, 0xf0, 0x38, 0x00, 0x10, 0x03 } }; static uint16_t ver_dcerpc_svcctl = 2; 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_); 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_); 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_); 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_); const value_string svcctl_svcctl_ServiceStatus_vals[] = { { SVCCTL_STOPPED, "SVCCTL_STOPPED" }, { SVCCTL_START_PENDING, "SVCCTL_START_PENDING" }, { SVCCTL_STOP_PENDING, "SVCCTL_STOP_PENDING" }, { SVCCTL_RUNNING, "SVCCTL_RUNNING" }, { SVCCTL_CONTINUE_PENDING, "SVCCTL_CONTINUE_PENDING" }, { SVCCTL_PAUSE_PENDING, "SVCCTL_PAUSE_PENDING" }, { SVCCTL_PAUSED, "SVCCTL_PAUSED" }, { 0, NULL } }; const value_string svcctl_svcctl_ServiceType_vals[] = { { SERVICE_TYPE_KERNEL_DRIVER, "SERVICE_TYPE_KERNEL_DRIVER" }, { SERVICE_TYPE_FS_DRIVER, "SERVICE_TYPE_FS_DRIVER" }, { SERVICE_TYPE_ADAPTER, "SERVICE_TYPE_ADAPTER" }, { SERVICE_TYPE_RECOGNIZER_DRIVER, "SERVICE_TYPE_RECOGNIZER_DRIVER" }, { SERVICE_TYPE_DRIVER, "SERVICE_TYPE_DRIVER" }, { SERVICE_TYPE_WIN32_OWN_PROCESS, "SERVICE_TYPE_WIN32_OWN_PROCESS" }, { SERVICE_TYPE_WIN32_SHARE_PROCESS, "SERVICE_TYPE_WIN32_SHARE_PROCESS" }, { SERVICE_TYPE_USER_OWN_PROCESS, "SERVICE_TYPE_USER_OWN_PROCESS" }, { SERVICE_TYPE_USER_SHARE_PROCESS, "SERVICE_TYPE_USER_SHARE_PROCESS" }, { SERVICE_TYPE_WIN32, "SERVICE_TYPE_WIN32" }, { SERVICE_TYPE_INTERACTIVE_PROCESS, "SERVICE_TYPE_INTERACTIVE_PROCESS" }, { 0, NULL } }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP_tfs = { "SERVICE_ACCEPT_STOP is SET", "SERVICE_ACCEPT_STOP is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE_tfs = { "SERVICE_ACCEPT_PAUSE_CONTINUE is SET", "SERVICE_ACCEPT_PAUSE_CONTINUE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN_tfs = { "SERVICE_ACCEPT_SHUTDOWN is SET", "SERVICE_ACCEPT_SHUTDOWN is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE_tfs = { "SERVICE_ACCEPT_PARAMCHANGE is SET", "SERVICE_ACCEPT_PARAMCHANGE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE_tfs = { "SERVICE_ACCEPT_NETBINDCHANGE is SET", "SERVICE_ACCEPT_NETBINDCHANGE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE_tfs = { "SERVICE_ACCEPT_HARDWAREPROFILECHANGE is SET", "SERVICE_ACCEPT_HARDWAREPROFILECHANGE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT_tfs = { "SERVICE_ACCEPT_POWEREVENT is SET", "SERVICE_ACCEPT_POWEREVENT is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE_tfs = { "SERVICE_ACCEPT_SESSIONCHANGE is SET", "SERVICE_ACCEPT_SESSIONCHANGE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN_tfs = { "SERVICE_ACCEPT_PRESHUTDOWN is SET", "SERVICE_ACCEPT_PRESHUTDOWN is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE_tfs = { "SERVICE_ACCEPT_TIMECHANGE is SET", "SERVICE_ACCEPT_TIMECHANGE is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT_tfs = { "SERVICE_ACCEPT_TRIGGEREVENT is SET", "SERVICE_ACCEPT_TRIGGEREVENT is NOT SET", }; static const true_false_string svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT_tfs = { "SERVICE_ACCEPT_USERMODEREBOOT is SET", "SERVICE_ACCEPT_USERMODEREBOOT is NOT SET", }; 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_); 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_); 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_); 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_); 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_); 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_); 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_); const value_string svcctl_svcctl_ServiceFlags_vals[] = { { SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING, "SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING" }, { SERVICE_RUNS_IN_SYSTEM_PROCESS, "SERVICE_RUNS_IN_SYSTEM_PROCESS" }, { 0, NULL } }; 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); const value_string svcctl_SERVICE_CONTROL_vals[] = { { SVCCTL_CONTROL_STOP, "SVCCTL_CONTROL_STOP" }, { SVCCTL_CONTROL_PAUSE, "SVCCTL_CONTROL_PAUSE" }, { SVCCTL_CONTROL_CONTINUE, "SVCCTL_CONTROL_CONTINUE" }, { SVCCTL_CONTROL_INTERROGATE, "SVCCTL_CONTROL_INTERROGATE" }, { SVCCTL_CONTROL_SHUTDOWN, "SVCCTL_CONTROL_SHUTDOWN" }, { SERVICE_CONTROL_PARAMCHANGE, "SERVICE_CONTROL_PARAMCHANGE" }, { SERVICE_CONTROL_NETBINDADD, "SERVICE_CONTROL_NETBINDADD" }, { SERVICE_CONTROL_NETBINDREMOVE, "SERVICE_CONTROL_NETBINDREMOVE" }, { SERVICE_CONTROL_NETBINDENABLE, "SERVICE_CONTROL_NETBINDENABLE" }, { SERVICE_CONTROL_NETBINDDISABLE, "SERVICE_CONTROL_NETBINDDISABLE" }, { 0, NULL } }; const value_string svcctl_svcctl_ErrorControl_vals[] = { { SVCCTL_SVC_ERROR_IGNORE, "SVCCTL_SVC_ERROR_IGNORE" }, { SVCCTL_SVC_ERROR_NORMAL, "SVCCTL_SVC_ERROR_NORMAL" }, { SVCCTL_SVC_ERROR_CRITICAL, "SVCCTL_SVC_ERROR_CRITICAL" }, { SVCCTL_SVC_ERROR_SEVERE, "SVCCTL_SVC_ERROR_SEVERE" }, { 0, NULL } }; const value_string svcctl_svcctl_StartType_vals[] = { { SVCCTL_BOOT_START, "SVCCTL_BOOT_START" }, { SVCCTL_SYSTEM_START, "SVCCTL_SYSTEM_START" }, { SVCCTL_AUTO_START, "SVCCTL_AUTO_START" }, { SVCCTL_DEMAND_START, "SVCCTL_DEMAND_START" }, { SVCCTL_DISABLED, "SVCCTL_DISABLED" }, { 0, NULL } }; const value_string svcctl_svcctl_ServiceState_vals[] = { { SERVICE_STATE_ACTIVE, "SERVICE_STATE_ACTIVE" }, { SERVICE_STATE_INACTIVE, "SERVICE_STATE_INACTIVE" }, { SERVICE_STATE_ALL, "SERVICE_STATE_ALL" }, { 0, NULL } }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT_tfs = { "SC_RIGHT_MGR_CONNECT is SET", "SC_RIGHT_MGR_CONNECT is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE_tfs = { "SC_RIGHT_MGR_CREATE_SERVICE is SET", "SC_RIGHT_MGR_CREATE_SERVICE is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE_tfs = { "SC_RIGHT_MGR_ENUMERATE_SERVICE is SET", "SC_RIGHT_MGR_ENUMERATE_SERVICE is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK_tfs = { "SC_RIGHT_MGR_LOCK is SET", "SC_RIGHT_MGR_LOCK is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS_tfs = { "SC_RIGHT_MGR_QUERY_LOCK_STATUS is SET", "SC_RIGHT_MGR_QUERY_LOCK_STATUS is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG_tfs = { "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG is SET", "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG is NOT SET", }; static const true_false_string svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS_tfs = { "SC_RIGHT_MGR_ALL_ACCESS is SET", "SC_RIGHT_MGR_ALL_ACCESS is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG_tfs = { "SC_RIGHT_SVC_QUERY_CONFIG is SET", "SC_RIGHT_SVC_QUERY_CONFIG is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG_tfs = { "SC_RIGHT_SVC_CHANGE_CONFIG is SET", "SC_RIGHT_SVC_CHANGE_CONFIG is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS_tfs = { "SC_RIGHT_SVC_QUERY_STATUS is SET", "SC_RIGHT_SVC_QUERY_STATUS is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS_tfs = { "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS is SET", "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_START_tfs = { "SC_RIGHT_SVC_START is SET", "SC_RIGHT_SVC_START is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP_tfs = { "SC_RIGHT_SVC_STOP is SET", "SC_RIGHT_SVC_STOP is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE_tfs = { "SC_RIGHT_SVC_PAUSE_CONTINUE is SET", "SC_RIGHT_SVC_PAUSE_CONTINUE is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE_tfs = { "SC_RIGHT_SVC_INTERROGATE is SET", "SC_RIGHT_SVC_INTERROGATE is NOT SET", }; static const true_false_string svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL_tfs = { "SC_RIGHT_SVC_USER_DEFINED_CONTROL is SET", "SC_RIGHT_SVC_USER_DEFINED_CONTROL is NOT SET", }; 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); const value_string svcctl_svcctl_ConfigLevel_vals[] = { { SERVICE_CONFIG_DESCRIPTION, "SERVICE_CONFIG_DESCRIPTION" }, { SERVICE_CONFIG_FAILURE_ACTIONS, "SERVICE_CONFIG_FAILURE_ACTIONS" }, { 0, NULL } }; const value_string svcctl_svcctl_StatusLevel_vals[] = { { SVC_STATUS_PROCESS_INFO, "SVC_STATUS_PROCESS_INFO" }, { 0, NULL } }; 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); 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_); /* ENUM_SERVICE_STATUSW Caveats https://github.com/fortra/impacket/blob/4888172ce638910104da4bda2c3301c24e17564c/impacket/dcerpc/v5/scmr.py#L1274 */ static int 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); static int 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) { proto_item *item = NULL; proto_tree *tree = NULL; proto_tree *tr = NULL; int old_offset; uint32_t _referent_id = 0; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSW); } // Service Name tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_service_name, NULL, "Pointer to Service Name"); offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id); dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_service_name , 0); // Display Name tr = proto_tree_add_subtree(tree, tvb, offset, 4, ett_svcctl_display_name, NULL, "Pointer to Display Name"); offset = PIDL_dissect_uint32_val(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_referent_id, 0, &_referent_id); dissect_null_term_wstring(tvb, starting_offset + _referent_id, pinfo, tr, drep, hf_svcctl_ENUM_SERVICE_STATUSW_display_name , 0); // Status offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* REnumServicesStatusW https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmr/22b4ff3d-29c6-481f-b598-8ce66a46944a */ static int svcctl_dissect_EnumServicesStatusW_response(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dcerpc_info* di, uint8_t *drep) { uint32_t status; uint32_t services_returned= 0; proto_item *item; proto_tree *tr = NULL; int services_buffer_offset; int payload_starting_offset = offset; uint64_t buffer_size = 0; ALIGN_TO_5_BYTES di->dcerpc_procedure_name="EnumServicesStatusW"; tr = proto_tree_add_subtree(tree, tvb, offset, 0, ett_svcctl_service, &item, "Pointer to Services Status"); // Services Buffer Size offset = dissect_ndr_uint3264(tvb, offset, pinfo, tr, di, drep, hf_svcctl_service_buffer_size, &buffer_size); services_buffer_offset = offset; offset += (int)buffer_size; proto_item_set_len(item, offset-payload_starting_offset); ALIGN_TO_4_BYTES // Bytes Needed offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed, 0); // Services Returned offset = PIDL_dissect_uint32_val( tvb, offset, pinfo, tree, di, drep , hf_svcctl_svcctl_EnumServicesStatusW_services_returned , 0, &services_returned); // Services if (services_returned > 0){ payload_starting_offset = services_buffer_offset; for(unsigned idx = 0; idx < services_returned ; ++idx){ services_buffer_offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSW_ptr( tvb, services_buffer_offset , pinfo, tr, di, drep , hf_svcctl_svcctl_EnumDependentServicesW_service_status , payload_starting_offset); } dissect_deferred_pointers(pinfo, tvb, services_buffer_offset, di, drep); } // Resume Index offset = svcctl_dissect_element_EnumServicesStatusW_resume_index(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); // Return status offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } /* IDL: bitmap { */ /* IDL: } */ int 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_) { uint32_t flags; ALIGN_TO_4_BYTES; proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, DREP_ENC_INTEGER(drep)); offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); return offset; } /* IDL: struct { */ /* IDL: uint32 is_locked; */ /* IDL: [charset(UTF16)] [unique(1)] uint16 *lock_owner; */ /* IDL: uint32 lock_duration; */ /* IDL: } */ 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_LOCK_STATUS_is_locked, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_SERVICE_LOCK_STATUS_lock_owner, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_LOCK_STATUS_lock_duration, 0); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_LOCK_STATUS); } offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_is_locked(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_owner(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_LOCK_STATUS_lock_duration(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: enum { */ /* IDL: SVCCTL_STOPPED=0x00000001, */ /* IDL: SVCCTL_START_PENDING=0x00000002, */ /* IDL: SVCCTL_STOP_PENDING=0x00000003, */ /* IDL: SVCCTL_RUNNING=0x00000004, */ /* IDL: SVCCTL_CONTINUE_PENDING=0x00000005, */ /* IDL: SVCCTL_PAUSE_PENDING=0x00000006, */ /* IDL: SVCCTL_PAUSED=0x00000007, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: enum { */ /* IDL: SERVICE_TYPE_KERNEL_DRIVER=0x00000001, */ /* IDL: SERVICE_TYPE_FS_DRIVER=0x00000002, */ /* IDL: SERVICE_TYPE_ADAPTER=0x00000004, */ /* IDL: SERVICE_TYPE_RECOGNIZER_DRIVER=0x00000008, */ /* IDL: SERVICE_TYPE_DRIVER=SERVICE_TYPE_KERNEL_DRIVER|SERVICE_TYPE_FS_DRIVER|SERVICE_TYPE_RECOGNIZER_DRIVER, */ /* IDL: SERVICE_TYPE_WIN32_OWN_PROCESS=0x00000010, */ /* IDL: SERVICE_TYPE_WIN32_SHARE_PROCESS=0x00000020, */ /* IDL: SERVICE_TYPE_USER_OWN_PROCESS=0x00000050, */ /* IDL: SERVICE_TYPE_USER_SHARE_PROCESS=0x00000060, */ /* IDL: SERVICE_TYPE_WIN32=SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS, */ /* IDL: SERVICE_TYPE_INTERACTIVE_PROCESS=0x00000100, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: bitmap { */ /* IDL: SERVICE_ACCEPT_STOP = 0x00000001 , */ /* IDL: SERVICE_ACCEPT_PAUSE_CONTINUE = 0x00000002 , */ /* IDL: SERVICE_ACCEPT_SHUTDOWN = 0x00000004 , */ /* IDL: SERVICE_ACCEPT_PARAMCHANGE = 0x00000008 , */ /* IDL: SERVICE_ACCEPT_NETBINDCHANGE = 0x00000010 , */ /* IDL: SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 0x00000020 , */ /* IDL: SERVICE_ACCEPT_POWEREVENT = 0x00000040 , */ /* IDL: SERVICE_ACCEPT_SESSIONCHANGE = 0x00000080 , */ /* IDL: SERVICE_ACCEPT_PRESHUTDOWN = 0x00000100 , */ /* IDL: SERVICE_ACCEPT_TIMECHANGE = 0x00000200 , */ /* IDL: SERVICE_ACCEPT_TRIGGEREVENT = 0x00000400 , */ /* IDL: SERVICE_ACCEPT_USERMODEREBOOT = 0x00000800 , */ /* IDL: } */ int 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_) { proto_item *item; static int * const svcctl_svcctl_ControlsAccepted_fields[] = { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT, &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT, NULL }; uint32_t flags; ALIGN_TO_4_BYTES; item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, ett_svcctl_svcctl_ControlsAccepted, svcctl_svcctl_ControlsAccepted_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE); offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); if (!flags) proto_item_append_text(item, ": (No values set)"); if (flags & (~0x00000fff)) { flags &= (~0x00000fff); proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } return offset; } /* IDL: struct { */ /* IDL: svcctl_ServiceType type; */ /* IDL: svcctl_ServiceStatus state; */ /* IDL: svcctl_ControlsAccepted controls_accepted; */ /* IDL: WERROR win32_exit_code; */ /* IDL: uint32 service_exit_code; */ /* IDL: uint32 check_point; */ /* IDL: uint32 wait_hint; */ /* IDL: } */ 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceStatus(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_state, 0); return offset; } 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_) { offset = svcctl_dissect_bitmap_ControlsAccepted(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_controls_accepted, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_win32_exit_code, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_service_exit_code, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_check_point, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_wait_hint, 0); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_STATUS); } offset = svcctl_dissect_element_SERVICE_STATUS_type(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_state(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_controls_accepted(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_win32_exit_code(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_service_exit_code(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_check_point(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_wait_hint(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_4_BYTES; } return offset; } /* IDL: enum { */ /* IDL: SERVICE_RUNS_IN_NONSYSTEM_ORNOTRUNNING=0x00000000, */ /* IDL: SERVICE_RUNS_IN_SYSTEM_PROCESS=0x00000001, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: struct { */ /* IDL: svcctl_ServiceType type; */ /* IDL: svcctl_ServiceStatus state; */ /* IDL: svcctl_ControlsAccepted controls_accepted; */ /* IDL: WERROR win32_exit_code; */ /* IDL: uint32 service_exit_code; */ /* IDL: uint32 check_point; */ /* IDL: uint32 wait_hint; */ /* IDL: uint32 process_id; */ /* IDL: svcctl_ServiceFlags service_flags; */ /* IDL: } */ 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceStatus(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_state, 0); return offset; } 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_) { offset = svcctl_dissect_bitmap_ControlsAccepted(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_check_point, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_process_id, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceFlags(tvb, offset, pinfo, tree, di, drep, hf_svcctl_SERVICE_STATUS_PROCESS_service_flags, 0); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_4_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_SERVICE_STATUS_PROCESS); } offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_type(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_state(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_controls_accepted(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_win32_exit_code(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_exit_code(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_check_point(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_wait_hint(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_process_id(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_SERVICE_STATUS_PROCESS_service_flags(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_4_BYTES; } return offset; } /* IDL: struct { */ /* IDL: [flag(LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *service_name; */ /* IDL: [flag(LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *display_name; */ /* IDL: SERVICE_STATUS status; */ /* IDL: } */ 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_) { 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); return offset; } 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_) { offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSW_service_name , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_wstring(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSW_display_name , 0); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_ENUM_SERVICE_STATUSW_status,0); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSW); } offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_service_name(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_display_name(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_ENUM_SERVICE_STATUSW_status(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: struct { */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *service_name; */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [unique(1)] string *display_name; */ /* IDL: SERVICE_STATUS status; */ /* IDL: } */ 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSA_service_name , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_ENUM_SERVICE_STATUSA_display_name , 0); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_ENUM_SERVICE_STATUSA_status,0); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_ENUM_SERVICE_STATUSA); } offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_service_name(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_display_name(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_ENUM_SERVICE_STATUSA_status(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: enum { */ /* IDL: SVCCTL_CONTROL_STOP=0x00000001, */ /* IDL: SVCCTL_CONTROL_PAUSE=0x00000002, */ /* IDL: SVCCTL_CONTROL_CONTINUE=0x00000003, */ /* IDL: SVCCTL_CONTROL_INTERROGATE=0x00000004, */ /* IDL: SVCCTL_CONTROL_SHUTDOWN=0x00000005, */ /* IDL: SERVICE_CONTROL_PARAMCHANGE=0x00000006, */ /* IDL: SERVICE_CONTROL_NETBINDADD=0x00000007, */ /* IDL: SERVICE_CONTROL_NETBINDREMOVE=0x00000008, */ /* IDL: SERVICE_CONTROL_NETBINDENABLE=0x00000009, */ /* IDL: SERVICE_CONTROL_NETBINDDISABLE=0x0000000A, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: enum { */ /* IDL: SVCCTL_SVC_ERROR_IGNORE=0x00000000, */ /* IDL: SVCCTL_SVC_ERROR_NORMAL=0x00000001, */ /* IDL: SVCCTL_SVC_ERROR_CRITICAL=0x00000002, */ /* IDL: SVCCTL_SVC_ERROR_SEVERE=0x00000003, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: enum { */ /* IDL: SVCCTL_BOOT_START=0x00000000, */ /* IDL: SVCCTL_SYSTEM_START=0x00000001, */ /* IDL: SVCCTL_AUTO_START=0x00000002, */ /* IDL: SVCCTL_DEMAND_START=0x00000003, */ /* IDL: SVCCTL_DISABLED=0x00000004, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: enum { */ /* IDL: SERVICE_STATE_ACTIVE=0x00000001, */ /* IDL: SERVICE_STATE_INACTIVE=0x00000002, */ /* IDL: SERVICE_STATE_ALL=(SERVICE_STATE_ACTIVE|SERVICE_STATE_INACTIVE), */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: bitmap { */ /* IDL: SC_RIGHT_MGR_CONNECT = 0x00000001 , */ /* IDL: SC_RIGHT_MGR_CREATE_SERVICE = 0x00000002 , */ /* IDL: SC_RIGHT_MGR_ENUMERATE_SERVICE = 0x00000004 , */ /* IDL: SC_RIGHT_MGR_LOCK = 0x00000008 , */ /* IDL: SC_RIGHT_MGR_QUERY_LOCK_STATUS = 0x00000010 , */ /* IDL: SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x00000020 , */ /* IDL: SC_RIGHT_MGR_ALL_ACCESS = 0x000F003F , */ /* IDL: } */ int 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_) { proto_item *item; static int * const svcctl_svcctl_MgrAccessMask_fields[] = { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS, NULL }; uint32_t flags; ALIGN_TO_4_BYTES; item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, ett_svcctl_svcctl_MgrAccessMask, svcctl_svcctl_MgrAccessMask_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE); offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); if (!flags) proto_item_append_text(item, ": (No values set)"); if (flags & (~0x000f007e)) { flags &= (~0x000f007e); proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } return offset; } /* IDL: bitmap { */ /* IDL: SC_RIGHT_SVC_QUERY_CONFIG = 0x00000001 , */ /* IDL: SC_RIGHT_SVC_CHANGE_CONFIG = 0x00000002 , */ /* IDL: SC_RIGHT_SVC_QUERY_STATUS = 0x00000004 , */ /* IDL: SC_RIGHT_SVC_ENUMERATE_DEPENDENTS = 0x00000008 , */ /* IDL: SC_RIGHT_SVC_START = 0x00000010 , */ /* IDL: SC_RIGHT_SVC_STOP = 0x00000020 , */ /* IDL: SC_RIGHT_SVC_PAUSE_CONTINUE = 0x00000040 , */ /* IDL: SC_RIGHT_SVC_INTERROGATE = 0x00000080 , */ /* IDL: SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x00000100 , */ /* IDL: } */ int 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_) { proto_item *item; static int * const svcctl_svcctl_ServiceAccessMask_fields[] = { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE, &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL, NULL }; uint32_t flags; ALIGN_TO_4_BYTES; item = proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_index, ett_svcctl_svcctl_ServiceAccessMask, svcctl_svcctl_ServiceAccessMask_fields, DREP_ENC_INTEGER(drep), BMT_NO_FALSE); offset = dissect_ndr_uint32(tvb, offset, pinfo, parent_tree, di, drep, -1, &flags); if (!flags) proto_item_append_text(item, ": (No values set)"); if (flags & (~0x000001ff)) { flags &= (~0x000001ff); proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); } return offset; } /* IDL: struct { */ /* IDL: svcctl_ServiceType service_type; */ /* IDL: svcctl_StartType start_type; */ /* IDL: svcctl_ErrorControl error_control; */ /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *executablepath; */ /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *loadordergroup; */ /* IDL: uint32 tag_id; */ /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *dependencies; */ /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *startname; */ /* IDL: [charset(UTF16)] [range(0,8192)] [unique(1)] uint16 *displayname; */ /* IDL: } */ 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_error_control, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_executablepath, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_QUERY_SERVICE_CONFIG_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_dependencies, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_startname, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_QUERY_SERVICE_CONFIG_displayname, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_QUERY_SERVICE_CONFIG); } offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_service_type(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_start_type(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_error_control(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_executablepath(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_loadordergroup(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_tag_id(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_dependencies(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_startname(tvb, offset, pinfo, tree, di, drep); offset = svcctl_dissect_element_QUERY_SERVICE_CONFIG_displayname(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: struct { */ /* IDL: [charset(UTF16)] [range(0,SC_MAX_ARGUMENT_LENGTH)] [unique(1)] uint16 *string; */ /* IDL: } */ 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ArgumentString_string, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_svcctl_ArgumentString); } offset = svcctl_dissect_element_ArgumentString_string(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: struct { */ /* IDL: [charset(ASCII)] [range(0,SC_MAX_ARGUMENT_LENGTH)] [unique(1)] uint8 *string; */ /* IDL: } */ 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_ArgumentStringA_string, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } int 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_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; ALIGN_TO_5_BYTES; old_offset = offset; if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, ENC_NA); tree = proto_item_add_subtree(item, ett_svcctl_svcctl_ArgumentStringA); } offset = svcctl_dissect_element_ArgumentStringA_string(tvb, offset, pinfo, tree, di, drep); proto_item_set_len(item, offset-old_offset); if (di->call_data->flags & DCERPC_IS_NDR64) { ALIGN_TO_5_BYTES; } return offset; } /* IDL: enum { */ /* IDL: SERVICE_CONFIG_DESCRIPTION=0x00000001, */ /* IDL: SERVICE_CONFIG_FAILURE_ACTIONS=0x00000002, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } /* IDL: enum { */ /* IDL: SVC_STATUS_PROCESS_INFO=0x00000000, */ /* IDL: } */ int 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_) { uint32_t parameter=0; if (param) { parameter = *param; } offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_index, ¶meter); if (param) { *param = parameter; } return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CloseServiceHandle_object_handle, 0); return offset; } /* IDL: WERROR svcctl_CloseServiceHandle( */ /* IDL: [in] [out] [ref] policy_handle *object_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CloseServiceHandle"; offset = svcctl_dissect_element_CloseServiceHandle_object_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CloseServiceHandle"; offset = svcctl_dissect_element_CloseServiceHandle_object_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ControlService_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_SERVICE_CONTROL(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ControlService_control, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_ControlService_service_status,0); return offset; } /* IDL: WERROR svcctl_ControlService( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] SERVICE_CONTROL control, */ /* IDL: [out] [ref] SERVICE_STATUS *service_status */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ControlService"; offset = svcctl_dissect_element_ControlService_service_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ControlService"; offset = svcctl_dissect_element_ControlService_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ControlService_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_DeleteService_service_handle, 0); return offset; } /* IDL: WERROR svcctl_DeleteService( */ /* IDL: [in] [ref] policy_handle *service_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="DeleteService"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="DeleteService"; offset = svcctl_dissect_element_DeleteService_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_LockServiceDatabase_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_LockServiceDatabase_lock_handle, 0); return offset; } /* IDL: WERROR svcctl_LockServiceDatabase( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [out] [ref] policy_handle *lock_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="LockServiceDatabase"; offset = svcctl_dissect_element_LockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="LockServiceDatabase"; offset = svcctl_dissect_element_LockServiceDatabase_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_bitmap_security_secinfo(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceObjectSecurity( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] security_secinfo security_flags, */ /* IDL: [out] [ref] [size_is(offered)] uint8 *security_descriptor, */ /* IDL: [in] [range(0,0x40000)] uint32 offered, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytes_needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceObjectSecurity"; offset = svcctl_dissect_element_QueryServiceObjectSecurity_security_descriptor(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceObjectSecurity_bytes_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceObjectSecurity"; offset = svcctl_dissect_element_QueryServiceObjectSecurity_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceObjectSecurity_security_flags(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceObjectSecurity_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_bitmap_security_secinfo(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceObjectSecurity_offered, 0); return offset; } /* IDL: WERROR svcctl_SetServiceObjectSecurity( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] security_secinfo security_flags, */ /* IDL: [in] [ref] [size_is(offered)] uint8 *security_descriptor, */ /* IDL: [in] uint32 offered */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="SetServiceObjectSecurity"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="SetServiceObjectSecurity"; offset = svcctl_dissect_element_SetServiceObjectSecurity_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SetServiceObjectSecurity_security_flags(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SetServiceObjectSecurity_security_descriptor(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SetServiceObjectSecurity_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatus_service_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceStatus_service_status,0); return offset; } /* IDL: WERROR svcctl_QueryServiceStatus( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [out] [ref] SERVICE_STATUS *service_status */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceStatus"; offset = svcctl_dissect_element_QueryServiceStatus_service_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceStatus"; offset = svcctl_dissect_element_QueryServiceStatus_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SetServiceStatus_service_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_SetServiceStatus_service_status,0); return offset; } /* IDL: WERROR svcctl_SetServiceStatus( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] [ref] SERVICE_STATUS *service_status */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="SetServiceStatus"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="SetServiceStatus"; offset = svcctl_dissect_element_SetServiceStatus_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SetServiceStatus_service_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle, 0); return offset; } /* IDL: WERROR svcctl_UnlockServiceDatabase( */ /* IDL: [in] [out] [ref] policy_handle *lock_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="UnlockServiceDatabase"; offset = svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="UnlockServiceDatabase"; offset = svcctl_dissect_element_UnlockServiceDatabase_lock_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable, 0); return offset; } /* IDL: WERROR svcctl_NotifyBootConfigStatus( */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *machine_name, */ /* IDL: [in] uint32 boot_acceptable */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="NotifyBootConfigStatus"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="NotifyBootConfigStatus"; offset = svcctl_dissect_element_NotifyBootConfigStatus_machine_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_NotifyBootConfigStatus_boot_acceptable(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_service_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_service_bits, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsW_lpString, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR svcctl_SCSetServiceBitsW( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] uint32 service_bits, */ /* IDL: [in] uint32 set_bits_on, */ /* IDL: [in] uint32 update_immediately, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpString */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="SCSetServiceBitsW"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="SCSetServiceBitsW"; offset = svcctl_dissect_element_SCSetServiceBitsW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsW_service_bits(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsW_set_bits_on(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsW_update_immediately(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsW_lpString(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_error_control, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_dependencies, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_password, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_ChangeServiceConfigW_display_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR svcctl_ChangeServiceConfigW( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *binary_path, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *load_order_group, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [charset(UTF16)] [in] [size_is(dwDependSize)] [unique(1)] uint16 *dependencies, */ /* IDL: [in] [range(0,SC_MAX_DEPEND_SIZE)] uint32 dwDependSize, */ /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_ACCOUNT_NAME_LENGTH)] [unique(1)] uint16 *service_start_name, */ /* IDL: [charset(UTF16)] [in] [size_is(dwPwSize)] [unique(1)] uint16 *password, */ /* IDL: [in] [range(0,SC_MAX_PWD_SIZE)] uint32 dwPwSize, */ /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_NAME_LENGTH)] [unique(1)] uint16 *display_name */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ChangeServiceConfigW"; offset = svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ChangeServiceConfigW"; offset = svcctl_dissect_element_ChangeServiceConfigW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_load_order_group(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_dwDependSize(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_dwPwSize(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigW_display_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_DisplayName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_desired_access, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_error_control, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_dependencies__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_dependencies, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_dependencies_size, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceW_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceW_password__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_password, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_password_size, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceW_service_handle, 0); return offset; } /* IDL: WERROR svcctl_CreateServiceW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroup, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */ /* IDL: [in] uint32 dependencies_size, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */ /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */ /* IDL: [in] uint32 password_size, */ /* IDL: [out] [ref] policy_handle *service_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CreateServiceW"; offset = svcctl_dissect_element_CreateServiceW_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CreateServiceW"; offset = svcctl_dissect_element_CreateServiceW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_DisplayName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_LoadOrderGroup(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_dependencies_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceW_password_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_service_state, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumDependentServicesW_service_status__); return offset; } 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_) { offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSW(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_EnumDependentServicesW_service_status,0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesW_services_returned, 0); return offset; } /* IDL: WERROR svcctl_EnumDependentServicesW( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] svcctl_ServiceState service_state, */ /* IDL: [out] [ref] [size_is(offered)] ENUM_SERVICE_STATUSW *service_status, */ /* IDL: [in] [range(0,0x40000)] uint32 offered, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytesneeded, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *services_returned */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumDependentServicesW"; offset = svcctl_dissect_element_EnumDependentServicesW_service_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesW_bytesneeded(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesW_services_returned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumDependentServicesW"; offset = svcctl_dissect_element_EnumDependentServicesW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesW_service_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesW_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_scm_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_service_state, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusW_resume_index, 0); return offset; } /* IDL: WERROR svcctl_EnumServicesStatusW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_ServiceState service_state, */ /* IDL: [out] [ref] [size_is(offered)] uint8 *services, */ /* IDL: [in] [range(0,0x40000)] uint32 offered, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *bytes_needed, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *services_returned, */ /* IDL: [in] [out] [unique(1)] uint32 *resume_index */ /* IDL: ); */ static int 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_) { di->dcerpc_procedure_name="EnumServicesStatusW"; offset = svcctl_dissect_element_EnumServicesStatusW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusW_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusW_service_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusW_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusW_resume_index(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_MachineName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManagerW_DatabaseName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerW_access_mask, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerW_scm_handle, 0); return offset; } /* IDL: WERROR svcctl_OpenSCManagerW( */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *MachineName, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DatabaseName, */ /* IDL: [in] svcctl_MgrAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *scm_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="OpenSCManagerW"; offset = svcctl_dissect_element_OpenSCManagerW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="OpenSCManagerW"; offset = svcctl_dissect_element_OpenSCManagerW_MachineName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenSCManagerW_DatabaseName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenSCManagerW_access_mask(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenServiceW_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = svcctl_dissect_bitmap_ServiceAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_access_mask, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceW_service_handle, 0); return offset; } /* IDL: WERROR svcctl_OpenServiceW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */ /* IDL: [in] svcctl_ServiceAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *service_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="OpenServiceW"; offset = svcctl_dissect_element_OpenServiceW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="OpenServiceW"; offset = svcctl_dissect_element_OpenServiceW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenServiceW_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenServiceW_access_mask(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_service_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_QUERY_SERVICE_CONFIG(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceConfigW_service_config,0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigW_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceConfigW( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [out] [ref] QUERY_SERVICE_CONFIG *service_config, */ /* IDL: [in] [range(0,8192)] uint32 offered, */ /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceConfigW"; offset = svcctl_dissect_element_QueryServiceConfigW_service_config(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfigW_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceConfigW"; offset = svcctl_dissect_element_QueryServiceConfigW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfigW_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_LOCK_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status,0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusW_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceLockStatusW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [out] [ref] SERVICE_LOCK_STATUS *lock_status, */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceLockStatusW"; offset = svcctl_dissect_element_QueryServiceLockStatusW_lock_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceLockStatusW_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceLockStatusW"; offset = svcctl_dissect_element_QueryServiceLockStatusW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceLockStatusW_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceW_service_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceW_NumArgs, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceW_Arguments__); return offset; } 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_) { offset = svcctl_dissect_struct_ArgumentString(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_StartServiceW_Arguments,0); return offset; } /* IDL: WERROR svcctl_StartServiceW( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] [range(0,SC_MAX_ARGUMENTS)] uint32 NumArgs, */ /* IDL: [in] [size_is(NumArgs)] [unique(1)] svcctl_ArgumentString *Arguments */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="StartServiceW"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="StartServiceW"; offset = svcctl_dissect_element_StartServiceW_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_StartServiceW_NumArgs(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_StartServiceW_Arguments(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_service_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceDisplayNameW_display_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length, 0); return offset; } /* IDL: WERROR svcctl_GetServiceDisplayNameW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_name, */ /* IDL: [charset(UTF16)] [out] [ref] uint16 **display_name, */ /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceDisplayNameW"; offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceDisplayNameW"; offset = svcctl_dissect_element_GetServiceDisplayNameW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameW_service_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameW_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_display_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetServiceKeyNameW_service_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length, 0); return offset; } /* IDL: WERROR svcctl_GetServiceKeyNameW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *display_name, */ /* IDL: [charset(UTF16)] [out] [ref] uint16 **service_name, */ /* IDL: [in] [out] [unique(1)] uint32 *service_name_length */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceKeyNameW"; offset = svcctl_dissect_element_GetServiceKeyNameW_service_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceKeyNameW"; offset = svcctl_dissect_element_GetServiceKeyNameW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameW_display_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameW_service_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_service_bits, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_SCSetServiceBitsA_lpString, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR svcctl_SCSetServiceBitsA( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] uint32 service_bits, */ /* IDL: [in] uint32 set_bits_on, */ /* IDL: [in] uint32 update_immediately, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpString */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="SCSetServiceBitsA"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="SCSetServiceBitsA"; offset = svcctl_dissect_element_SCSetServiceBitsA_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsA_service_bits(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsA_set_bits_on(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsA_update_immediately(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_SCSetServiceBitsA_lpString(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_error_control, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_binary_path , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfigA_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_dependencies , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_password , 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_ChangeServiceConfigA_display_name , 0); return offset; } /* IDL: WERROR svcctl_ChangeServiceConfigA( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *binary_path, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *load_order_group, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *dependencies, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_start_name, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *password, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *display_name */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ChangeServiceConfigA"; offset = svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ChangeServiceConfigA"; offset = svcctl_dissect_element_ChangeServiceConfigA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_load_order_group(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfigA_display_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_DisplayName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_desired_access, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_error_control, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_dependencies__); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_CreateServiceA_dependencies , 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_dependencies_size, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceA_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceA_password__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_password, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_password_size, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceA_service_handle, 0); return offset; } /* IDL: WERROR svcctl_CreateServiceA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DisplayName, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(ASCII)] [in] uint8 binary_path[*], */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *LoadOrderGroupKey, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [size_is(dependencies_size)] [unique(1)] string *dependencies, */ /* IDL: [in] uint32 dependencies_size, */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *service_start_name, */ /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */ /* IDL: [in] uint32 password_size, */ /* IDL: [out] [ref] policy_handle *service_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CreateServiceA"; offset = svcctl_dissect_element_CreateServiceA_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CreateServiceA"; offset = svcctl_dissect_element_CreateServiceA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_DisplayName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_dependencies_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceA_password_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_service_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_state, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_ENUM_SERVICE_STATUSA(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_EnumDependentServicesA_service_status,0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_needed, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumDependentServicesA_services_returned, 0); return offset; } /* IDL: WERROR svcctl_EnumDependentServicesA( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] svcctl_ServiceState state, */ /* IDL: [out] [ref] ENUM_SERVICE_STATUSA *service_status, */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed, */ /* IDL: [out] [ref] uint32 *services_returned */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumDependentServicesA"; offset = svcctl_dissect_element_EnumDependentServicesA_service_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesA_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesA_services_returned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumDependentServicesA"; offset = svcctl_dissect_element_EnumDependentServicesA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesA_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumDependentServicesA_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_scm_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service_state, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_offered, 0); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusA_service_); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_service, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_needed, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_services_returned, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServicesStatusA_resume_handle, 0); return offset; } /* IDL: WERROR svcctl_EnumServicesStatusA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_ServiceState service_state, */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [size_is(offered)] uint8 service[*], */ /* IDL: [out] [ref] uint32 *needed, */ /* IDL: [out] [ref] uint32 *services_returned, */ /* IDL: [in] [out] [unique(1)] uint32 *resume_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumServicesStatusA"; offset = svcctl_dissect_element_EnumServicesStatusA_service(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_services_returned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumServicesStatusA"; offset = svcctl_dissect_element_EnumServicesStatusA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_service_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusA_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_MachineName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenSCManagerA_DatabaseName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerA_access_mask, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManagerA_scm_handle, 0); return offset; } /* IDL: WERROR svcctl_OpenSCManagerA( */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *MachineName, */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DatabaseName, */ /* IDL: [in] svcctl_MgrAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *scm_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="OpenSCManagerA"; offset = svcctl_dissect_element_OpenSCManagerA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="OpenSCManagerA"; offset = svcctl_dissect_element_OpenSCManagerA_MachineName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenSCManagerA_DatabaseName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenSCManagerA_access_mask(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_OpenServiceA_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = svcctl_dissect_bitmap_MgrAccessMask(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_access_mask, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenServiceA_service_handle, 0); return offset; } /* IDL: WERROR svcctl_OpenServiceA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */ /* IDL: [in] svcctl_MgrAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *service_handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="OpenServiceA"; offset = svcctl_dissect_element_OpenServiceA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="OpenServiceA"; offset = svcctl_dissect_element_OpenServiceA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenServiceA_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenServiceA_access_mask(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_service_handle, 0); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfigA_query_); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_query, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigA_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceConfigA( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [out] [size_is(cbBufSize)] uint8 query[*], */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceConfigA"; offset = svcctl_dissect_element_QueryServiceConfigA_query(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfigA_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceConfigA"; offset = svcctl_dissect_element_QueryServiceConfigA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfigA_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = svcctl_dissect_struct_SERVICE_LOCK_STATUS(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status,0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceLockStatusA_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceLockStatusA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [out] [ref] SERVICE_LOCK_STATUS *lock_status, */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceLockStatusA"; offset = svcctl_dissect_element_QueryServiceLockStatusA_lock_status(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceLockStatusA_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceLockStatusA"; offset = svcctl_dissect_element_QueryServiceLockStatusA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceLockStatusA_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceA_service_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_StartServiceA_NumArgs, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_StartServiceA_Arguments__); return offset; } 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_) { offset = svcctl_dissect_struct_ArgumentStringA(tvb,offset,pinfo,tree,di,drep,hf_svcctl_svcctl_StartServiceA_Arguments,0); return offset; } /* IDL: WERROR svcctl_StartServiceA( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] uint32 NumArgs, */ /* IDL: [in] [size_is(NumArgs)] [unique(1)] svcctl_ArgumentStringA *Arguments */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="StartServiceA"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="StartServiceA"; offset = svcctl_dissect_element_StartServiceA_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_StartServiceA_NumArgs(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_StartServiceA_Arguments(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_service_name , 0); return offset; } 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_) { 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); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceDisplayNameA_display_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length, 0); return offset; } /* IDL: WERROR svcctl_GetServiceDisplayNameA( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_name, */ /* IDL: [charset(ASCII)] [out] [ref] uint8 **display_name, */ /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceDisplayNameA"; offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceDisplayNameA"; offset = svcctl_dissect_element_GetServiceDisplayNameA_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameA_service_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceDisplayNameA_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_GetServiceKeyNameA_service_name , 0); return offset; } 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_) { 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); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_GetServiceKeyNameA_key_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length, 0); return offset; } /* IDL: WERROR svcctl_GetServiceKeyNameA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [unique(1)] string *service_name, */ /* IDL: [charset(ASCII)] [out] [ref] uint8 **key_name, */ /* IDL: [in] [out] [unique(1)] uint32 *display_name_length */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceKeyNameA"; offset = svcctl_dissect_element_GetServiceKeyNameA_key_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceKeyNameA"; offset = svcctl_dissect_element_GetServiceKeyNameA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameA_service_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetServiceKeyNameA_display_name_length(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetCurrentGroupeStateW_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_GetCurrentGroupeStateW_state, 0); return offset; } /* IDL: WERROR svcctl_GetCurrentGroupeStateW( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *lpLoadOrderGroup, */ /* IDL: [out] [ref] uint32 *state */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetCurrentGroupeStateW"; offset = svcctl_dissect_element_GetCurrentGroupeStateW_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetCurrentGroupeStateW"; offset = svcctl_dissect_element_GetCurrentGroupeStateW_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_GetCurrentGroupeStateW_lpLoadOrderGroup(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_scm_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_service_state, 0); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServiceGroupW_lpBuffer_); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR svcctl_EnumServiceGroupW( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_ServiceState service_state, */ /* IDL: [out] [size_is(cbBufSize)] uint8 lpBuffer[*], */ /* IDL: [in] [range(0,1024*256)] uint32 cbBufSize, */ /* IDL: [out] [range(0,1024*256)] [ref] uint32 *pcbBytesNeeded, */ /* IDL: [out] [range(0,1024*256)] [ref] uint32 *lpServicesReturned, */ /* IDL: [in] [out] [unique(1)] uint32 *ResumeIndex, */ /* IDL: [charset(UTF16)] [in] [range(0,SC_MAX_NAME_LENGTH)] [unique(1)] uint16 *pszGroupName */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumServiceGroupW"; offset = svcctl_dissect_element_EnumServiceGroupW_lpBuffer(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_pcbBytesNeeded(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_lpServicesReturned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumServiceGroupW"; offset = svcctl_dissect_element_EnumServiceGroupW_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_service_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_cbBufSize(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_ResumeIndex(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServiceGroupW_pszGroupName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_info_level, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2A_info, 0); return offset; } /* IDL: WERROR svcctl_ChangeServiceConfig2A( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] uint32 info_level, */ /* IDL: [in] [unique(1)] uint8 *info */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ChangeServiceConfig2A"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ChangeServiceConfig2A"; offset = svcctl_dissect_element_ChangeServiceConfig2A_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfig2A_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfig2A_info(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_info_level, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_ChangeServiceConfig2W_info, 0); return offset; } /* IDL: WERROR svcctl_ChangeServiceConfig2W( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] uint32 info_level, */ /* IDL: [in] [unique(1)] uint8 *info */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ChangeServiceConfig2W"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ChangeServiceConfig2W"; offset = svcctl_dissect_element_ChangeServiceConfig2W_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfig2W_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_ChangeServiceConfig2W_info(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ConfigLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_info_level, 0); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2A_buffer_); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_buffer, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2A_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceConfig2A( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] svcctl_ConfigLevel info_level, */ /* IDL: [out] [size_is(offered)] uint8 buffer[*], */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceConfig2A"; offset = svcctl_dissect_element_QueryServiceConfig2A_buffer(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2A_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceConfig2A"; offset = svcctl_dissect_element_QueryServiceConfig2A_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2A_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2A_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ConfigLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_info_level, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceConfig2W_buffer__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_buffer, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfig2W_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceConfig2W( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] svcctl_ConfigLevel info_level, */ /* IDL: [out] [ref] [size_is(offered)] uint8 *buffer, */ /* IDL: [in] [range(0,8192)] uint32 offered, */ /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceConfig2W"; offset = svcctl_dissect_element_QueryServiceConfig2W_buffer(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2W_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceConfig2W"; offset = svcctl_dissect_element_QueryServiceConfig2W_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2W_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfig2W_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_handle, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StatusLevel(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_info_level, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_QueryServiceStatusEx_buffer__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_buffer, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceStatusEx_needed, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceStatusEx( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] svcctl_StatusLevel info_level, */ /* IDL: [out] [ref] [size_is(offered)] uint8 *buffer, */ /* IDL: [in] [range(0,8192)] uint32 offered, */ /* IDL: [out] [range(0,8192)] [ref] uint32 *needed */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceStatusEx"; offset = svcctl_dissect_element_QueryServiceStatusEx_buffer(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceStatusEx_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceStatusEx"; offset = svcctl_dissect_element_QueryServiceStatusEx_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceStatusEx_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceStatusEx_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_scm_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_info_level, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_state, 0); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExA_services_); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_services, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_needed, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_service_returned, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExA_resume_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExA_group_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR EnumServicesStatusExA( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [in] uint32 info_level, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_ServiceState state, */ /* IDL: [out] [size_is(offered)] uint8 services[*], */ /* IDL: [in] uint32 offered, */ /* IDL: [out] [ref] uint32 *needed, */ /* IDL: [out] [ref] uint32 *service_returned, */ /* IDL: [in] [out] [unique(1)] uint32 *resume_handle, */ /* IDL: [charset(UTF16)] [out] [ref] uint16 **group_name */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumServicesStatusExA"; offset = svcctl_dissect_element_EnumServicesStatusExA_services(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_service_returned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_group_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumServicesStatusExA"; offset = svcctl_dissect_element_EnumServicesStatusExA_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExA_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_scmanager, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_info_level, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceState(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_state, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_EnumServicesStatusExW_services__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_services, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_offered, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_needed, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_service_returned, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_EnumServicesStatusExW_resume_handle, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_EnumServicesStatusExW_group_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } /* IDL: WERROR EnumServicesStatusExW( */ /* IDL: [in] [ref] policy_handle *scmanager, */ /* IDL: [in] uint32 info_level, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_ServiceState state, */ /* IDL: [out] [ref] [size_is(offered)] uint8 *services, */ /* IDL: [in] [range(0,0x40000)] uint32 offered, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *needed, */ /* IDL: [out] [range(0,0x40000)] [ref] uint32 *service_returned, */ /* IDL: [in] [out] [range(0,0x40000)] [unique(1)] uint32 *resume_handle, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *group_name */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="EnumServicesStatusExW"; offset = svcctl_dissect_element_EnumServicesStatusExW_services(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_needed(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_service_returned(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="EnumServicesStatusExW"; offset = svcctl_dissect_element_EnumServicesStatusExW_scmanager(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_state(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_offered(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_resume_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_EnumServicesStatusExW_group_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } /* IDL: WERROR svcctl_ScBroadcastServiceControlMessage( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScBroadcastServiceControlMessage"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScBroadcastServiceControlMessage"; return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_desired_access, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_error_control, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_dependencies__); return offset; } 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_) { offset = dissect_null_term_string(tvb, offset, pinfo, tree, drep, hf_svcctl_svcctl_CreateServiceWOW64A_dependencies , 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint8_t), hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64A_password__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_password, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_password_size, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64A_handle, 0); return offset; } /* IDL: WERROR svcctl_CreateServiceWOW64A( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(ASCII)] [in] uint8 ServiceName[*], */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *DisplayName, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(ASCII)] [in] uint8 binary_path[*], */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *LoadOrderGroupKey, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] [in] [size_is(dependencies_size)] [unique(1)] string *dependencies, */ /* IDL: [in] uint32 dependencies_size, */ /* IDL: [charset(ASCII)] [in] [unique(1)] uint8 *service_start_name, */ /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */ /* IDL: [in] uint32 password_size, */ /* IDL: [out] [ref] policy_handle *handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CreateServiceWOW64A"; offset = svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CreateServiceWOW64A"; offset = svcctl_dissect_element_CreateServiceWOW64A_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_DisplayName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_dependencies_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64A_password_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_desired_access, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ServiceType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_error_control, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_dependencies__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_dependencies, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateServiceWOW64W_password__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_password, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_password_size, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateServiceWOW64W_handle, 0); return offset; } /* IDL: WERROR svcctl_CreateServiceWOW64W( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [in] svcctl_ServiceType service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroupKey, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */ /* IDL: [in] uint32 dependencies_size, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */ /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */ /* IDL: [in] uint32 password_size, */ /* IDL: [out] [ref] policy_handle *handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CreateServiceWOW64W"; offset = svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CreateServiceWOW64W"; offset = svcctl_dissect_element_CreateServiceWOW64W_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_DisplayName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_dependencies_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateServiceWOW64W_password_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } /* IDL: WERROR svcctl_ScQueryServiceTagInfo( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScQueryServiceTagInfo"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScQueryServiceTagInfo"; return offset; } /* IDL: WERROR svcctl_NotifyServiceStatusChange( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="NotifyServiceStatusChange"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="NotifyServiceStatusChange"; return offset; } /* IDL: WERROR svcctl_GetNotifyResults( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetNotifyResults"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetNotifyResults"; return offset; } /* IDL: WERROR svcctl_CloseNotifyHandle( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CloseNotifyHandle"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CloseNotifyHandle"; return offset; } /* IDL: WERROR svcctl_ControlServiceExA( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ControlServiceExA"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ControlServiceExA"; return offset; } /* IDL: WERROR svcctl_ControlServiceExW( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ControlServiceExW"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ControlServiceExW"; return offset; } /* IDL: WERROR svcctl_ScSendPnPMessage( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScSendPnPMessage"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScSendPnPMessage"; return offset; } /* IDL: WERROR svcctl_ScValidatePnPService( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScValidatePnPService"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScValidatePnPService"; return offset; } /* IDL: WERROR svcctl_ScOpenServiceStatusHandle( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScOpenServiceStatusHandle"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScOpenServiceStatusHandle"; return offset; } /* IDL: WERROR svcctl_ScQueryServiceConfig( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScQueryServiceConfig"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScQueryServiceConfig"; return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigEx_service_handle, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_QueryServiceConfigEx_info_level, 0); return offset; } /* IDL: WERROR svcctl_QueryServiceConfigEx( */ /* IDL: [in] [ref] policy_handle *service_handle, */ /* IDL: [in] uint32 info_level */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryServiceConfigEx"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryServiceConfigEx"; offset = svcctl_dissect_element_QueryServiceConfigEx_service_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_QueryServiceConfigEx_info_level(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } /* IDL: WERROR svcctl_ScRegisterPreshutdownRestart( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScRegisterPreshutdownRestart"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScRegisterPreshutdownRestart"; return offset; } /* IDL: WERROR svcctl_ScReparseServiceDatabase( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="ScReparseServiceDatabase"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="ScReparseServiceDatabase"; return offset; } /* IDL: WERROR svcctl_QueryUserServiceName( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="QueryUserServiceName"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="QueryUserServiceName"; return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_scm_handle, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_ServiceName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_DisplayName, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_desired_access, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_service_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_StartType(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_start_type, 0); return offset; } 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_) { offset = svcctl_dissect_enum_ErrorControl(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_error_control, 0); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_binary_path, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_tag_id, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_dependencies__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_dependencies, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_dependencies_size, 0); return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_CreateWowService_service_start_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { 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); return offset; } 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_) { offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, di, drep, svcctl_dissect_element_CreateWowService_password__); return offset; } 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_) { offset = PIDL_dissect_uint8(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_password, 0); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_password_size, 0); return offset; } 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_) { offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_service_wow_type, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_CreateWowService_handle, 0); return offset; } /* IDL: WERROR svcctl_CreateWowService( */ /* IDL: [in] [ref] policy_handle *scm_handle, */ /* IDL: [charset(UTF16)] [in] uint16 ServiceName[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *DisplayName, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [in] uint32 service_type, */ /* IDL: [in] svcctl_StartType start_type, */ /* IDL: [in] svcctl_ErrorControl error_control, */ /* IDL: [charset(UTF16)] [in] uint16 binary_path[*], */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *LoadOrderGroupKey, */ /* IDL: [in] [out] [unique(1)] uint32 *tag_id, */ /* IDL: [in] [size_is(dependencies_size)] [unique(1)] uint8 *dependencies, */ /* IDL: [in] uint32 dependencies_size, */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *service_start_name, */ /* IDL: [in] [size_is(password_size)] [unique(1)] uint8 *password, */ /* IDL: [in] uint32 password_size, */ /* IDL: [in] uint16 service_wow_type, */ /* IDL: [out] [ref] policy_handle *handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="CreateWowService"; offset = svcctl_dissect_element_CreateWowService_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="CreateWowService"; offset = svcctl_dissect_element_CreateWowService_scm_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_ServiceName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_DisplayName(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_service_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_start_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_error_control(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_binary_path(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_LoadOrderGroupKey(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_tag_id(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_dependencies(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_dependencies_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_service_start_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_password(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_password_size(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_CreateWowService_service_wow_type(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } /* IDL: WERROR svcctl_GetServiceRegistryStateKey( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceRegistryStateKey"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceRegistryStateKey"; return offset; } /* IDL: WERROR svcctl_GetServiceDirectory( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceDirectory"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceDirectory"; return offset; } /* IDL: WERROR svcctl_GetServiceProcessToken( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetServiceProcessToken"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetServiceProcessToken"; return offset; } 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_) { 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); return offset; } 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_) { char *data; offset = dissect_ndr_cvstring(tvb, offset, pinfo, tree, di, drep, sizeof(uint16_t), hf_svcctl_svcctl_OpenSCManager2_database_name, false, &data); proto_item_append_text(tree, ": %s", data); return offset; } 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_) { offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManager2_desired_access, 0); return offset; } 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_) { 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); return offset; } 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_) { offset = PIDL_dissect_policy_hnd(tvb, offset, pinfo, tree, di, drep, hf_svcctl_svcctl_OpenSCManager2_handle, 0); return offset; } /* IDL: WERROR svcctl_OpenSCManager2( */ /* IDL: [charset(UTF16)] [in] [unique(1)] uint16 *database_name, */ /* IDL: [in] uint32 desired_access, */ /* IDL: [out] [ref] policy_handle *handle */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="OpenSCManager2"; offset = svcctl_dissect_element_OpenSCManager2_handle(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="OpenSCManager2"; offset = svcctl_dissect_element_OpenSCManager2_database_name(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); offset = svcctl_dissect_element_OpenSCManager2_desired_access(tvb, offset, pinfo, tree, di, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, di, drep); return offset; } /* IDL: WERROR svcctl_GetSharedServiceRegistryStateKey( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetSharedServiceRegistryStateKey"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetSharedServiceRegistryStateKey"; return offset; } /* IDL: WERROR svcctl_GetSharedServiceDirectory( */ /* IDL: */ /* IDL: ); */ static int 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_) { uint32_t status; di->dcerpc_procedure_name="GetSharedServiceDirectory"; offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_svcctl_werror, &status); if (status != 0) col_append_fstr(pinfo->cinfo, COL_INFO, ", Error: %s", val_to_str_ext(status, &WERR_errors_ext, "Unknown DOS error 0x%08x")); return offset; } static int 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_) { di->dcerpc_procedure_name="GetSharedServiceDirectory"; return offset; } static const dcerpc_sub_dissector svcctl_dissectors[] = { { 0, "CloseServiceHandle", svcctl_dissect_CloseServiceHandle_request, svcctl_dissect_CloseServiceHandle_response}, { 1, "ControlService", svcctl_dissect_ControlService_request, svcctl_dissect_ControlService_response}, { 2, "DeleteService", svcctl_dissect_DeleteService_request, svcctl_dissect_DeleteService_response}, { 3, "LockServiceDatabase", svcctl_dissect_LockServiceDatabase_request, svcctl_dissect_LockServiceDatabase_response}, { 4, "QueryServiceObjectSecurity", svcctl_dissect_QueryServiceObjectSecurity_request, svcctl_dissect_QueryServiceObjectSecurity_response}, { 5, "SetServiceObjectSecurity", svcctl_dissect_SetServiceObjectSecurity_request, svcctl_dissect_SetServiceObjectSecurity_response}, { 6, "QueryServiceStatus", svcctl_dissect_QueryServiceStatus_request, svcctl_dissect_QueryServiceStatus_response}, { 7, "SetServiceStatus", svcctl_dissect_SetServiceStatus_request, svcctl_dissect_SetServiceStatus_response}, { 8, "UnlockServiceDatabase", svcctl_dissect_UnlockServiceDatabase_request, svcctl_dissect_UnlockServiceDatabase_response}, { 9, "NotifyBootConfigStatus", svcctl_dissect_NotifyBootConfigStatus_request, svcctl_dissect_NotifyBootConfigStatus_response}, { 10, "SCSetServiceBitsW", svcctl_dissect_SCSetServiceBitsW_request, svcctl_dissect_SCSetServiceBitsW_response}, { 11, "ChangeServiceConfigW", svcctl_dissect_ChangeServiceConfigW_request, svcctl_dissect_ChangeServiceConfigW_response}, { 12, "CreateServiceW", svcctl_dissect_CreateServiceW_request, svcctl_dissect_CreateServiceW_response}, { 13, "EnumDependentServicesW", svcctl_dissect_EnumDependentServicesW_request, svcctl_dissect_EnumDependentServicesW_response}, { 14, "EnumServicesStatusW", svcctl_dissect_EnumServicesStatusW_request, svcctl_dissect_EnumServicesStatusW_response}, { 15, "OpenSCManagerW", svcctl_dissect_OpenSCManagerW_request, svcctl_dissect_OpenSCManagerW_response}, { 16, "OpenServiceW", svcctl_dissect_OpenServiceW_request, svcctl_dissect_OpenServiceW_response}, { 17, "QueryServiceConfigW", svcctl_dissect_QueryServiceConfigW_request, svcctl_dissect_QueryServiceConfigW_response}, { 18, "QueryServiceLockStatusW", svcctl_dissect_QueryServiceLockStatusW_request, svcctl_dissect_QueryServiceLockStatusW_response}, { 19, "StartServiceW", svcctl_dissect_StartServiceW_request, svcctl_dissect_StartServiceW_response}, { 20, "GetServiceDisplayNameW", svcctl_dissect_GetServiceDisplayNameW_request, svcctl_dissect_GetServiceDisplayNameW_response}, { 21, "GetServiceKeyNameW", svcctl_dissect_GetServiceKeyNameW_request, svcctl_dissect_GetServiceKeyNameW_response}, { 22, "SCSetServiceBitsA", svcctl_dissect_SCSetServiceBitsA_request, svcctl_dissect_SCSetServiceBitsA_response}, { 23, "ChangeServiceConfigA", svcctl_dissect_ChangeServiceConfigA_request, svcctl_dissect_ChangeServiceConfigA_response}, { 24, "CreateServiceA", svcctl_dissect_CreateServiceA_request, svcctl_dissect_CreateServiceA_response}, { 25, "EnumDependentServicesA", svcctl_dissect_EnumDependentServicesA_request, svcctl_dissect_EnumDependentServicesA_response}, { 26, "EnumServicesStatusA", svcctl_dissect_EnumServicesStatusA_request, svcctl_dissect_EnumServicesStatusA_response}, { 27, "OpenSCManagerA", svcctl_dissect_OpenSCManagerA_request, svcctl_dissect_OpenSCManagerA_response}, { 28, "OpenServiceA", svcctl_dissect_OpenServiceA_request, svcctl_dissect_OpenServiceA_response}, { 29, "QueryServiceConfigA", svcctl_dissect_QueryServiceConfigA_request, svcctl_dissect_QueryServiceConfigA_response}, { 30, "QueryServiceLockStatusA", svcctl_dissect_QueryServiceLockStatusA_request, svcctl_dissect_QueryServiceLockStatusA_response}, { 31, "StartServiceA", svcctl_dissect_StartServiceA_request, svcctl_dissect_StartServiceA_response}, { 32, "GetServiceDisplayNameA", svcctl_dissect_GetServiceDisplayNameA_request, svcctl_dissect_GetServiceDisplayNameA_response}, { 33, "GetServiceKeyNameA", svcctl_dissect_GetServiceKeyNameA_request, svcctl_dissect_GetServiceKeyNameA_response}, { 34, "GetCurrentGroupeStateW", svcctl_dissect_GetCurrentGroupeStateW_request, svcctl_dissect_GetCurrentGroupeStateW_response}, { 35, "EnumServiceGroupW", svcctl_dissect_EnumServiceGroupW_request, svcctl_dissect_EnumServiceGroupW_response}, { 36, "ChangeServiceConfig2A", svcctl_dissect_ChangeServiceConfig2A_request, svcctl_dissect_ChangeServiceConfig2A_response}, { 37, "ChangeServiceConfig2W", svcctl_dissect_ChangeServiceConfig2W_request, svcctl_dissect_ChangeServiceConfig2W_response}, { 38, "QueryServiceConfig2A", svcctl_dissect_QueryServiceConfig2A_request, svcctl_dissect_QueryServiceConfig2A_response}, { 39, "QueryServiceConfig2W", svcctl_dissect_QueryServiceConfig2W_request, svcctl_dissect_QueryServiceConfig2W_response}, { 40, "QueryServiceStatusEx", svcctl_dissect_QueryServiceStatusEx_request, svcctl_dissect_QueryServiceStatusEx_response}, { 41, "EnumServicesStatusExA", svcctl_dissect_EnumServicesStatusExA_request, svcctl_dissect_EnumServicesStatusExA_response}, { 42, "EnumServicesStatusExW", svcctl_dissect_EnumServicesStatusExW_request, svcctl_dissect_EnumServicesStatusExW_response}, { 43, "ScBroadcastServiceControlMessage", svcctl_dissect_ScBroadcastServiceControlMessage_request, svcctl_dissect_ScBroadcastServiceControlMessage_response}, { 44, "CreateServiceWOW64A", svcctl_dissect_CreateServiceWOW64A_request, svcctl_dissect_CreateServiceWOW64A_response}, { 45, "CreateServiceWOW64W", svcctl_dissect_CreateServiceWOW64W_request, svcctl_dissect_CreateServiceWOW64W_response}, { 46, "ScQueryServiceTagInfo", svcctl_dissect_ScQueryServiceTagInfo_request, svcctl_dissect_ScQueryServiceTagInfo_response}, { 47, "NotifyServiceStatusChange", svcctl_dissect_NotifyServiceStatusChange_request, svcctl_dissect_NotifyServiceStatusChange_response}, { 48, "GetNotifyResults", svcctl_dissect_GetNotifyResults_request, svcctl_dissect_GetNotifyResults_response}, { 49, "CloseNotifyHandle", svcctl_dissect_CloseNotifyHandle_request, svcctl_dissect_CloseNotifyHandle_response}, { 50, "ControlServiceExA", svcctl_dissect_ControlServiceExA_request, svcctl_dissect_ControlServiceExA_response}, { 51, "ControlServiceExW", svcctl_dissect_ControlServiceExW_request, svcctl_dissect_ControlServiceExW_response}, { 52, "ScSendPnPMessage", svcctl_dissect_ScSendPnPMessage_request, svcctl_dissect_ScSendPnPMessage_response}, { 53, "ScValidatePnPService", svcctl_dissect_ScValidatePnPService_request, svcctl_dissect_ScValidatePnPService_response}, { 54, "ScOpenServiceStatusHandle", svcctl_dissect_ScOpenServiceStatusHandle_request, svcctl_dissect_ScOpenServiceStatusHandle_response}, { 55, "ScQueryServiceConfig", svcctl_dissect_ScQueryServiceConfig_request, svcctl_dissect_ScQueryServiceConfig_response}, { 56, "QueryServiceConfigEx", svcctl_dissect_QueryServiceConfigEx_request, svcctl_dissect_QueryServiceConfigEx_response}, { 57, "ScRegisterPreshutdownRestart", svcctl_dissect_ScRegisterPreshutdownRestart_request, svcctl_dissect_ScRegisterPreshutdownRestart_response}, { 58, "ScReparseServiceDatabase", svcctl_dissect_ScReparseServiceDatabase_request, svcctl_dissect_ScReparseServiceDatabase_response}, { 59, "QueryUserServiceName", svcctl_dissect_QueryUserServiceName_request, svcctl_dissect_QueryUserServiceName_response}, { 60, "CreateWowService", svcctl_dissect_CreateWowService_request, svcctl_dissect_CreateWowService_response}, { 61, "GetServiceRegistryStateKey", svcctl_dissect_GetServiceRegistryStateKey_request, svcctl_dissect_GetServiceRegistryStateKey_response}, { 62, "GetServiceDirectory", svcctl_dissect_GetServiceDirectory_request, svcctl_dissect_GetServiceDirectory_response}, { 63, "GetServiceProcessToken", svcctl_dissect_GetServiceProcessToken_request, svcctl_dissect_GetServiceProcessToken_response}, { 64, "OpenSCManager2", svcctl_dissect_OpenSCManager2_request, svcctl_dissect_OpenSCManager2_response}, { 65, "GetSharedServiceRegistryStateKey", svcctl_dissect_GetSharedServiceRegistryStateKey_request, svcctl_dissect_GetSharedServiceRegistryStateKey_response}, { 66, "GetSharedServiceDirectory", svcctl_dissect_GetSharedServiceDirectory_request, svcctl_dissect_GetSharedServiceDirectory_response}, { 0, NULL, NULL, NULL } }; void proto_register_dcerpc_svcctl(void) { static hf_register_info hf[] = { { &hf_svcctl_ENUM_SERVICE_STATUSA_display_name, { "Display Name", "svcctl.ENUM_SERVICE_STATUSA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_ENUM_SERVICE_STATUSA_service_name, { "Service Name", "svcctl.ENUM_SERVICE_STATUSA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_ENUM_SERVICE_STATUSA_status, { "Status", "svcctl.ENUM_SERVICE_STATUSA.status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_ENUM_SERVICE_STATUSW_display_name, { "Display Name", "svcctl.ENUM_SERVICE_STATUSW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_ENUM_SERVICE_STATUSW_service_name, { "Service Name", "svcctl.ENUM_SERVICE_STATUSW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_ENUM_SERVICE_STATUSW_status, { "Status", "svcctl.ENUM_SERVICE_STATUSW.status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_group_name, { "Group Name", "svcctl.EnumServicesStatusExA.group_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_info_level, { "Info Level", "svcctl.EnumServicesStatusExA.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_needed, { "Needed", "svcctl.EnumServicesStatusExA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_offered, { "Offered", "svcctl.EnumServicesStatusExA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_resume_handle, { "Resume Handle", "svcctl.EnumServicesStatusExA.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_scm_handle, { "Scm Handle", "svcctl.EnumServicesStatusExA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_service_returned, { "Service Returned", "svcctl.EnumServicesStatusExA.service_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_service_type, { "Service Type", "svcctl.EnumServicesStatusExA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_services, { "Services", "svcctl.EnumServicesStatusExA.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExA_state, { "State", "svcctl.EnumServicesStatusExA.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_group_name, { "Group Name", "svcctl.EnumServicesStatusExW.group_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_info_level, { "Info Level", "svcctl.EnumServicesStatusExW.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_needed, { "Needed", "svcctl.EnumServicesStatusExW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_offered, { "Offered", "svcctl.EnumServicesStatusExW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_resume_handle, { "Resume Handle", "svcctl.EnumServicesStatusExW.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_scmanager, { "Scmanager", "svcctl.EnumServicesStatusExW.scmanager", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_service_returned, { "Service Returned", "svcctl.EnumServicesStatusExW.service_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_service_type, { "Service Type", "svcctl.EnumServicesStatusExW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_services, { "Services", "svcctl.EnumServicesStatusExW.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_EnumServicesStatusExW_state, { "State", "svcctl.EnumServicesStatusExW.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_dependencies, { "Dependencies", "svcctl.QUERY_SERVICE_CONFIG.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_displayname, { "Displayname", "svcctl.QUERY_SERVICE_CONFIG.displayname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_error_control, { "Error Control", "svcctl.QUERY_SERVICE_CONFIG.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_executablepath, { "Executablepath", "svcctl.QUERY_SERVICE_CONFIG.executablepath", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_loadordergroup, { "Loadordergroup", "svcctl.QUERY_SERVICE_CONFIG.loadordergroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_service_type, { "Service Type", "svcctl.QUERY_SERVICE_CONFIG.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_start_type, { "Start Type", "svcctl.QUERY_SERVICE_CONFIG.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_startname, { "Startname", "svcctl.QUERY_SERVICE_CONFIG.startname", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_QUERY_SERVICE_CONFIG_tag_id, { "Tag Id", "svcctl.QUERY_SERVICE_CONFIG.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_LOCK_STATUS_is_locked, { "Is Locked", "svcctl.SERVICE_LOCK_STATUS.is_locked", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_LOCK_STATUS_lock_duration, { "Lock Duration", "svcctl.SERVICE_LOCK_STATUS.lock_duration", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_LOCK_STATUS_lock_owner, { "Lock Owner", "svcctl.SERVICE_LOCK_STATUS.lock_owner", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_check_point, { "Check Point", "svcctl.SERVICE_STATUS_PROCESS.check_point", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_controls_accepted, { "Controls Accepted", "svcctl.SERVICE_STATUS_PROCESS.controls_accepted", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_process_id, { "Process Id", "svcctl.SERVICE_STATUS_PROCESS.process_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_service_exit_code, { "Service Exit Code", "svcctl.SERVICE_STATUS_PROCESS.service_exit_code", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_service_flags, { "Service Flags", "svcctl.SERVICE_STATUS_PROCESS.service_flags", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceFlags_vals), 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_state, { "State", "svcctl.SERVICE_STATUS_PROCESS.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceStatus_vals), 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_type, { "Type", "svcctl.SERVICE_STATUS_PROCESS.type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_wait_hint, { "Wait Hint", "svcctl.SERVICE_STATUS_PROCESS.wait_hint", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_PROCESS_win32_exit_code, { "Win32 Exit Code", "svcctl.SERVICE_STATUS_PROCESS.win32_exit_code", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_check_point, { "Check Point", "svcctl.SERVICE_STATUS.check_point", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_controls_accepted, { "Controls Accepted", "svcctl.SERVICE_STATUS.controls_accepted", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_service_exit_code, { "Service Exit Code", "svcctl.SERVICE_STATUS.service_exit_code", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_state, { "State", "svcctl.SERVICE_STATUS.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceStatus_vals), 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_type, { "Type", "svcctl.SERVICE_STATUS.type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_wait_hint, { "Wait Hint", "svcctl.SERVICE_STATUS.wait_hint", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_SERVICE_STATUS_win32_exit_code, { "Win32 Exit Code", "svcctl.SERVICE_STATUS.win32_exit_code", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, { &hf_svcctl_opnum, { "Operation", "svcctl.opnum", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_service_buffer_size, { "Buffer Size", "svcctl.services.buffer_size", FT_UINT32, BASE_DEC, NULL, 0, "NULL", HFILL }}, { &hf_svcctl_service_referent_id, { "Referent ID(offset)", "svcctl.ENUM_SERVICE_STATUSW.referent_id", FT_UINT32, BASE_DEC, NULL, 0, "NULL", HFILL }}, { &hf_svcctl_svcctl_ArgumentStringA_string, { "String", "svcctl.svcctl_ArgumentStringA.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ArgumentString_string, { "String", "svcctl.svcctl_ArgumentString.string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2A_info, { "Info", "svcctl.svcctl_ChangeServiceConfig2A.info", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2A_info_level, { "Info Level", "svcctl.svcctl_ChangeServiceConfig2A.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2A_service_handle, { "Service Handle", "svcctl.svcctl_ChangeServiceConfig2A.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2W_handle, { "Handle", "svcctl.svcctl_ChangeServiceConfig2W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2W_info, { "Info", "svcctl.svcctl_ChangeServiceConfig2W.info", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfig2W_info_level, { "Info Level", "svcctl.svcctl_ChangeServiceConfig2W.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_binary_path, { "Binary Path", "svcctl.svcctl_ChangeServiceConfigA.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_dependencies, { "Dependencies", "svcctl.svcctl_ChangeServiceConfigA.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_display_name, { "Display Name", "svcctl.svcctl_ChangeServiceConfigA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_error_control, { "Error Control", "svcctl.svcctl_ChangeServiceConfigA.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_load_order_group, { "Load Order Group", "svcctl.svcctl_ChangeServiceConfigA.load_order_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_password, { "Password", "svcctl.svcctl_ChangeServiceConfigA.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_service_handle, { "Service Handle", "svcctl.svcctl_ChangeServiceConfigA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_service_start_name, { "Service Start Name", "svcctl.svcctl_ChangeServiceConfigA.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_service_type, { "Service Type", "svcctl.svcctl_ChangeServiceConfigA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_start_type, { "Start Type", "svcctl.svcctl_ChangeServiceConfigA.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigA_tag_id, { "Tag Id", "svcctl.svcctl_ChangeServiceConfigA.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_binary_path, { "Binary Path", "svcctl.svcctl_ChangeServiceConfigW.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_dependencies, { "Dependencies", "svcctl.svcctl_ChangeServiceConfigW.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_display_name, { "Display Name", "svcctl.svcctl_ChangeServiceConfigW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_dwDependSize, { "DwDependSize", "svcctl.svcctl_ChangeServiceConfigW.dwDependSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_dwPwSize, { "DwPwSize", "svcctl.svcctl_ChangeServiceConfigW.dwPwSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_error_control, { "Error Control", "svcctl.svcctl_ChangeServiceConfigW.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_load_order_group, { "Load Order Group", "svcctl.svcctl_ChangeServiceConfigW.load_order_group", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_password, { "Password", "svcctl.svcctl_ChangeServiceConfigW.password", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_service_handle, { "Service Handle", "svcctl.svcctl_ChangeServiceConfigW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_service_start_name, { "Service Start Name", "svcctl.svcctl_ChangeServiceConfigW.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_service_type, { "Service Type", "svcctl.svcctl_ChangeServiceConfigW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_start_type, { "Start Type", "svcctl.svcctl_ChangeServiceConfigW.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ChangeServiceConfigW_tag_id, { "Tag Id", "svcctl.svcctl_ChangeServiceConfigW.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CloseServiceHandle_object_handle, { "Object Handle", "svcctl.svcctl_CloseServiceHandle.object_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ControlService_control, { "Control", "svcctl.svcctl_ControlService.control", FT_UINT32, BASE_DEC, VALS(svcctl_SERVICE_CONTROL_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ControlService_service_handle, { "Service Handle", "svcctl.svcctl_ControlService.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ControlService_service_status, { "Service Status", "svcctl.svcctl_ControlService.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE, { "SERVICE ACCEPT HARDWAREPROFILECHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_HARDWAREPROFILECHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_HARDWAREPROFILECHANGE_tfs), ( 0x00000020 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE, { "SERVICE ACCEPT NETBINDCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_NETBINDCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_NETBINDCHANGE_tfs), ( 0x00000010 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE, { "SERVICE ACCEPT PARAMCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_PARAMCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_PARAMCHANGE_tfs), ( 0x00000008 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PAUSE_CONTINUE, { "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 }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT, { "SERVICE ACCEPT POWEREVENT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_POWEREVENT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_POWEREVENT_tfs), ( 0x00000040 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN, { "SERVICE ACCEPT PRESHUTDOWN", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_PRESHUTDOWN", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_PRESHUTDOWN_tfs), ( 0x00000100 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE, { "SERVICE ACCEPT SESSIONCHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_SESSIONCHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_SESSIONCHANGE_tfs), ( 0x00000080 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN, { "SERVICE ACCEPT SHUTDOWN", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_SHUTDOWN", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_SHUTDOWN_tfs), ( 0x00000004 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP, { "SERVICE ACCEPT STOP", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_STOP", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_STOP_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE, { "SERVICE ACCEPT TIMECHANGE", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_TIMECHANGE", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_TIMECHANGE_tfs), ( 0x00000200 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT, { "SERVICE ACCEPT TRIGGEREVENT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_TRIGGEREVENT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_TRIGGEREVENT_tfs), ( 0x00000400 ), NULL, HFILL }}, { &hf_svcctl_svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT, { "SERVICE ACCEPT USERMODEREBOOT", "svcctl.svcctl_ControlsAccepted.SERVICE_ACCEPT_USERMODEREBOOT", FT_BOOLEAN, 32, TFS(&svcctl_ControlsAccepted_SERVICE_ACCEPT_USERMODEREBOOT_tfs), ( 0x00000800 ), NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_DisplayName, { "DisplayName", "svcctl.svcctl_CreateServiceA.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_LoadOrderGroupKey, { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceA.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_ServiceName, { "ServiceName", "svcctl.svcctl_CreateServiceA.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_binary_path, { "Binary Path", "svcctl.svcctl_CreateServiceA.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_dependencies, { "Dependencies", "svcctl.svcctl_CreateServiceA.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_dependencies_size, { "Dependencies Size", "svcctl.svcctl_CreateServiceA.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_desired_access, { "Desired Access", "svcctl.svcctl_CreateServiceA.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_error_control, { "Error Control", "svcctl.svcctl_CreateServiceA.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_password, { "Password", "svcctl.svcctl_CreateServiceA.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_password_size, { "Password Size", "svcctl.svcctl_CreateServiceA.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_scm_handle, { "Scm Handle", "svcctl.svcctl_CreateServiceA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_service_handle, { "Service Handle", "svcctl.svcctl_CreateServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_service_start_name, { "Service Start Name", "svcctl.svcctl_CreateServiceA.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_service_type, { "Service Type", "svcctl.svcctl_CreateServiceA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_start_type, { "Start Type", "svcctl.svcctl_CreateServiceA.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceA_tag_id, { "Tag Id", "svcctl.svcctl_CreateServiceA.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_DisplayName, { "DisplayName", "svcctl.svcctl_CreateServiceWOW64A.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_LoadOrderGroupKey, { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceWOW64A.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_ServiceName, { "ServiceName", "svcctl.svcctl_CreateServiceWOW64A.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_binary_path, { "Binary Path", "svcctl.svcctl_CreateServiceWOW64A.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_dependencies, { "Dependencies", "svcctl.svcctl_CreateServiceWOW64A.dependencies", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_dependencies_size, { "Dependencies Size", "svcctl.svcctl_CreateServiceWOW64A.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_desired_access, { "Desired Access", "svcctl.svcctl_CreateServiceWOW64A.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_error_control, { "Error Control", "svcctl.svcctl_CreateServiceWOW64A.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_handle, { "Handle", "svcctl.svcctl_CreateServiceWOW64A.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_password, { "Password", "svcctl.svcctl_CreateServiceWOW64A.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_password_size, { "Password Size", "svcctl.svcctl_CreateServiceWOW64A.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_scm_handle, { "Scm Handle", "svcctl.svcctl_CreateServiceWOW64A.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_service_start_name, { "Service Start Name", "svcctl.svcctl_CreateServiceWOW64A.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_service_type, { "Service Type", "svcctl.svcctl_CreateServiceWOW64A.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_start_type, { "Start Type", "svcctl.svcctl_CreateServiceWOW64A.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64A_tag_id, { "Tag Id", "svcctl.svcctl_CreateServiceWOW64A.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_DisplayName, { "DisplayName", "svcctl.svcctl_CreateServiceWOW64W.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_LoadOrderGroupKey, { "LoadOrderGroupKey", "svcctl.svcctl_CreateServiceWOW64W.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_ServiceName, { "ServiceName", "svcctl.svcctl_CreateServiceWOW64W.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_binary_path, { "Binary Path", "svcctl.svcctl_CreateServiceWOW64W.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_dependencies, { "Dependencies", "svcctl.svcctl_CreateServiceWOW64W.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_dependencies_size, { "Dependencies Size", "svcctl.svcctl_CreateServiceWOW64W.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_desired_access, { "Desired Access", "svcctl.svcctl_CreateServiceWOW64W.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_error_control, { "Error Control", "svcctl.svcctl_CreateServiceWOW64W.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_handle, { "Handle", "svcctl.svcctl_CreateServiceWOW64W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_password, { "Password", "svcctl.svcctl_CreateServiceWOW64W.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_password_size, { "Password Size", "svcctl.svcctl_CreateServiceWOW64W.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_scm_handle, { "Scm Handle", "svcctl.svcctl_CreateServiceWOW64W.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_service_start_name, { "Service Start Name", "svcctl.svcctl_CreateServiceWOW64W.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_service_type, { "Service Type", "svcctl.svcctl_CreateServiceWOW64W.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_start_type, { "Start Type", "svcctl.svcctl_CreateServiceWOW64W.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceWOW64W_tag_id, { "Tag Id", "svcctl.svcctl_CreateServiceWOW64W.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_DisplayName, { "DisplayName", "svcctl.svcctl_CreateServiceW.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_LoadOrderGroup, { "LoadOrderGroup", "svcctl.svcctl_CreateServiceW.LoadOrderGroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_ServiceName, { "ServiceName", "svcctl.svcctl_CreateServiceW.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_binary_path, { "Binary Path", "svcctl.svcctl_CreateServiceW.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_dependencies, { "Dependencies", "svcctl.svcctl_CreateServiceW.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_dependencies_size, { "Dependencies Size", "svcctl.svcctl_CreateServiceW.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_desired_access, { "Desired Access", "svcctl.svcctl_CreateServiceW.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_error_control, { "Error Control", "svcctl.svcctl_CreateServiceW.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_password, { "Password", "svcctl.svcctl_CreateServiceW.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_password_size, { "Password Size", "svcctl.svcctl_CreateServiceW.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_scm_handle, { "Scm Handle", "svcctl.svcctl_CreateServiceW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_service_handle, { "Service Handle", "svcctl.svcctl_CreateServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_service_start_name, { "Service Start Name", "svcctl.svcctl_CreateServiceW.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_service_type, { "Service Type", "svcctl.svcctl_CreateServiceW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_start_type, { "Start Type", "svcctl.svcctl_CreateServiceW.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateServiceW_tag_id, { "Tag Id", "svcctl.svcctl_CreateServiceW.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_DisplayName, { "DisplayName", "svcctl.svcctl_CreateWowService.DisplayName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_LoadOrderGroupKey, { "LoadOrderGroupKey", "svcctl.svcctl_CreateWowService.LoadOrderGroupKey", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_ServiceName, { "ServiceName", "svcctl.svcctl_CreateWowService.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_binary_path, { "Binary Path", "svcctl.svcctl_CreateWowService.binary_path", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_dependencies, { "Dependencies", "svcctl.svcctl_CreateWowService.dependencies", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_dependencies_size, { "Dependencies Size", "svcctl.svcctl_CreateWowService.dependencies_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_desired_access, { "Desired Access", "svcctl.svcctl_CreateWowService.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_error_control, { "Error Control", "svcctl.svcctl_CreateWowService.error_control", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ErrorControl_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_handle, { "Handle", "svcctl.svcctl_CreateWowService.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_password, { "Password", "svcctl.svcctl_CreateWowService.password", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_password_size, { "Password Size", "svcctl.svcctl_CreateWowService.password_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_scm_handle, { "Scm Handle", "svcctl.svcctl_CreateWowService.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_service_start_name, { "Service Start Name", "svcctl.svcctl_CreateWowService.service_start_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_service_type, { "Service Type", "svcctl.svcctl_CreateWowService.service_type", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_service_wow_type, { "Service Wow Type", "svcctl.svcctl_CreateWowService.service_wow_type", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_start_type, { "Start Type", "svcctl.svcctl_CreateWowService.start_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StartType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_CreateWowService_tag_id, { "Tag Id", "svcctl.svcctl_CreateWowService.tag_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_DeleteService_service_handle, { "Service Handle", "svcctl.svcctl_DeleteService.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_needed, { "Needed", "svcctl.svcctl_EnumDependentServicesA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_offered, { "Offered", "svcctl.svcctl_EnumDependentServicesA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_service_handle, { "Service Handle", "svcctl.svcctl_EnumDependentServicesA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_service_status, { "Service Status", "svcctl.svcctl_EnumDependentServicesA.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_services_returned, { "Services Returned", "svcctl.svcctl_EnumDependentServicesA.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesA_state, { "State", "svcctl.svcctl_EnumDependentServicesA.state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_bytesneeded, { "Bytesneeded", "svcctl.svcctl_EnumDependentServicesW.bytesneeded", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_offered, { "Offered", "svcctl.svcctl_EnumDependentServicesW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_service_handle, { "Service Handle", "svcctl.svcctl_EnumDependentServicesW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_service_state, { "Service State", "svcctl.svcctl_EnumDependentServicesW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_service_status, { "Service Status", "svcctl.svcctl_EnumDependentServicesW.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumDependentServicesW_services_returned, { "Services Returned", "svcctl.svcctl_EnumDependentServicesW.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_ResumeIndex, { "ResumeIndex", "svcctl.svcctl_EnumServiceGroupW.ResumeIndex", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_cbBufSize, { "CbBufSize", "svcctl.svcctl_EnumServiceGroupW.cbBufSize", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_lpBuffer, { "LpBuffer", "svcctl.svcctl_EnumServiceGroupW.lpBuffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_lpServicesReturned, { "LpServicesReturned", "svcctl.svcctl_EnumServiceGroupW.lpServicesReturned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_pcbBytesNeeded, { "PcbBytesNeeded", "svcctl.svcctl_EnumServiceGroupW.pcbBytesNeeded", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_pszGroupName, { "PszGroupName", "svcctl.svcctl_EnumServiceGroupW.pszGroupName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_scm_handle, { "Scm Handle", "svcctl.svcctl_EnumServiceGroupW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_service_state, { "Service State", "svcctl.svcctl_EnumServiceGroupW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServiceGroupW_service_type, { "Service Type", "svcctl.svcctl_EnumServiceGroupW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_needed, { "Needed", "svcctl.svcctl_EnumServicesStatusA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_offered, { "Offered", "svcctl.svcctl_EnumServicesStatusA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_resume_handle, { "Resume Handle", "svcctl.svcctl_EnumServicesStatusA.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_scm_handle, { "Scm Handle", "svcctl.svcctl_EnumServicesStatusA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_service, { "Service", "svcctl.svcctl_EnumServicesStatusA.service", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_service_state, { "Service State", "svcctl.svcctl_EnumServicesStatusA.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_service_type, { "Service Type", "svcctl.svcctl_EnumServicesStatusA.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusA_services_returned, { "Services Returned", "svcctl.svcctl_EnumServicesStatusA.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_bytes_needed, { "Bytes Needed", "svcctl.svcctl_EnumServicesStatusW.bytes_needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_offered, { "Offered", "svcctl.svcctl_EnumServicesStatusW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_resume_index, { "Resume Index", "svcctl.svcctl_EnumServicesStatusW.resume_index", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_scm_handle, { "Scm Handle", "svcctl.svcctl_EnumServicesStatusW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_service_state, { "Service State", "svcctl.svcctl_EnumServicesStatusW.service_state", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceState_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_service_type, { "Service Type", "svcctl.svcctl_EnumServicesStatusW.service_type", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ServiceType_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_services, { "Services", "svcctl.svcctl_EnumServicesStatusW.services", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_EnumServicesStatusW_services_returned, { "Services Returned", "svcctl.svcctl_EnumServicesStatusW.services_returned", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetCurrentGroupeStateW_handle, { "Handle", "svcctl.svcctl_GetCurrentGroupeStateW.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetCurrentGroupeStateW_lpLoadOrderGroup, { "LpLoadOrderGroup", "svcctl.svcctl_GetCurrentGroupeStateW.lpLoadOrderGroup", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetCurrentGroupeStateW_state, { "State", "svcctl.svcctl_GetCurrentGroupeStateW.state", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameA_display_name, { "Display Name", "svcctl.svcctl_GetServiceDisplayNameA.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameA_display_name_length, { "Display Name Length", "svcctl.svcctl_GetServiceDisplayNameA.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameA_handle, { "Handle", "svcctl.svcctl_GetServiceDisplayNameA.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameA_service_name, { "Service Name", "svcctl.svcctl_GetServiceDisplayNameA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameW_display_name, { "Display Name", "svcctl.svcctl_GetServiceDisplayNameW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameW_display_name_length, { "Display Name Length", "svcctl.svcctl_GetServiceDisplayNameW.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameW_scm_handle, { "Scm Handle", "svcctl.svcctl_GetServiceDisplayNameW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceDisplayNameW_service_name, { "Service Name", "svcctl.svcctl_GetServiceDisplayNameW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameA_display_name_length, { "Display Name Length", "svcctl.svcctl_GetServiceKeyNameA.display_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameA_key_name, { "Key Name", "svcctl.svcctl_GetServiceKeyNameA.key_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameA_scm_handle, { "Scm Handle", "svcctl.svcctl_GetServiceKeyNameA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameA_service_name, { "Service Name", "svcctl.svcctl_GetServiceKeyNameA.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameW_display_name, { "Display Name", "svcctl.svcctl_GetServiceKeyNameW.display_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameW_scm_handle, { "Scm Handle", "svcctl.svcctl_GetServiceKeyNameW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameW_service_name, { "Service Name", "svcctl.svcctl_GetServiceKeyNameW.service_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_GetServiceKeyNameW_service_name_length, { "Service Name Length", "svcctl.svcctl_GetServiceKeyNameW.service_name_length", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_LockServiceDatabase_lock_handle, { "Lock Handle", "svcctl.svcctl_LockServiceDatabase.lock_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_LockServiceDatabase_scm_handle, { "Scm Handle", "svcctl.svcctl_LockServiceDatabase.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ALL_ACCESS, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CONNECT, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_CREATE_SERVICE, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_ENUMERATE_SERVICE, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_LOCK, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, { "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 }}, { &hf_svcctl_svcctl_MgrAccessMask_SC_RIGHT_MGR_QUERY_LOCK_STATUS, { "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 }}, { &hf_svcctl_svcctl_NotifyBootConfigStatus_boot_acceptable, { "Boot Acceptable", "svcctl.svcctl_NotifyBootConfigStatus.boot_acceptable", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_NotifyBootConfigStatus_machine_name, { "Machine Name", "svcctl.svcctl_NotifyBootConfigStatus.machine_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManager2_database_name, { "Database Name", "svcctl.svcctl_OpenSCManager2.database_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManager2_desired_access, { "Desired Access", "svcctl.svcctl_OpenSCManager2.desired_access", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManager2_handle, { "Handle", "svcctl.svcctl_OpenSCManager2.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerA_DatabaseName, { "DatabaseName", "svcctl.svcctl_OpenSCManagerA.DatabaseName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerA_MachineName, { "MachineName", "svcctl.svcctl_OpenSCManagerA.MachineName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerA_access_mask, { "Access Mask", "svcctl.svcctl_OpenSCManagerA.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerA_scm_handle, { "Scm Handle", "svcctl.svcctl_OpenSCManagerA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerW_DatabaseName, { "DatabaseName", "svcctl.svcctl_OpenSCManagerW.DatabaseName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerW_MachineName, { "MachineName", "svcctl.svcctl_OpenSCManagerW.MachineName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerW_access_mask, { "Access Mask", "svcctl.svcctl_OpenSCManagerW.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenSCManagerW_scm_handle, { "Scm Handle", "svcctl.svcctl_OpenSCManagerW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceA_ServiceName, { "ServiceName", "svcctl.svcctl_OpenServiceA.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceA_access_mask, { "Access Mask", "svcctl.svcctl_OpenServiceA.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceA_scm_handle, { "Scm Handle", "svcctl.svcctl_OpenServiceA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceA_service_handle, { "Service Handle", "svcctl.svcctl_OpenServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceW_ServiceName, { "ServiceName", "svcctl.svcctl_OpenServiceW.ServiceName", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceW_access_mask, { "Access Mask", "svcctl.svcctl_OpenServiceW.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceW_scm_handle, { "Scm Handle", "svcctl.svcctl_OpenServiceW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_OpenServiceW_service_handle, { "Service Handle", "svcctl.svcctl_OpenServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2A_buffer, { "Buffer", "svcctl.svcctl_QueryServiceConfig2A.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2A_handle, { "Handle", "svcctl.svcctl_QueryServiceConfig2A.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2A_info_level, { "Info Level", "svcctl.svcctl_QueryServiceConfig2A.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ConfigLevel_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2A_needed, { "Needed", "svcctl.svcctl_QueryServiceConfig2A.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2A_offered, { "Offered", "svcctl.svcctl_QueryServiceConfig2A.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2W_buffer, { "Buffer", "svcctl.svcctl_QueryServiceConfig2W.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2W_handle, { "Handle", "svcctl.svcctl_QueryServiceConfig2W.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2W_info_level, { "Info Level", "svcctl.svcctl_QueryServiceConfig2W.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_ConfigLevel_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2W_needed, { "Needed", "svcctl.svcctl_QueryServiceConfig2W.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfig2W_offered, { "Offered", "svcctl.svcctl_QueryServiceConfig2W.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigA_needed, { "Needed", "svcctl.svcctl_QueryServiceConfigA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigA_offered, { "Offered", "svcctl.svcctl_QueryServiceConfigA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigA_query, { "Query", "svcctl.svcctl_QueryServiceConfigA.query", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigA_service_handle, { "Service Handle", "svcctl.svcctl_QueryServiceConfigA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigEx_info_level, { "Info Level", "svcctl.svcctl_QueryServiceConfigEx.info_level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigEx_service_handle, { "Service Handle", "svcctl.svcctl_QueryServiceConfigEx.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigW_needed, { "Needed", "svcctl.svcctl_QueryServiceConfigW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigW_offered, { "Offered", "svcctl.svcctl_QueryServiceConfigW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigW_service_config, { "Service Config", "svcctl.svcctl_QueryServiceConfigW.service_config", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceConfigW_service_handle, { "Service Handle", "svcctl.svcctl_QueryServiceConfigW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusA_lock_status, { "Lock Status", "svcctl.svcctl_QueryServiceLockStatusA.lock_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusA_needed, { "Needed", "svcctl.svcctl_QueryServiceLockStatusA.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusA_offered, { "Offered", "svcctl.svcctl_QueryServiceLockStatusA.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusA_scm_handle, { "Scm Handle", "svcctl.svcctl_QueryServiceLockStatusA.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusW_lock_status, { "Lock Status", "svcctl.svcctl_QueryServiceLockStatusW.lock_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusW_needed, { "Needed", "svcctl.svcctl_QueryServiceLockStatusW.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusW_offered, { "Offered", "svcctl.svcctl_QueryServiceLockStatusW.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceLockStatusW_scm_handle, { "Scm Handle", "svcctl.svcctl_QueryServiceLockStatusW.scm_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceObjectSecurity_bytes_needed, { "Bytes Needed", "svcctl.svcctl_QueryServiceObjectSecurity.bytes_needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceObjectSecurity_offered, { "Offered", "svcctl.svcctl_QueryServiceObjectSecurity.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceObjectSecurity_security_descriptor, { "Security Descriptor", "svcctl.svcctl_QueryServiceObjectSecurity.security_descriptor", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceObjectSecurity_security_flags, { "Security Flags", "svcctl.svcctl_QueryServiceObjectSecurity.security_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceObjectSecurity_service_handle, { "Service Handle", "svcctl.svcctl_QueryServiceObjectSecurity.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatusEx_buffer, { "Buffer", "svcctl.svcctl_QueryServiceStatusEx.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatusEx_handle, { "Handle", "svcctl.svcctl_QueryServiceStatusEx.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatusEx_info_level, { "Info Level", "svcctl.svcctl_QueryServiceStatusEx.info_level", FT_UINT32, BASE_DEC, VALS(svcctl_svcctl_StatusLevel_vals), 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatusEx_needed, { "Needed", "svcctl.svcctl_QueryServiceStatusEx.needed", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatusEx_offered, { "Offered", "svcctl.svcctl_QueryServiceStatusEx.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatus_service_handle, { "Service Handle", "svcctl.svcctl_QueryServiceStatus.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_QueryServiceStatus_service_status, { "Service Status", "svcctl.svcctl_QueryServiceStatus.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsA_handle, { "Handle", "svcctl.svcctl_SCSetServiceBitsA.handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsA_lpString, { "LpString", "svcctl.svcctl_SCSetServiceBitsA.lpString", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsA_service_bits, { "Service Bits", "svcctl.svcctl_SCSetServiceBitsA.service_bits", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsA_set_bits_on, { "Set Bits On", "svcctl.svcctl_SCSetServiceBitsA.set_bits_on", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsA_update_immediately, { "Update Immediately", "svcctl.svcctl_SCSetServiceBitsA.update_immediately", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsW_lpString, { "LpString", "svcctl.svcctl_SCSetServiceBitsW.lpString", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsW_service_bits, { "Service Bits", "svcctl.svcctl_SCSetServiceBitsW.service_bits", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsW_service_handle, { "Service Handle", "svcctl.svcctl_SCSetServiceBitsW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsW_set_bits_on, { "Set Bits On", "svcctl.svcctl_SCSetServiceBitsW.set_bits_on", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SCSetServiceBitsW_update_immediately, { "Update Immediately", "svcctl.svcctl_SCSetServiceBitsW.update_immediately", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_CHANGE_CONFIG, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_INTERROGATE, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_PAUSE_CONTINUE, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_CONFIG, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_QUERY_STATUS, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_START, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_STOP, { "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 }}, { &hf_svcctl_svcctl_ServiceAccessMask_SC_RIGHT_SVC_USER_DEFINED_CONTROL, { "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 }}, { &hf_svcctl_svcctl_SetServiceObjectSecurity_offered, { "Offered", "svcctl.svcctl_SetServiceObjectSecurity.offered", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SetServiceObjectSecurity_security_descriptor, { "Security Descriptor", "svcctl.svcctl_SetServiceObjectSecurity.security_descriptor", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SetServiceObjectSecurity_security_flags, { "Security Flags", "svcctl.svcctl_SetServiceObjectSecurity.security_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SetServiceObjectSecurity_service_handle, { "Service Handle", "svcctl.svcctl_SetServiceObjectSecurity.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SetServiceStatus_service_handle, { "Service Handle", "svcctl.svcctl_SetServiceStatus.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_SetServiceStatus_service_status, { "Service Status", "svcctl.svcctl_SetServiceStatus.service_status", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceA_Arguments, { "Arguments", "svcctl.svcctl_StartServiceA.Arguments", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceA_NumArgs, { "NumArgs", "svcctl.svcctl_StartServiceA.NumArgs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceA_service_handle, { "Service Handle", "svcctl.svcctl_StartServiceA.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceW_Arguments, { "Arguments", "svcctl.svcctl_StartServiceW.Arguments", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceW_NumArgs, { "NumArgs", "svcctl.svcctl_StartServiceW.NumArgs", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_StartServiceW_service_handle, { "Service Handle", "svcctl.svcctl_StartServiceW.service_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_svcctl_UnlockServiceDatabase_lock_handle, { "Lock Handle", "svcctl.svcctl_UnlockServiceDatabase.lock_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_svcctl_werror, { "Windows Error", "svcctl.werror", FT_UINT32, BASE_HEX|BASE_EXT_STRING, &WERR_errors_ext, 0, NULL, HFILL }}, }; static int *ett[] = { &ett_svcctl_service, &ett_svcctl_service_name, &ett_svcctl_display_name, &ett_dcerpc_svcctl, &ett_svcctl_security_secinfo, &ett_svcctl_SERVICE_LOCK_STATUS, &ett_svcctl_svcctl_ControlsAccepted, &ett_svcctl_SERVICE_STATUS, &ett_svcctl_SERVICE_STATUS_PROCESS, &ett_svcctl_ENUM_SERVICE_STATUSW, &ett_svcctl_ENUM_SERVICE_STATUSA, &ett_svcctl_svcctl_MgrAccessMask, &ett_svcctl_svcctl_ServiceAccessMask, &ett_svcctl_QUERY_SERVICE_CONFIG, &ett_svcctl_svcctl_ArgumentString, &ett_svcctl_svcctl_ArgumentStringA, }; proto_dcerpc_svcctl = proto_register_protocol("Service Control", "SVCCTL", "svcctl"); proto_register_field_array(proto_dcerpc_svcctl, hf, array_length (hf)); proto_register_subtree_array(ett, array_length(ett)); } void proto_reg_handoff_dcerpc_svcctl(void) { dcerpc_init_uuid(proto_dcerpc_svcctl, ett_dcerpc_svcctl, &uuid_dcerpc_svcctl, ver_dcerpc_svcctl, svcctl_dissectors, hf_svcctl_opnum); }