| // Copyright © 2015, Peter Atashian |
| // Licensed under the MIT License <LICENSE.md> |
| //! Header file for the Service Control Manager |
| //80 |
| pub const SERVICE_NO_CHANGE: ::DWORD = 0xffffffff; |
| pub const SERVICE_ACTIVE: ::DWORD = 0x00000001; |
| pub const SERVICE_INACTIVE: ::DWORD = 0x00000002; |
| pub const SERVICE_STATE_ALL: ::DWORD = SERVICE_ACTIVE | SERVICE_INACTIVE; |
| pub const SERVICE_CONTROL_STOP: ::DWORD = 0x00000001; |
| pub const SERVICE_CONTROL_PAUSE: ::DWORD = 0x00000002; |
| pub const SERVICE_CONTROL_CONTINUE: ::DWORD = 0x00000003; |
| pub const SERVICE_CONTROL_INTERROGATE: ::DWORD = 0x00000004; |
| pub const SERVICE_CONTROL_SHUTDOWN: ::DWORD = 0x00000005; |
| pub const SERVICE_CONTROL_PARAMCHANGE: ::DWORD = 0x00000006; |
| pub const SERVICE_CONTROL_NETBINDADD: ::DWORD = 0x00000007; |
| pub const SERVICE_CONTROL_NETBINDREMOVE: ::DWORD = 0x00000008; |
| pub const SERVICE_CONTROL_NETBINDENABLE: ::DWORD = 0x00000009; |
| pub const SERVICE_CONTROL_NETBINDDISABLE: ::DWORD = 0x0000000A; |
| pub const SERVICE_CONTROL_DEVICEEVENT: ::DWORD = 0x0000000B; |
| pub const SERVICE_CONTROL_HARDWAREPROFILECHANGE: ::DWORD = 0x0000000C; |
| pub const SERVICE_CONTROL_POWEREVENT: ::DWORD = 0x0000000D; |
| pub const SERVICE_CONTROL_SESSIONCHANGE: ::DWORD = 0x0000000E; |
| pub const SERVICE_CONTROL_PRESHUTDOWN: ::DWORD = 0x0000000F; |
| pub const SERVICE_CONTROL_TIMECHANGE: ::DWORD = 0x00000010; |
| pub const SERVICE_CONTROL_TRIGGEREVENT: ::DWORD = 0x00000020; |
| pub const SERVICE_STOPPED: ::DWORD = 0x00000001; |
| pub const SERVICE_START_PENDING: ::DWORD = 0x00000002; |
| pub const SERVICE_STOP_PENDING: ::DWORD = 0x00000003; |
| pub const SERVICE_RUNNING: ::DWORD = 0x00000004; |
| pub const SERVICE_CONTINUE_PENDING: ::DWORD = 0x00000005; |
| pub const SERVICE_PAUSE_PENDING: ::DWORD = 0x00000006; |
| pub const SERVICE_PAUSED: ::DWORD = 0x00000007; |
| pub const SERVICE_ACCEPT_STOP: ::DWORD = 0x00000001; |
| pub const SERVICE_ACCEPT_PAUSE_CONTINUE: ::DWORD = 0x00000002; |
| pub const SERVICE_ACCEPT_SHUTDOWN: ::DWORD = 0x00000004; |
| pub const SERVICE_ACCEPT_PARAMCHANGE: ::DWORD = 0x00000008; |
| pub const SERVICE_ACCEPT_NETBINDCHANGE: ::DWORD = 0x00000010; |
| pub const SERVICE_ACCEPT_HARDWAREPROFILECHANGE: ::DWORD = 0x00000020; |
| pub const SERVICE_ACCEPT_POWEREVENT: ::DWORD = 0x00000040; |
| pub const SERVICE_ACCEPT_SESSIONCHANGE: ::DWORD = 0x00000080; |
| pub const SERVICE_ACCEPT_PRESHUTDOWN: ::DWORD = 0x00000100; |
| pub const SERVICE_ACCEPT_TIMECHANGE: ::DWORD = 0x00000200; |
| pub const SERVICE_ACCEPT_TRIGGEREVENT: ::DWORD = 0x00000400; |
| pub const SC_MANAGER_CONNECT: ::DWORD = 0x0001; |
| pub const SC_MANAGER_CREATE_SERVICE: ::DWORD = 0x0002; |
| pub const SC_MANAGER_ENUMERATE_SERVICE: ::DWORD = 0x0004; |
| pub const SC_MANAGER_LOCK: ::DWORD = 0x0008; |
| pub const SC_MANAGER_QUERY_LOCK_STATUS: ::DWORD = 0x0010; |
| pub const SC_MANAGER_MODIFY_BOOT_CONFIG: ::DWORD = 0x0020; |
| pub const SC_MANAGER_ALL_ACCESS: ::DWORD = ::STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT |
| | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK |
| | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG; |
| pub const SERVICE_QUERY_CONFIG: ::DWORD = 0x0001; |
| pub const SERVICE_CHANGE_CONFIG: ::DWORD = 0x0002; |
| pub const SERVICE_QUERY_STATUS: ::DWORD = 0x0004; |
| pub const SERVICE_ENUMERATE_DEPENDENTS: ::DWORD = 0x0008; |
| pub const SERVICE_START: ::DWORD = 0x0010; |
| pub const SERVICE_STOP: ::DWORD = 0x0020; |
| pub const SERVICE_PAUSE_CONTINUE: ::DWORD = 0x0040; |
| pub const SERVICE_INTERROGATE: ::DWORD = 0x0080; |
| pub const SERVICE_USER_DEFINED_CONTROL: ::DWORD = 0x0100; |
| pub const SERVICE_ALL_ACCESS: ::DWORD = ::STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG |
| | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START |
| | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL; |
| pub const SERVICE_RUNS_IN_SYSTEM_PROCESS: ::DWORD = 0x00000001; |
| pub const SERVICE_CONFIG_DESCRIPTION: ::DWORD = 1; |
| pub const SERVICE_CONFIG_FAILURE_ACTIONS: ::DWORD = 2; |
| pub const SERVICE_CONFIG_DELAYED_AUTO_START_INFO: ::DWORD = 3; |
| pub const SERVICE_CONFIG_FAILURE_ACTIONS_FLAG: ::DWORD = 4; |
| pub const SERVICE_CONFIG_SERVICE_SID_INFO: ::DWORD = 5; |
| pub const SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO: ::DWORD = 6; |
| pub const SERVICE_CONFIG_PRESHUTDOWN_INFO: ::DWORD = 7; |
| pub const SERVICE_CONFIG_TRIGGER_INFO: ::DWORD = 8; |
| pub const SERVICE_CONFIG_PREFERRED_NODE: ::DWORD = 9; |
| pub const SERVICE_CONFIG_LAUNCH_PROTECTED: ::DWORD = 12; |
| pub const SERVICE_NOTIFY_STATUS_CHANGE_1: ::DWORD = 1; |
| pub const SERVICE_NOTIFY_STATUS_CHANGE_2: ::DWORD = 2; |
| pub const SERVICE_NOTIFY_STATUS_CHANGE: ::DWORD = SERVICE_NOTIFY_STATUS_CHANGE_2; |
| pub const SERVICE_NOTIFY_STOPPED: ::DWORD = 0x00000001; |
| pub const SERVICE_NOTIFY_START_PENDING: ::DWORD = 0x00000002; |
| pub const SERVICE_NOTIFY_STOP_PENDING: ::DWORD = 0x00000004; |
| pub const SERVICE_NOTIFY_RUNNING: ::DWORD = 0x00000008; |
| pub const SERVICE_NOTIFY_CONTINUE_PENDING: ::DWORD = 0x00000010; |
| pub const SERVICE_NOTIFY_PAUSE_PENDING: ::DWORD = 0x00000020; |
| pub const SERVICE_NOTIFY_PAUSED: ::DWORD = 0x00000040; |
| pub const SERVICE_NOTIFY_CREATED: ::DWORD = 0x00000080; |
| pub const SERVICE_NOTIFY_DELETED: ::DWORD = 0x00000100; |
| pub const SERVICE_NOTIFY_DELETE_PENDING: ::DWORD = 0x00000200; |
| pub const SERVICE_STOP_REASON_FLAG_MIN: ::DWORD = 0x00000000; |
| pub const SERVICE_STOP_REASON_FLAG_UNPLANNED: ::DWORD = 0x10000000; |
| pub const SERVICE_STOP_REASON_FLAG_CUSTOM: ::DWORD = 0x20000000; |
| pub const SERVICE_STOP_REASON_FLAG_PLANNED: ::DWORD = 0x40000000; |
| pub const SERVICE_STOP_REASON_FLAG_MAX: ::DWORD = 0x80000000; |
| pub const SERVICE_STOP_REASON_MAJOR_MIN: ::DWORD = 0x00000000; |
| pub const SERVICE_STOP_REASON_MAJOR_OTHER: ::DWORD = 0x00010000; |
| pub const SERVICE_STOP_REASON_MAJOR_HARDWARE: ::DWORD = 0x00020000; |
| pub const SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM: ::DWORD = 0x00030000; |
| pub const SERVICE_STOP_REASON_MAJOR_SOFTWARE: ::DWORD = 0x00040000; |
| pub const SERVICE_STOP_REASON_MAJOR_APPLICATION: ::DWORD = 0x00050000; |
| pub const SERVICE_STOP_REASON_MAJOR_NONE: ::DWORD = 0x00060000; |
| pub const SERVICE_STOP_REASON_MAJOR_MAX: ::DWORD = 0x00070000; |
| pub const SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM: ::DWORD = 0x00400000; |
| pub const SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM: ::DWORD = 0x00ff0000; |
| pub const SERVICE_STOP_REASON_MINOR_MIN: ::DWORD = 0x00000000; |
| pub const SERVICE_STOP_REASON_MINOR_OTHER: ::DWORD = 0x00000001; |
| pub const SERVICE_STOP_REASON_MINOR_MAINTENANCE: ::DWORD = 0x00000002; |
| pub const SERVICE_STOP_REASON_MINOR_INSTALLATION: ::DWORD = 0x00000003; |
| pub const SERVICE_STOP_REASON_MINOR_UPGRADE: ::DWORD = 0x00000004; |
| pub const SERVICE_STOP_REASON_MINOR_RECONFIG: ::DWORD = 0x00000005; |
| pub const SERVICE_STOP_REASON_MINOR_HUNG: ::DWORD = 0x00000006; |
| pub const SERVICE_STOP_REASON_MINOR_UNSTABLE: ::DWORD = 0x00000007; |
| pub const SERVICE_STOP_REASON_MINOR_DISK: ::DWORD = 0x00000008; |
| pub const SERVICE_STOP_REASON_MINOR_NETWORKCARD: ::DWORD = 0x00000009; |
| pub const SERVICE_STOP_REASON_MINOR_ENVIRONMENT: ::DWORD = 0x0000000a; |
| pub const SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER: ::DWORD = 0x0000000b; |
| pub const SERVICE_STOP_REASON_MINOR_OTHERDRIVER: ::DWORD = 0x0000000c; |
| pub const SERVICE_STOP_REASON_MINOR_SERVICEPACK: ::DWORD = 0x0000000d; |
| pub const SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE: ::DWORD = 0x0000000e; |
| pub const SERVICE_STOP_REASON_MINOR_SECURITYFIX: ::DWORD = 0x0000000f; |
| pub const SERVICE_STOP_REASON_MINOR_SECURITY: ::DWORD = 0x00000010; |
| pub const SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY: ::DWORD = 0x00000011; |
| pub const SERVICE_STOP_REASON_MINOR_WMI: ::DWORD = 0x00000012; |
| pub const SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL: ::DWORD = 0x00000013; |
| pub const SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL: ::DWORD = 0x00000014; |
| pub const SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL: ::DWORD = 0x00000015; |
| pub const SERVICE_STOP_REASON_MINOR_MMC: ::DWORD = 0x00000016; |
| pub const SERVICE_STOP_REASON_MINOR_NONE: ::DWORD = 0x00000017; |
| pub const SERVICE_STOP_REASON_MINOR_MAX: ::DWORD = 0x00000018; |
| pub const SERVICE_STOP_REASON_MINOR_MIN_CUSTOM: ::DWORD = 0x00000100; |
| pub const SERVICE_STOP_REASON_MINOR_MAX_CUSTOM: ::DWORD = 0x0000FFFF; |
| pub const SERVICE_CONTROL_STATUS_REASON_INFO: ::DWORD = 1; |
| pub const SERVICE_SID_TYPE_NONE: ::DWORD = 0x00000000; |
| pub const SERVICE_SID_TYPE_UNRESTRICTED: ::DWORD = 0x00000001; |
| pub const SERVICE_SID_TYPE_RESTRICTED: ::DWORD = 0x00000002 | SERVICE_SID_TYPE_UNRESTRICTED; |
| pub const SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL: ::DWORD = 1; |
| pub const SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY: ::DWORD = 2; |
| pub const SERVICE_TRIGGER_TYPE_DOMAIN_JOIN: ::DWORD = 3; |
| pub const SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT: ::DWORD = 4; |
| pub const SERVICE_TRIGGER_TYPE_GROUP_POLICY: ::DWORD = 5; |
| pub const SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT: ::DWORD = 6; |
| pub const SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE: ::DWORD = 7; |
| pub const SERVICE_TRIGGER_TYPE_CUSTOM: ::DWORD = 20; |
| pub const SERVICE_TRIGGER_DATA_TYPE_BINARY: ::DWORD = 1; |
| pub const SERVICE_TRIGGER_DATA_TYPE_STRING: ::DWORD = 2; |
| pub const SERVICE_TRIGGER_DATA_TYPE_LEVEL: ::DWORD = 3; |
| pub const SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY: ::DWORD = 4; |
| pub const SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL: ::DWORD = 5; |
| pub const SERVICE_START_REASON_DEMAND: ::DWORD = 0x00000001; |
| pub const SERVICE_START_REASON_AUTO: ::DWORD = 0x00000002; |
| pub const SERVICE_START_REASON_TRIGGER: ::DWORD = 0x00000004; |
| pub const SERVICE_START_REASON_RESTART_ON_FAILURE: ::DWORD = 0x00000008; |
| pub const SERVICE_START_REASON_DELAYEDAUTO: ::DWORD = 0x00000010; |
| pub const SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON: ::DWORD = 1; |
| pub const SERVICE_LAUNCH_PROTECTED_NONE: ::DWORD = 0; |
| pub const SERVICE_LAUNCH_PROTECTED_WINDOWS: ::DWORD = 1; |
| pub const SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT: ::DWORD = 2; |
| pub const SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT: ::DWORD = 3; |
| //678 |
| DECLARE_HANDLE!(SC_HANDLE, SC_HANDLE__); |
| pub type LPSC_HANDLE = *mut SC_HANDLE; |
| DECLARE_HANDLE!(SERVICE_STATUS_HANDLE, SERVICE_STATUS_HANDLE__); |
| ENUM!{enum SC_STATUS_TYPE { |
| SC_STATUS_PROCESS_INFO = 0, |
| }} |
| ENUM!{enum _SC_ENUM_TYPE { |
| SC_ENUM_PROCESS_INFO = 0, |
| }} |
| //700 |
| STRUCT!{struct SERVICE_STATUS { |
| dwServiceType: ::DWORD, |
| dwCurrentState: ::DWORD, |
| dwControlsAccepted: ::DWORD, |
| dwWin32ExitCode: ::DWORD, |
| dwServiceSpecificExitCode: ::DWORD, |
| dwCheckPoint: ::DWORD, |
| dwWaitHint: ::DWORD, |
| }} |
| pub type LPSERVICE_STATUS = *mut SERVICE_STATUS; |
| //848 |
| pub type LPSERVICE_MAIN_FUNCTIONW = Option<unsafe extern "system" fn( |
| dwNumServicesArgs: ::DWORD, lpServiceArgVectors: *mut ::LPWSTR, |
| )>; |
| pub type LPSERVICE_MAIN_FUNCTIONA = Option<unsafe extern "system" fn( |
| dwNumServicesArgs: ::DWORD, lpServiceArgVectors: *mut ::LPSTR, |
| )>; |
| STRUCT!{nodebug struct SERVICE_TABLE_ENTRYA { |
| lpServiceName: ::LPCSTR, |
| lpServiceProc: LPSERVICE_MAIN_FUNCTIONA, |
| }} |
| pub type LPSERVICE_TABLE_ENTRYA = *mut SERVICE_TABLE_ENTRYA; |
| STRUCT!{nodebug struct SERVICE_TABLE_ENTRYW { |
| lpServiceName: ::LPCWSTR, |
| lpServiceProc: LPSERVICE_MAIN_FUNCTIONW, |
| }} |
| pub type LPSERVICE_TABLE_ENTRYW = *mut SERVICE_TABLE_ENTRYW; |
| //900 |
| pub type LPHANDLER_FUNCTION = Option<unsafe extern "system" fn(dwControl: ::DWORD)>; |
| pub type LPHANDLER_FUNCTION_EX = Option<unsafe extern "system" fn( |
| dwControl: ::DWORD, dwEventType: ::DWORD, lpEventData: ::LPVOID, lpContext: ::LPVOID, |
| ) -> ::DWORD>; |