Documentation ¶
Index ¶
- Constants
- Variables
- func NewSvcctlServerHandle(o SvcctlServer) dcerpc.ServerHandle
- func RegisterSvcctlServer(conn dcerpc.Conn, o SvcctlServer, opts ...dcerpc.Option)
- func SvcctlServerHandle(ctx context.Context, o SvcctlServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)
- type Action
- type ActionType
- type ChangeServiceConfig2ARequest
- type ChangeServiceConfig2AResponse
- type ChangeServiceConfig2WRequest
- type ChangeServiceConfig2WResponse
- type ChangeServiceConfigARequest
- type ChangeServiceConfigAResponse
- type ChangeServiceConfigWRequest
- type ChangeServiceConfigWResponse
- type CloseNotifyRequest
- type CloseNotifyResponse
- type CloseServiceRequest
- type CloseServiceResponse
- type ConfigInfoA
- type ConfigInfoA_ConfigInfoA
- func (o *ConfigInfoA_ConfigInfoA) GetValue() any
- func (o *ConfigInfoA_ConfigInfoA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ConfigInfoA_ConfigInfoA) NDRSwitchValue(sw uint32) uint32
- func (o *ConfigInfoA_ConfigInfoA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ConfigInfoA_DelayedAutoStart
- type ConfigInfoA_Description
- type ConfigInfoA_FailureActions
- type ConfigInfoA_FailureActionsFlag
- type ConfigInfoA_PreferredNode
- type ConfigInfoA_Preshutdown
- type ConfigInfoA_RequiredPrivileges
- type ConfigInfoA_SIDInfo
- type ConfigInfoA_TriggerInfo
- type ConfigInfoW
- type ConfigInfoW_ConfigInfoW
- func (o *ConfigInfoW_ConfigInfoW) GetValue() any
- func (o *ConfigInfoW_ConfigInfoW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ConfigInfoW_ConfigInfoW) NDRSwitchValue(sw uint32) uint32
- func (o *ConfigInfoW_ConfigInfoW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ConfigInfoW_DelayedAutoStart
- type ConfigInfoW_Description
- type ConfigInfoW_FailureActions
- type ConfigInfoW_FailureActionsFlag
- type ConfigInfoW_PreferredNode
- type ConfigInfoW_Preshutdown
- type ConfigInfoW_RequiredPrivileges
- type ConfigInfoW_SIDInfo
- type ConfigInfoW_TriggerInfo
- type ControlServiceExARequest
- type ControlServiceExAResponse
- type ControlServiceExWRequest
- type ControlServiceExWResponse
- type ControlServiceRequest
- type ControlServiceResponse
- type CreateServiceARequest
- type CreateServiceAResponse
- type CreateServiceWOW64ARequest
- type CreateServiceWOW64AResponse
- type CreateServiceWOW64WRequest
- type CreateServiceWOW64WResponse
- type CreateServiceWRequest
- type CreateServiceWResponse
- type CreateWOWServiceRequest
- type CreateWOWServiceResponse
- type DeleteServiceRequest
- type DeleteServiceResponse
- type EnumDependentServicesARequest
- type EnumDependentServicesAResponse
- type EnumDependentServicesWRequest
- type EnumDependentServicesWResponse
- type EnumServiceGroupWRequest
- type EnumServiceGroupWResponse
- type EnumServiceStatusA
- type EnumServiceStatusProcessA
- type EnumServiceStatusProcessW
- type EnumServiceStatusW
- type EnumServicesStatusARequest
- type EnumServicesStatusAResponse
- type EnumServicesStatusExARequest
- type EnumServicesStatusExAResponse
- type EnumServicesStatusExWRequest
- type EnumServicesStatusExWResponse
- type EnumServicesStatusWRequest
- type EnumServicesStatusWResponse
- type EnumType
- type GetNotifyResultsRequest
- type GetNotifyResultsResponse
- type GetServiceDisplayNameARequest
- type GetServiceDisplayNameAResponse
- type GetServiceDisplayNameWRequest
- type GetServiceDisplayNameWResponse
- type GetServiceKeyNameARequest
- type GetServiceKeyNameAResponse
- type GetServiceKeyNameWRequest
- type GetServiceKeyNameWResponse
- type Handle
- type Lock
- type LockServiceDatabaseRequest
- type LockServiceDatabaseResponse
- type Notify
- type NotifyBootConfigStatusRequest
- type NotifyBootConfigStatusResponse
- type NotifyParams
- type NotifyParamsList
- type NotifyParams_NotifyParams
- func (o *NotifyParams_NotifyParams) GetValue() any
- func (o *NotifyParams_NotifyParams) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *NotifyParams_NotifyParams) NDRSwitchValue(sw uint32) uint32
- func (o *NotifyParams_NotifyParams) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type NotifyParams_StatusChangeParam1
- type NotifyParams_StatusChangeParams
- type NotifyServiceStatusChangeRequest
- type NotifyServiceStatusChangeResponse
- type OpenSCM2Request
- type OpenSCM2Response
- type OpenSCMARequest
- type OpenSCMAResponse
- type OpenSCMWRequest
- type OpenSCMWResponse
- type OpenServiceARequest
- type OpenServiceAResponse
- type OpenServiceWRequest
- type OpenServiceWResponse
- type QueryServiceConfig2ARequest
- type QueryServiceConfig2AResponse
- type QueryServiceConfig2WRequest
- type QueryServiceConfig2WResponse
- type QueryServiceConfigA
- type QueryServiceConfigARequest
- type QueryServiceConfigAResponse
- type QueryServiceConfigExRequest
- type QueryServiceConfigExResponse
- type QueryServiceConfigW
- type QueryServiceConfigWRequest
- type QueryServiceConfigWResponse
- type QueryServiceLockStatusA
- type QueryServiceLockStatusARequest
- type QueryServiceLockStatusAResponse
- type QueryServiceLockStatusW
- type QueryServiceLockStatusWRequest
- type QueryServiceLockStatusWResponse
- type QueryServiceObjectSecurityRequest
- type QueryServiceObjectSecurityResponse
- type QueryServiceStatusExRequest
- type QueryServiceStatusExResponse
- type QueryServiceStatusRequest
- type QueryServiceStatusResponse
- type RequiredPrivilegesInfo
- type ServiceControlInParamsA
- func (o *ServiceControlInParamsA) GetValue() any
- func (o *ServiceControlInParamsA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ServiceControlInParamsA) NDRSwitchValue(sw uint32) uint32
- func (o *ServiceControlInParamsA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ServiceControlInParamsA_StatusReasonInParams
- type ServiceControlInParamsW
- func (o *ServiceControlInParamsW) GetValue() any
- func (o *ServiceControlInParamsW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ServiceControlInParamsW) NDRSwitchValue(sw uint32) uint32
- func (o *ServiceControlInParamsW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ServiceControlInParamsW_StatusReasonInParams
- type ServiceControlOutParamsA
- func (o *ServiceControlOutParamsA) GetValue() any
- func (o *ServiceControlOutParamsA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ServiceControlOutParamsA) NDRSwitchValue(sw uint32) uint32
- func (o *ServiceControlOutParamsA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ServiceControlOutParamsA_StatusReasonOutParams
- type ServiceControlOutParamsW
- func (o *ServiceControlOutParamsW) GetValue() any
- func (o *ServiceControlOutParamsW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error
- func (o *ServiceControlOutParamsW) NDRSwitchValue(sw uint32) uint32
- func (o *ServiceControlOutParamsW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error
- type ServiceControlOutParamsW_StatusReasonOutParams
- type ServiceControlStatusReasonInParamsA
- type ServiceControlStatusReasonInParamsW
- type ServiceControlStatusReasonOutParams
- type ServiceDelayedAutoStartInfo
- type ServiceDescriptionA
- type ServiceDescriptionW
- type ServiceDescriptionWOW64
- type ServiceFailureActionsA
- type ServiceFailureActionsFlag
- type ServiceFailureActionsW
- type ServiceFailureActionsWOW64
- type ServiceNotifyStatusChangeParams
- func (o *ServiceNotifyStatusChangeParams) MarshalNDR(ctx context.Context, w ndr.Writer) error
- func (o *ServiceNotifyStatusChangeParams) ServiceNotifyStatusChangeParams2() *ServiceNotifyStatusChangeParams2
- func (o *ServiceNotifyStatusChangeParams) UnmarshalNDR(ctx context.Context, w ndr.Reader) error
- type ServiceNotifyStatusChangeParams1
- type ServiceNotifyStatusChangeParams2
- type ServicePreferredNodeInfo
- type ServicePreshutdownInfo
- type ServiceRequiredPrivilegesInfoWOW64
- type ServiceSIDInfo
- type ServiceStatus
- type ServiceStatusProcess
- type ServiceTrigger
- type ServiceTriggerInfo
- type ServiceTriggerSpecificDataItem
- type SetServiceObjectSecurityRequest
- type SetServiceObjectSecurityResponse
- type SetServiceStatusRequest
- type SetServiceStatusResponse
- type StartServiceARequest
- type StartServiceAResponse
- type StartServiceWRequest
- type StartServiceWResponse
- type StatusType
- type String
- type SvcctlClient
- type SvcctlServer
- type UnicodeString
- type UnlockServiceDatabaseRequest
- type UnlockServiceDatabaseResponse
Constants ¶
const MaxAccountNameLength = 0x0800
MaxAccountNameLength represents the SC_MAX_ACCOUNT_NAME_LENGTH RPC constant
const MaxArgumentLength = 0x0400
MaxArgumentLength represents the SC_MAX_ARGUMENT_LENGTH RPC constant
const MaxArguments = 0x0400
MaxArguments represents the SC_MAX_ARGUMENTS RPC constant
const MaxCommentLength = 0x0080
MaxCommentLength represents the SC_MAX_COMMENT_LENGTH RPC constant
const MaxComputerNameLength = 0x0400
MaxComputerNameLength represents the SC_MAX_COMPUTER_NAME_LENGTH RPC constant
const MaxDependSize = 0x1000
MaxDependSize represents the SC_MAX_DEPEND_SIZE RPC constant
const MaxNameLength = 0x0101
MaxNameLength represents the SC_MAX_NAME_LENGTH RPC constant
const MaxPathLength = 0x8000
MaxPathLength represents the SC_MAX_PATH_LENGTH RPC constant
const MaxPwdSize = 0x0202
MaxPwdSize represents the SC_MAX_PWD_SIZE RPC constant
const MaxServiceNameLength = 0x00000100
MaxServiceNameLength represents the MAX_SERVICE_NAME_LENGTH RPC constant
Variables ¶
var ( // Syntax UUID SvcctlSyntaxUUID = &uuid.UUID{TimeLow: 0x367abb81, TimeMid: 0x9844, TimeHiAndVersion: 0x35f1, ClockSeqHiAndReserved: 0xad, ClockSeqLow: 0x32, Node: [6]uint8{0x98, 0xf0, 0x38, 0x0, 0x10, 0x3}} // Syntax ID SvcctlSyntaxV2_0 = &dcerpc.SyntaxID{IfUUID: SvcctlSyntaxUUID, IfVersionMajor: 2, IfVersionMinor: 0} )
var (
// import guard
GoPackage = "scmr"
)
Functions ¶
func NewSvcctlServerHandle ¶
func NewSvcctlServerHandle(o SvcctlServer) dcerpc.ServerHandle
func RegisterSvcctlServer ¶
func RegisterSvcctlServer(conn dcerpc.Conn, o SvcctlServer, opts ...dcerpc.Option)
Types ¶
type Action ¶
type Action struct { // Type: The action to be performed. This member MUST be one of the values from the // SC_ACTION_TYPE (section 2.2.18) enumeration. Type ActionType `idl:"name:Type" json:"type"` // Delay: The time, in milliseconds, to wait before performing the specified action. Delay uint32 `idl:"name:Delay" json:"delay"` }
Action structure represents SC_ACTION RPC structure.
The SC_ACTION structure defines an action that the SCM can perform.
type ActionType ¶
type ActionType uint32
ActionType type represents SC_ACTION_TYPE RPC enumeration.
The SC_ACTION_TYPE enumeration specifies action levels for the Type member of the SC_ACTION structure.
var ( // SC_ACTION_NONE: No action. ActionTypeNone ActionType = 0 // SC_ACTION_RESTART: Restart the service. ActionTypeRestart ActionType = 1 // SC_ACTION_REBOOT: Reboot the computer. ActionTypeReboot ActionType = 2 // SC_ACTION_RUN_COMMAND: Run a command. ActionTypeRunCommand ActionType = 3 )
func (ActionType) String ¶
func (o ActionType) String() string
type ChangeServiceConfig2ARequest ¶
type ChangeServiceConfig2ARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_CHANGE_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // Info: An SC_RPC_CONFIG_INFOA (section 2.2.21) structure that contains optional configuration // information. Info *ConfigInfoA `idl:"name:Info" json:"info"` }
ChangeServiceConfig2ARequest structure represents the RChangeServiceConfig2A operation request
func (*ChangeServiceConfig2ARequest) MarshalNDR ¶
func (*ChangeServiceConfig2ARequest) UnmarshalNDR ¶
type ChangeServiceConfig2AResponse ¶
type ChangeServiceConfig2AResponse struct { // Return: The RChangeServiceConfig2A return value. Return uint32 `idl:"name:Return" json:"return"` }
ChangeServiceConfig2AResponse structure represents the RChangeServiceConfig2A operation response
func (*ChangeServiceConfig2AResponse) MarshalNDR ¶
func (*ChangeServiceConfig2AResponse) UnmarshalNDR ¶
type ChangeServiceConfig2WRequest ¶
type ChangeServiceConfig2WRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_CHANGE_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // Info: An SC_RPC_CONFIG_INFOW (section 2.2.22) structure that contains optional configuration // information. Info *ConfigInfoW `idl:"name:Info" json:"info"` }
ChangeServiceConfig2WRequest structure represents the RChangeServiceConfig2W operation request
func (*ChangeServiceConfig2WRequest) MarshalNDR ¶
func (*ChangeServiceConfig2WRequest) UnmarshalNDR ¶
type ChangeServiceConfig2WResponse ¶
type ChangeServiceConfig2WResponse struct { // Return: The RChangeServiceConfig2W return value. Return uint32 `idl:"name:Return" json:"return"` }
ChangeServiceConfig2WResponse structure represents the RChangeServiceConfig2W operation response
func (*ChangeServiceConfig2WResponse) MarshalNDR ¶
func (*ChangeServiceConfig2WResponse) UnmarshalNDR ¶
type ChangeServiceConfigARequest ¶
type ChangeServiceConfigARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_CHANGE_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // dwServiceType: A Type value for the service record (section 3.1.1) that specifies // the type of service. This MUST be one of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service type does not change. | // +----------------------------------------+----------------------------------------------------------------------------------+ // // The following flag can also be combined with the value passed in dwServiceType. // // +----------------------------------------+--------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+--------------------------------------------+ // +----------------------------------------+--------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+--------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A Start value for the service record (section 3.1.1) that specifies // when to start the service. This MUST be one of the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service start type does not change. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: An ErrorControl value for the service record (section 3.1.1) that // specifies the severity of the error if the service fails to start and determines // the action that the SCM takes. This MUST be one of the following values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service error control type does not change. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: An ImagePath value for the service record (section 3.1.1) as a // pointer to a null-terminated ANSI string that contains the fully qualified path to // the service binary file. The path MAY include arguments. If the path contains a space, // it MUST be quoted so that it is correctly interpreted. For example, "d:\\my share\\myservice.exe" // is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string;pointer:unique" json:"binary_path_name"` // lpLoadOrderGroup: A Group value for the service record (section 3.1.1) as a pointer // to a null-terminated ANSI string that names the load ordering group of which this // service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A Tag value for the service record (section 3.1.1) as a pointer to a variable // that receives a tag value. The value is unique to the group specified in the lpLoadOrderGroup // parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: DependOnSize and DependOnGroup values for the service record (section // 3.1.1) as a pointer to an array of null-separated names of services or load ordering // groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is ANSI. Dependency on a service means that this service can only run // if the service it depends on is running. Dependency on a group means that this service // can run if at least one member of the group is running after an attempt to start // all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the lpDependencies parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: An ObjectName value for the service record (section 3.1.1) as // a pointer to a null-terminated ANSI string that specifies the name of the account // under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A Password value for the service record (section 3.1.1) as a pointer // to a null-terminated ANSI string that contains the password of the account whose // name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` // lpDisplayName: A DisplayName value for the service record (section 3.1.1) as a pointer // to a null-terminated ANSI string that contains the display name that applications // can use to identify the service for its users. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` }
ChangeServiceConfigARequest structure represents the RChangeServiceConfigA operation request
func (*ChangeServiceConfigARequest) MarshalNDR ¶
func (*ChangeServiceConfigARequest) UnmarshalNDR ¶
type ChangeServiceConfigAResponse ¶
type ChangeServiceConfigAResponse struct { // lpdwTagId: A Tag value for the service record (section 3.1.1) as a pointer to a variable // that receives a tag value. The value is unique to the group specified in the lpLoadOrderGroup // parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // Return: The RChangeServiceConfigA return value. Return uint32 `idl:"name:Return" json:"return"` }
ChangeServiceConfigAResponse structure represents the RChangeServiceConfigA operation response
func (*ChangeServiceConfigAResponse) MarshalNDR ¶
func (*ChangeServiceConfigAResponse) UnmarshalNDR ¶
type ChangeServiceConfigWRequest ¶
type ChangeServiceConfigWRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_CHANGE_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // dwServiceType: A Type value for the service record (section 3.1.1) that specifies // the type of service. This MUST be one of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service type does not change. | // +----------------------------------------+----------------------------------------------------------------------------------+ // // The following flag can also be combined with the value passed in dwServiceStartType: // // +----------------------------------------+--------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+--------------------------------------------+ // +----------------------------------------+--------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+--------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A Start value for the service record (section 3.1.1) that specifies // when to start the service. This MUST be one of the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service start type does not change. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: An ErrorControl value for the service record (section 3.1.1) that // specifies the severity of the error if the service fails to start and determines // the action that the SCM takes. MUST be one of the following values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error and displays a message box, but continues the startup | // | | operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_NO_CHANGE 0xFFFFFFFF | Service error control type does not change. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: An ImagePath value for the service record (section 3.1.1) as a // pointer to a null-terminated UNICODE string name. The pointer contains the fully // qualified path to the service binary file. The path MAY include arguments. If the // path contains a space, it MUST be quoted so that it is correctly interpreted. For // example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string;pointer:unique" json:"binary_path_name"` // lpLoadOrderGroup: A Group value for the service record (section 3.1.1) as a pointer // to a null-terminated UNICODE string that names the load-ordering group of which this // service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A Tag value for the service record (section 3.1.1) as a pointer to a variable // that receives a tag value. The value is unique to the group specified in the lpLoadOrderGroup // parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: DependOnService and DependOnGroup values for the service record (section // 3.1.1) as a pointer to an array of null-separated names of services or load ordering // groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is Unicode. Dependency on a service means that this service can only // run if the service it depends on is running. Dependency on a group means that this // service can run if at least one member of the group is running after an attempt to // start all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the lpDependencies parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: An ObjectName value for the service record (section 3.1.1) as // a pointer to a null-terminated UNICODE string that specifies the name of the account // under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A Password value for the service record (section 3.1.1) as a pointer // to a null-terminated UNICODE string that contains the password of the account whose // name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` // lpDisplayName: A DisplayName value for the service record (section 3.1.1) as a pointer // to a null-terminated UNICODE string that contains the display name that applications // can use to identify the service for its users. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` }
ChangeServiceConfigWRequest structure represents the RChangeServiceConfigW operation request
func (*ChangeServiceConfigWRequest) MarshalNDR ¶
func (*ChangeServiceConfigWRequest) UnmarshalNDR ¶
type ChangeServiceConfigWResponse ¶
type ChangeServiceConfigWResponse struct { // lpdwTagId: A Tag value for the service record (section 3.1.1) as a pointer to a variable // that receives a tag value. The value is unique to the group specified in the lpLoadOrderGroup // parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // Return: The RChangeServiceConfigW return value. Return uint32 `idl:"name:Return" json:"return"` }
ChangeServiceConfigWResponse structure represents the RChangeServiceConfigW operation response
func (*ChangeServiceConfigWResponse) MarshalNDR ¶
func (*ChangeServiceConfigWResponse) UnmarshalNDR ¶
type CloseNotifyRequest ¶
type CloseNotifyRequest struct { // phNotify: An SC_NOTIFY_RPC_HANDLE (section 2.2.6) data type that defines a handle // to the notification status associated with the client. This is the handle returned // by an RNotifyServiceStatusChange call. Notify *Notify `idl:"name:phNotify" json:"notify"` }
CloseNotifyRequest structure represents the RCloseNotifyHandle operation request
func (*CloseNotifyRequest) MarshalNDR ¶
func (*CloseNotifyRequest) UnmarshalNDR ¶
type CloseNotifyResponse ¶
type CloseNotifyResponse struct { // phNotify: An SC_NOTIFY_RPC_HANDLE (section 2.2.6) data type that defines a handle // to the notification status associated with the client. This is the handle returned // by an RNotifyServiceStatusChange call. Notify *Notify `idl:"name:phNotify" json:"notify"` // pfApcFired: Not used. ApcFired bool `idl:"name:pfApcFired" json:"apc_fired"` // Return: The RCloseNotifyHandle return value. Return uint32 `idl:"name:Return" json:"return"` }
CloseNotifyResponse structure represents the RCloseNotifyHandle operation response
func (*CloseNotifyResponse) MarshalNDR ¶
func (*CloseNotifyResponse) UnmarshalNDR ¶
type CloseServiceRequest ¶
type CloseServiceRequest struct { // hSCObject: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // a service record or to the SCM database that MUST have been created previously using // one of the open methods specified in section 3.1.4. ServiceObject *Handle `idl:"name:hSCObject" json:"service_object"` }
CloseServiceRequest structure represents the RCloseServiceHandle operation request
func (*CloseServiceRequest) MarshalNDR ¶
func (*CloseServiceRequest) UnmarshalNDR ¶
type CloseServiceResponse ¶
type CloseServiceResponse struct { // hSCObject: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // a service record or to the SCM database that MUST have been created previously using // one of the open methods specified in section 3.1.4. ServiceObject *Handle `idl:"name:hSCObject" json:"service_object"` // Return: The RCloseServiceHandle return value. Return uint32 `idl:"name:Return" json:"return"` }
CloseServiceResponse structure represents the RCloseServiceHandle operation response
func (*CloseServiceResponse) MarshalNDR ¶
func (*CloseServiceResponse) UnmarshalNDR ¶
type ConfigInfoA ¶
type ConfigInfoA struct { // dwInfoLevel: A DWORD value that indicates the type of configuration information // in the included data. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` ConfigInfoA *ConfigInfoA_ConfigInfoA `idl:"name:ConfigInfoA;switch_is:dwInfoLevel" json:"config_info_a"` }
ConfigInfoA structure represents SC_RPC_CONFIG_INFOA RPC structure.
The SC_RPC_CONFIG_INFOA structure defines the service configuration based on a supplied level. String values are stored in ANSI.
func (*ConfigInfoA) MarshalNDR ¶
func (*ConfigInfoA) UnmarshalNDR ¶
type ConfigInfoA_ConfigInfoA ¶
type ConfigInfoA_ConfigInfoA struct { // Types that are assignable to Value // // *ConfigInfoA_Description // *ConfigInfoA_FailureActions // *ConfigInfoA_DelayedAutoStart // *ConfigInfoA_FailureActionsFlag // *ConfigInfoA_SIDInfo // *ConfigInfoA_RequiredPrivileges // *ConfigInfoA_Preshutdown // *ConfigInfoA_TriggerInfo // *ConfigInfoA_PreferredNode Value is_ConfigInfoA_ConfigInfoA `json:"value"` }
ConfigInfoA_ConfigInfoA structure represents SC_RPC_CONFIG_INFOA union anonymous member.
The SC_RPC_CONFIG_INFOA structure defines the service configuration based on a supplied level. String values are stored in ANSI.
func (*ConfigInfoA_ConfigInfoA) GetValue ¶
func (o *ConfigInfoA_ConfigInfoA) GetValue() any
func (*ConfigInfoA_ConfigInfoA) MarshalUnionNDR ¶
func (*ConfigInfoA_ConfigInfoA) NDRSwitchValue ¶
func (o *ConfigInfoA_ConfigInfoA) NDRSwitchValue(sw uint32) uint32
func (*ConfigInfoA_ConfigInfoA) UnmarshalUnionNDR ¶
type ConfigInfoA_DelayedAutoStart ¶
type ConfigInfoA_DelayedAutoStart struct { // psda: A structure that defines whether or not the service is part of the delayed // start group, as specified in section 2.2.33. DelayedAutoStart *ServiceDelayedAutoStartInfo `idl:"name:psda" json:"delayed_auto_start"` }
ConfigInfoA_DelayedAutoStart structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 3
func (*ConfigInfoA_DelayedAutoStart) MarshalNDR ¶
func (*ConfigInfoA_DelayedAutoStart) UnmarshalNDR ¶
type ConfigInfoA_Description ¶
type ConfigInfoA_Description struct { // psd: A structure that contains a description of the service, as specified in section // 2.2.34. // // The following structures SHOULD<2> be available: Description *ServiceDescriptionA `idl:"name:psd" json:"description"` }
ConfigInfoA_Description structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 1
func (*ConfigInfoA_Description) MarshalNDR ¶
func (*ConfigInfoA_Description) UnmarshalNDR ¶
type ConfigInfoA_FailureActions ¶
type ConfigInfoA_FailureActions struct { // psfa: A structure that contains a list of failure actions, as specified in section // 2.2.39. FailureActions *ServiceFailureActionsA `idl:"name:psfa" json:"failure_actions"` }
ConfigInfoA_FailureActions structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 2
func (*ConfigInfoA_FailureActions) MarshalNDR ¶
func (*ConfigInfoA_FailureActions) UnmarshalNDR ¶
type ConfigInfoA_FailureActionsFlag ¶
type ConfigInfoA_FailureActionsFlag struct { // psfaf: A structure that defines if failure actions are queued when the service exits // with a nonzero error code, as specified in section 2.2.41. FailureActionsFlag *ServiceFailureActionsFlag `idl:"name:psfaf" json:"failure_actions_flag"` }
ConfigInfoA_FailureActionsFlag structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 4
func (*ConfigInfoA_FailureActionsFlag) MarshalNDR ¶
func (*ConfigInfoA_FailureActionsFlag) UnmarshalNDR ¶
type ConfigInfoA_PreferredNode ¶
type ConfigInfoA_PreferredNode struct { // pspn: A structure that defines the preferred node information for the service, as // specified in section 2.2.55. PreferredNode *ServicePreferredNodeInfo `idl:"name:pspn" json:"preferred_node"` }
ConfigInfoA_PreferredNode structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 9
func (*ConfigInfoA_PreferredNode) MarshalNDR ¶
func (*ConfigInfoA_PreferredNode) UnmarshalNDR ¶
type ConfigInfoA_Preshutdown ¶
type ConfigInfoA_Preshutdown struct { // psps: A structure that defines the pre-shutdown settings for the service, as specified // in section 2.2.45. Preshutdown *ServicePreshutdownInfo `idl:"name:psps" json:"preshutdown"` }
ConfigInfoA_Preshutdown structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 7
func (*ConfigInfoA_Preshutdown) MarshalNDR ¶
func (*ConfigInfoA_Preshutdown) UnmarshalNDR ¶
type ConfigInfoA_RequiredPrivileges ¶
type ConfigInfoA_RequiredPrivileges struct { // psrp: A structure that defines the privileges required by the service, as specified // in section 2.2.48. RequiredPrivileges *RequiredPrivilegesInfo `idl:"name:psrp" json:"required_privileges"` }
ConfigInfoA_RequiredPrivileges structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 6
func (*ConfigInfoA_RequiredPrivileges) MarshalNDR ¶
func (*ConfigInfoA_RequiredPrivileges) UnmarshalNDR ¶
type ConfigInfoA_SIDInfo ¶
type ConfigInfoA_SIDInfo struct { // pssid: A structure that defines the type of service SID, as specified in section // 2.2.46. SIDInfo *ServiceSIDInfo `idl:"name:pssid" json:"sid_info"` }
ConfigInfoA_SIDInfo structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 5
func (*ConfigInfoA_SIDInfo) MarshalNDR ¶
func (*ConfigInfoA_SIDInfo) UnmarshalNDR ¶
type ConfigInfoA_TriggerInfo ¶
type ConfigInfoA_TriggerInfo struct { // psti: A structure that defines the trigger settings for the service, as specified // in section 2.2.54. TriggerInfo *ServiceTriggerInfo `idl:"name:psti" json:"trigger_info"` }
ConfigInfoA_TriggerInfo structure represents ConfigInfoA_ConfigInfoA RPC union arm.
It has following labels: 8
func (*ConfigInfoA_TriggerInfo) MarshalNDR ¶
func (*ConfigInfoA_TriggerInfo) UnmarshalNDR ¶
type ConfigInfoW ¶
type ConfigInfoW struct { // dwInfoLevel: A value that indicates the type of configuration information in the // included data. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` ConfigInfoW *ConfigInfoW_ConfigInfoW `idl:"name:ConfigInfoW;switch_is:dwInfoLevel" json:"config_info_w"` }
ConfigInfoW structure represents SC_RPC_CONFIG_INFOW RPC structure.
The SC_RPC_CONFIG_INFOW structure SHOULD<3> define, based on a supplied level, either the service configuration or a list of failure actions. String values are stored as Unicode.
func (*ConfigInfoW) MarshalNDR ¶
func (*ConfigInfoW) UnmarshalNDR ¶
type ConfigInfoW_ConfigInfoW ¶
type ConfigInfoW_ConfigInfoW struct { // Types that are assignable to Value // // *ConfigInfoW_Description // *ConfigInfoW_FailureActions // *ConfigInfoW_DelayedAutoStart // *ConfigInfoW_FailureActionsFlag // *ConfigInfoW_SIDInfo // *ConfigInfoW_RequiredPrivileges // *ConfigInfoW_Preshutdown // *ConfigInfoW_TriggerInfo // *ConfigInfoW_PreferredNode Value is_ConfigInfoW_ConfigInfoW `json:"value"` }
ConfigInfoW_ConfigInfoW structure represents SC_RPC_CONFIG_INFOW union anonymous member.
The SC_RPC_CONFIG_INFOW structure SHOULD<3> define, based on a supplied level, either the service configuration or a list of failure actions. String values are stored as Unicode.
func (*ConfigInfoW_ConfigInfoW) GetValue ¶
func (o *ConfigInfoW_ConfigInfoW) GetValue() any
func (*ConfigInfoW_ConfigInfoW) MarshalUnionNDR ¶
func (*ConfigInfoW_ConfigInfoW) NDRSwitchValue ¶
func (o *ConfigInfoW_ConfigInfoW) NDRSwitchValue(sw uint32) uint32
func (*ConfigInfoW_ConfigInfoW) UnmarshalUnionNDR ¶
type ConfigInfoW_DelayedAutoStart ¶
type ConfigInfoW_DelayedAutoStart struct { // psda: A structure that specifies whether the service is part of the delayed start // group, as specified in section 2.2.33. DelayedAutoStart *ServiceDelayedAutoStartInfo `idl:"name:psda" json:"delayed_auto_start"` }
ConfigInfoW_DelayedAutoStart structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 3
func (*ConfigInfoW_DelayedAutoStart) MarshalNDR ¶
func (*ConfigInfoW_DelayedAutoStart) UnmarshalNDR ¶
type ConfigInfoW_Description ¶
type ConfigInfoW_Description struct { // psd: A structure that contains a description of the service, as specified in section // 2.2.35. Description *ServiceDescriptionW `idl:"name:psd" json:"description"` }
ConfigInfoW_Description structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 1
func (*ConfigInfoW_Description) MarshalNDR ¶
func (*ConfigInfoW_Description) UnmarshalNDR ¶
type ConfigInfoW_FailureActions ¶
type ConfigInfoW_FailureActions struct { // psfa: A structure that contains a list of failure actions, as specified in section // 2.2.40. FailureActions *ServiceFailureActionsW `idl:"name:psfa" json:"failure_actions"` }
ConfigInfoW_FailureActions structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 2
func (*ConfigInfoW_FailureActions) MarshalNDR ¶
func (*ConfigInfoW_FailureActions) UnmarshalNDR ¶
type ConfigInfoW_FailureActionsFlag ¶
type ConfigInfoW_FailureActionsFlag struct { // psfaf: A structure that specifies whether failure actions are queued when the service // exits with a nonzero error code, as specified in section 2.2.41. FailureActionsFlag *ServiceFailureActionsFlag `idl:"name:psfaf" json:"failure_actions_flag"` }
ConfigInfoW_FailureActionsFlag structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 4
func (*ConfigInfoW_FailureActionsFlag) MarshalNDR ¶
func (*ConfigInfoW_FailureActionsFlag) UnmarshalNDR ¶
type ConfigInfoW_PreferredNode ¶
type ConfigInfoW_PreferredNode struct { // pspn: A structure that defines the preferred node information for the service, as // specified in section 2.2.55.<5> PreferredNode *ServicePreferredNodeInfo `idl:"name:pspn" json:"preferred_node"` }
ConfigInfoW_PreferredNode structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 9
func (*ConfigInfoW_PreferredNode) MarshalNDR ¶
func (*ConfigInfoW_PreferredNode) UnmarshalNDR ¶
type ConfigInfoW_Preshutdown ¶
type ConfigInfoW_Preshutdown struct { // psps: A structure that defines the pre-shutdown settings for the service, as specified // in section 2.2.45. Preshutdown *ServicePreshutdownInfo `idl:"name:psps" json:"preshutdown"` }
ConfigInfoW_Preshutdown structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 7
func (*ConfigInfoW_Preshutdown) MarshalNDR ¶
func (*ConfigInfoW_Preshutdown) UnmarshalNDR ¶
type ConfigInfoW_RequiredPrivileges ¶
type ConfigInfoW_RequiredPrivileges struct { // psrp: A structure that defines the privileges required by the service, as specified // in section 2.2.48. RequiredPrivileges *RequiredPrivilegesInfo `idl:"name:psrp" json:"required_privileges"` }
ConfigInfoW_RequiredPrivileges structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 6
func (*ConfigInfoW_RequiredPrivileges) MarshalNDR ¶
func (*ConfigInfoW_RequiredPrivileges) UnmarshalNDR ¶
type ConfigInfoW_SIDInfo ¶
type ConfigInfoW_SIDInfo struct { // pssid: A structure that defines the type of service SID, as specified in section // 2.2.46. SIDInfo *ServiceSIDInfo `idl:"name:pssid" json:"sid_info"` }
ConfigInfoW_SIDInfo structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 5
func (*ConfigInfoW_SIDInfo) MarshalNDR ¶
func (*ConfigInfoW_SIDInfo) UnmarshalNDR ¶
type ConfigInfoW_TriggerInfo ¶
type ConfigInfoW_TriggerInfo struct { // psti: A structure that defines the trigger settings for the service, as specified // in section 2.2.54.<4> TriggerInfo *ServiceTriggerInfo `idl:"name:psti" json:"trigger_info"` }
ConfigInfoW_TriggerInfo structure represents ConfigInfoW_ConfigInfoW RPC union arm.
It has following labels: 8
func (*ConfigInfoW_TriggerInfo) MarshalNDR ¶
func (*ConfigInfoW_TriggerInfo) UnmarshalNDR ¶
type ControlServiceExARequest ¶
type ControlServiceExARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. Service *Handle `idl:"name:hService" json:"service"` // dwControl: Requested control code. This MUST be one of the following values. // // +-------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-------------------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_STOP 0x00000001 | Notifies a service to stop. The SERVICE_STOP access right MUST have been | // | | granted to the caller when the RPC control handle to the service record was | // | | created. The service record MUST have the SERVICE_ACCEPT_STOP bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PAUSE 0x00000002 | Notifies a service to pause. The SERVICE_PAUSE_CONTINUE access right MUST have | // | | been granted to the caller when the RPC control handle to the service record was | // | | created. The service record MUST have the SERVICE_ACCEPT_PAUSE_CONTINUE bit set | // | | in the ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_CONTINUE 0x00000003 | Notifies a paused service to resume. The SERVICE_PAUSE_CONTINUE access | // | | right MUST have been granted to the caller when the RPC control handle | // | | to the service record was created. The service record MUST have the | // | | SERVICE_ACCEPT_PAUSE_CONTINUE bit set in the ServiceStatus.dwControlsAccepted | // | | field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_INTERROGATE 0x00000004 | Notifies a service to report its current status information to the SCM. The | // | | SERVICE_INTERROGATE access right MUST have been granted to the caller when the | // | | RPC control handle to the service record was created. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PARAMCHANGE 0x00000006 | Notifies a service that its startup parameters have changed. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_PARAMCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDADD 0x00000007 | Notifies a service that there is a new component for binding. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDREMOVE 0x00000008 | Notifies a network service that a component for binding has been removed. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDENABLE 0x00000009 | Notifies a network service that a disabled binding has been enabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDDISABLE 0x0000000A | Notifies a network service that one of its bindings has been disabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ Control uint32 `idl:"name:dwControl" json:"control"` // dwInfoLevel: The information level for the service control parameters. This MUST // be set to 0x00000001. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` // pControlInParams: A pointer to a SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA (section // 2.2.30) structure that contains the reason associated with the SERVICE_CONTROL_STOP // control. ControlInParams *ServiceControlInParamsA `idl:"name:pControlInParams;switch_is:dwInfoLevel" json:"control_in_params"` }
ControlServiceExARequest structure represents the RControlServiceExA operation request
func (*ControlServiceExARequest) MarshalNDR ¶
func (*ControlServiceExARequest) UnmarshalNDR ¶
type ControlServiceExAResponse ¶
type ControlServiceExAResponse struct { // pControlOutParams: A pointer to a buffer that contains a SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS // (section 2.2.32) structure to receive the current status on the service. ControlOutParams *ServiceControlOutParamsA `idl:"name:pControlOutParams;switch_is:dwInfoLevel" json:"control_out_params"` // Return: The RControlServiceExA return value. Return uint32 `idl:"name:Return" json:"return"` }
ControlServiceExAResponse structure represents the RControlServiceExA operation response
func (*ControlServiceExAResponse) MarshalNDR ¶
func (*ControlServiceExAResponse) UnmarshalNDR ¶
type ControlServiceExWRequest ¶
type ControlServiceExWRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. Service *Handle `idl:"name:hService" json:"service"` // dwControl: Requested control code. MUST be one of the following values. // // +-------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-------------------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_STOP 0x00000001 | Notifies a service to stop. The SERVICE_STOP access right MUST have been | // | | granted to the caller when the RPC control handle to the service record was | // | | created. The service record MUST have the SERVICE_ACCEPT_STOP bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PAUSE 0x00000002 | Notifies a service to pause. The SERVICE_PAUSE_CONTINUE access right MUST have | // | | been granted to the caller when the RPC control handle to the service record was | // | | created. The service record MUST have the SERVICE_ACCEPT_PAUSE_CONTINUE bit set | // | | in the ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_CONTINUE 0x00000003 | Notifies a paused service to resume. The SERVICE_PAUSE_CONTINUE access | // | | right MUST have been granted to the caller when the RPC control handle | // | | to the service record was created. The service record MUST have the | // | | SERVICE_ACCEPT_PAUSE_CONTINUE bit set in the ServiceStatus.dwControlsAccepted | // | | field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_INTERROGATE 0x00000004 | Notifies a service to report its current status information to the SCM. The | // | | SERVICE_INTERROGATE access right MUST have been granted to the caller when the | // | | RPC control handle to the service record was created. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PARAMCHANGE 0x00000006 | Notifies a service that its startup parameters have changed. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_PARAMCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDADD 0x00000007 | Notifies a service that there is a new component for binding. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDREMOVE 0x00000008 | Notifies a network service that a component for binding has been removed. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDENABLE 0x00000009 | Notifies a network service that a disabled binding has been enabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDDISABLE 0x0000000A | Notifies a network service that one of its bindings has been disabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ Control uint32 `idl:"name:dwControl" json:"control"` // dwInfoLevel: The information level for the service control parameters. This MUST // be set to 0x00000001. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` // pControlInParams: A pointer to a SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW (section // 2.2.31) structure that contains the reason associated with the SERVICE_CONTROL_STOP // control. ControlInParams *ServiceControlInParamsW `idl:"name:pControlInParams;switch_is:dwInfoLevel" json:"control_in_params"` }
ControlServiceExWRequest structure represents the RControlServiceExW operation request
func (*ControlServiceExWRequest) MarshalNDR ¶
func (*ControlServiceExWRequest) UnmarshalNDR ¶
type ControlServiceExWResponse ¶
type ControlServiceExWResponse struct { // pControlOutParams: A pointer to a buffer that contains a SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS // (section 2.2.32) structure to receive the current status on the service. ControlOutParams *ServiceControlOutParamsW `idl:"name:pControlOutParams;switch_is:dwInfoLevel" json:"control_out_params"` // Return: The RControlServiceExW return value. Return uint32 `idl:"name:Return" json:"return"` }
ControlServiceExWResponse structure represents the RControlServiceExW operation response
func (*ControlServiceExWResponse) MarshalNDR ¶
func (*ControlServiceExWResponse) UnmarshalNDR ¶
type ControlServiceRequest ¶
type ControlServiceRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously using one of the open methods // specified in section 3.1.4. Service *Handle `idl:"name:hService" json:"service"` // dwControl: Requested control code. MUST be one of the following values. // // +-------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-------------------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_CONTINUE 0x00000003 | Notifies a paused service that it SHOULD resume. The SERVICE_PAUSE_CONTINUE | // | | access right MUST have been granted to the caller when the RPC control | // | | handle to the service record was created. The service record MUST have the | // | | SERVICE_ACCEPT_PAUSE_CONTINUE bit set in the ServiceStatus.dwControlsAccepted | // | | field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_INTERROGATE 0x00000004 | Notifies a service that it SHOULD report its current status information to the | // | | SCM. The SERVICE_INTERROGATE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDADD 0x00000007 | Notifies a service that there is a new component for binding. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDDISABLE 0x0000000A | Notifies a network service that one of its bindings has been disabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDENABLE 0x00000009 | Notifies a network service that a disabled binding has been enabled. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_NETBINDREMOVE 0x00000008 | Notifies a network service that a component for binding has been removed. | // | | The SERVICE_PAUSE_CONTINUE access right MUST have been granted to the | // | | caller when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_NETBINDCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PARAMCHANGE 0x00000006 | Notifies a service that its startup parameters have changed. The | // | | SERVICE_PAUSE_CONTINUE access right MUST have been granted to the caller | // | | when the RPC control handle to the service record was created. The | // | | service record MUST have the SERVICE_ACCEPT_PARAMCHANGE bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_PAUSE 0x00000002 | Notifies a service that it SHOULD pause. The SERVICE_PAUSE_CONTINUE | // | | access right MUST have been granted to the caller when the RPC control | // | | handle to the service record was created. The service record MUST have the | // | | SERVICE_ACCEPT_PAUSE_CONTINUE bit set in the ServiceStatus.dwControlsAccepted | // | | field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONTROL_STOP 0x00000001 | Notifies a service that it SHOULD stop. The SERVICE_STOP access right MUST have | // | | been granted to the caller when the RPC control handle to the service record | // | | was created. The service record MUST have the SERVICE_ACCEPT_STOP bit set in the | // | | ServiceStatus.dwControlsAccepted field of the service record. | // +-------------------------------------------+----------------------------------------------------------------------------------+ Control uint32 `idl:"name:dwControl" json:"control"` }
ControlServiceRequest structure represents the RControlService operation request
func (*ControlServiceRequest) MarshalNDR ¶
func (*ControlServiceRequest) UnmarshalNDR ¶
type ControlServiceResponse ¶
type ControlServiceResponse struct { // lpServiceStatus: Pointer to a SERVICE_STATUS (section 2.2.47) structure that receives // the latest service status information. The returned information reflects the most // recent status that the service reported to the SCM. ServiceStatus *ServiceStatus `idl:"name:lpServiceStatus" json:"service_status"` // Return: The RControlService return value. Return uint32 `idl:"name:Return" json:"return"` }
ControlServiceResponse structure represents the RControlService operation response
func (*ControlServiceResponse) MarshalNDR ¶
func (*ControlServiceResponse) UnmarshalNDR ¶
type CreateServiceARequest ¶
type CreateServiceARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The SC_MANAGER_CREATE_SERVICE access right MUST have been granted to the caller when // the RPC context handle was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated ANSI string that specifies the name // of the service to install. This MUST not be null. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpDisplayName: A pointer to a null-terminated ANSI string that contains the display // name by which user interface programs identify the service. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` // dwDesiredAccess: A value that specifies the access to the service. This MUST be one // of the values specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` // dwServiceType: A value that specifies the type of service. This MUST be one or a // combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A value that specifies when to start the service. This MUST be one of // the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | The SCM starts the service when a process calls the StartService function. For | // | | more information, see [MSDN-STARTSERVICE]. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: A value that specifies the severity of the error if the service fails // to start and determines the action that the SCM takes. This MUST be one of the following // values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated ANSI string that contains the fully // qualified path to the service binary file. The path MAY include arguments. If the // path contains a space, it MUST be quoted so that it is correctly interpreted. For // example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated ANSI string that names the load-ordering // group of which this service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or load // ordering groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is ANSI. Dependency on a service means that this service can only run // if the service it depends on is running. Dependency on a group means that this service // can run if at least one member of the group is running after an attempt to start // all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the lpDependencies parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: A pointer to a null-terminated ANSI string that specifies the // name of the account under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A pointer to a null-terminated ANSI string that contains the password // of the account whose name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` }
CreateServiceARequest structure represents the RCreateServiceA operation request
func (*CreateServiceARequest) MarshalNDR ¶
func (*CreateServiceARequest) UnmarshalNDR ¶
type CreateServiceAResponse ¶
type CreateServiceAResponse struct { // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly created service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The RCreateServiceA return value. Return uint32 `idl:"name:Return" json:"return"` }
CreateServiceAResponse structure represents the RCreateServiceA operation response
func (*CreateServiceAResponse) MarshalNDR ¶
func (*CreateServiceAResponse) UnmarshalNDR ¶
type CreateServiceWOW64ARequest ¶
type CreateServiceWOW64ARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SC_MANAGER_CREATE_SERVICE access right MUST have // been granted to the caller when the RPC context handle to the SCM was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated ANSI string that specifies the name // of the service to install. This MUST not be null. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpDisplayName: A pointer to a null-terminated ANSI string that contains the display // name by which user interface programs identify the service. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` // dwDesiredAccess: A value that specifies the access to the service. This MUST be one // of the values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` // dwServiceType: A value that specifies the type of service. This MUST be one or a // combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs within its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares an execution process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A value that specifies when to start the service. This MUST be one of // the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: A value that specifies the severity of the error if the service fails // to start and determines the action that the SCM takes. This MUST be one of the following // values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated ANSI string that contains the fully // qualified path to the service binary file. The path MAY include arguments. If the // path contains a space, it MUST be quoted so that it is correctly interpreted. For // example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated ANSI string that names the load-ordering // group of which this service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or load // ordering groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is ANSI. Dependency on a service means that this service can only run // if the service it depends on is running. Dependency on a group means that this service // can run if at least one member of the group is running after an attempt to start // all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the dwDependSize parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: A pointer to a null-terminated ANSI that specifies the name of // the account under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A pointer to a null-terminated ANSI string that contains the password // of the account whose name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` }
CreateServiceWOW64ARequest structure represents the RCreateServiceWOW64A operation request
func (*CreateServiceWOW64ARequest) MarshalNDR ¶
func (*CreateServiceWOW64ARequest) UnmarshalNDR ¶
type CreateServiceWOW64AResponse ¶
type CreateServiceWOW64AResponse struct { // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly created service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The RCreateServiceWOW64A return value. Return uint32 `idl:"name:Return" json:"return"` }
CreateServiceWOW64AResponse structure represents the RCreateServiceWOW64A operation response
func (*CreateServiceWOW64AResponse) MarshalNDR ¶
func (*CreateServiceWOW64AResponse) UnmarshalNDR ¶
type CreateServiceWOW64WRequest ¶
type CreateServiceWOW64WRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The SC_MANAGER_CREATE_SERVICE access right MUST have been granted to the caller when // the RPC context handle to the SCM was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated UNICODE string that specifies the name // of the service to install. This MUST NOT be NULL. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpDisplayName: A pointer to a null-terminated UNICODE string that contains the display // name by which user interface programs identify the service. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` // dwDesiredAccess: A value that specifies the access to the service. This MUST be one // of the values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` // dwServiceType: A value that specifies the type of service. This MUST be one or a // combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs within its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A value that specifies when to start the service. This MUST be one of // the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: A value that specifies the severity of the error if the service fails // to start and determines the action that the SCM takes. This MUST be one of the following // values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated UNICODE string that contains the // fully qualified path to the service binary file. The path MAY include arguments. // If the path contains a space, it MUST be quoted so that it is correctly interpreted. // For example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated UNICODE string that names the load-ordering // group of which this service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or load // ordering groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is Unicode. Dependency on a service means that this service can only // run if the service it depends on is running. Dependency on a group means that this // service can run if at least one member of the group is running after an attempt to // start all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the dwDependSize parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: A pointer to a null-terminated UNICODE string that specifies // the name of the account under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A pointer to a null-terminated UNICODE string that contains the password // of the account whose name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` }
CreateServiceWOW64WRequest structure represents the RCreateServiceWOW64W operation request
func (*CreateServiceWOW64WRequest) MarshalNDR ¶
func (*CreateServiceWOW64WRequest) UnmarshalNDR ¶
type CreateServiceWOW64WResponse ¶
type CreateServiceWOW64WResponse struct { // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly created service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The RCreateServiceWOW64W return value. Return uint32 `idl:"name:Return" json:"return"` }
CreateServiceWOW64WResponse structure represents the RCreateServiceWOW64W operation response
func (*CreateServiceWOW64WResponse) MarshalNDR ¶
func (*CreateServiceWOW64WResponse) UnmarshalNDR ¶
type CreateServiceWRequest ¶
type CreateServiceWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The SC_MANAGER_CREATE_SERVICE access right MUST have been granted to the caller when // the RPC context handle was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated UNICODE string that specifies the name // of the service to install. This MUST not be NULL. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpDisplayName: A pointer to a null-terminated UNICODE string that contains the display // name by which user interface programs identify the service. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` // dwDesiredAccess: A value that specifies the access to the service. This MUST be one // of the values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` // dwServiceType: A value that specifies the type of service. This MUST be one or a // combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A value that specifies when to start the service. This MUST be one of // the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: A value that specifies the severity of the error if the service fails // to start and determines the action that the SCM takes. This MUST be one of the following // values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated UNICODE string that contains the // fully qualified path to the service binary file. The path MAY include arguments. // If the path contains a space, it MUST be quoted so that it is correctly interpreted. // For example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated UNICODE string that names the load-ordering // group of which this service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or load // ordering groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is Unicode. Dependency on a service means that this service can only // run if the service it depends on is running. Dependency on a group means that this // service can run if at least one member of the group is running after an attempt to // start all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the lpDependencies parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: A pointer to a null-terminated UNICODE string that specifies // the name of the account under which the service SHOULD run. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A pointer to a null-terminated UNICODE string that contains the password // of the account whose name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` }
CreateServiceWRequest structure represents the RCreateServiceW operation request
func (*CreateServiceWRequest) MarshalNDR ¶
func (*CreateServiceWRequest) UnmarshalNDR ¶
type CreateServiceWResponse ¶
type CreateServiceWResponse struct { // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly created service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The RCreateServiceW return value. Return uint32 `idl:"name:Return" json:"return"` }
CreateServiceWResponse structure represents the RCreateServiceW operation response
func (*CreateServiceWResponse) MarshalNDR ¶
func (*CreateServiceWResponse) UnmarshalNDR ¶
type CreateWOWServiceRequest ¶
type CreateWOWServiceRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The SC_MANAGER_CREATE_SERVICE access right MUST have been granted to the caller when // the RPC context handle to the SCM was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated Unicode string that specifies the name // of the service to install. This MUST NOT be NULL. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpDisplayName: A pointer to a null-terminated Unicode string that contains the display // name by which user interface programs identify the service. DisplayName string `idl:"name:lpDisplayName;string;pointer:unique" json:"display_name"` // dwDesiredAccess: A value that specifies the access to the service. This MUST be one // of the values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` // dwServiceType: A value that specifies the type of service. This MUST be one or a // combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs within its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: A value that specifies when to start the service. This MUST be one of // the following values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | Starts the service automatically during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | Service cannot be started. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: A value that specifies the severity of the error if the service fails // to start and determines the action that the SCM takes. This MUST be one of the following // values. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error, but continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error. If the last-known good configuration is being started, | // | | the startup operation continues. Otherwise, the system is restarted with the | // | | last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error if possible. If the last-known good configuration | // | | is being started, the startup operation fails. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated UNICODE string that contains the // fully qualified path to the service binary file. The path MAY include arguments. // If the path contains a space, it MUST be quoted so that it is correctly interpreted. // For example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated UNICODE string that names the load-ordering // group of which this service is a member. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string;pointer:unique" json:"load_order_group"` // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or load // ordering groups that MUST start before this service. The array is doubly null-terminated. // Load ordering group names are prefixed with a "+" character (to distinguish them // from service names). If the pointer is NULL or if it points to an empty string, the // service has no dependencies. Cyclic dependency between services is not allowed. The // character set is Unicode. Dependency on a service means that this service can run // only if the service it depends on is running. Dependency on a group means that this // service can run if at least one member of the group is running after an attempt to // start all members of the group. Dependencies []byte `idl:"name:lpDependencies;size_is:(dwDependSize);pointer:unique" json:"dependencies"` // dwDependSize: The size, in bytes, of the string specified by the dwDependSize parameter. DependSize uint32 `idl:"name:dwDependSize" json:"depend_size"` // lpServiceStartName: A pointer to a null-terminated UNICODE string that specifies // the name of the account under which the service runs. ServiceStartName string `idl:"name:lpServiceStartName;string;pointer:unique" json:"service_start_name"` // lpPassword: A pointer to a null-terminated UNICODE string that contains the password // of the account whose name was specified by the lpServiceStartName parameter. Password []byte `idl:"name:lpPassword;size_is:(dwPwSize);pointer:unique" json:"password"` // dwPwSize: The size, in bytes, of the password specified by the lpPassword parameter. PasswordSize uint32 `idl:"name:dwPwSize" json:"password_size"` // dwServiceWowType: The image file machine constant corresponding to the architecture // that the service binary is compiled for. This MUST be one of the following values. // // +---------------------------------------+-----------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------------+-----------------------------------------------------------+ // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_UNKNOWN 0 | Unknown or unspecified | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_TARGET_HOST 0x0001 | Interacts with the host and not a WOW64 guest<84> | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_I386 0x014c | Intel 386 (also known as x86) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_R3000 0x0160 | MIPS 32-bit big-endian (R3000) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_R3000 0x0162 | MIPS 32-bit little-endian (R3000) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_R4000 0x0166 | MIPS 64-bit little-endian (R4000) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_R10000 0x0168 | MIPS 64-bit little-endian (R10000 MIPS IV) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169 | MIPS little-endian Windows Compact Edition (WCE) v2 | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_ALPHA 0x0184 | DEC Alpha AXP 32-bit | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_SH3 0x01a2 | Hitachi SH-3 32-bit little-endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_SH3DSP 0x01a3 | Hitachi SH-3 DSP 32-bit | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_SH3E 0x01a4 | Hitachi SH-3E 32-bit little-endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_SH4 0x01a6 | Hitachi SH-4 32-bit little-endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_SH5 0x01a8 | Hitachi SH-5 64-bit | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_ARM 0x01c0 | ARM Little-Endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_THUMB 0x01c2 | ARM Thumb/Thumb-2 Little-Endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_ARMNT 0x01c4 | ARM Thumb-2 Little-Endian<85> | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_AM33 0x01d3 | Matsushita AM33, now Panasonic MN103 | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_POWERPC 0x01F0 | IBM PowerPC 32-bit Little-Endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_POWERPCFP 0x01f1 | PowerPC 32-bit with FPU | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_IA64 0x0200 | Intel IA-64 (also known as Itanium Architecture) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_MIPS16 0x0266 | MIPS 16-bit | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_ALPHA64 0x0284 | DEC Alpha AXP 64-bit (same as IMAGE_FILE_MACHINE_AXP64) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_MIPSFPU 0x0366 | MIPS 32-bit with FPU | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_MIPSFPU16 0x0466 | MIPS 16-bit with FPU | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_AXP64 0x0284 | DEC Alpha AXP 64-bit (same as IMAGE_FILE_MACHINE_ALPHA64) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_TRICORE 0x0520 | Infineon AUDO 32-bit | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_CEF 0x0CEF | CEF | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_EBC 0x0EBC | EFI/UEFI Byte Code | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_AMD64 0x8664 | AMD64 (also known as x64) | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_M32R 0x9041 | Mitsubishi M32R 32-bit little-endian | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_ARM64 0xAA64 | ARM64 little-endian<86> | // +---------------------------------------+-----------------------------------------------------------+ // | IMAGE_FILE_MACHINE_CEE 0xC0EE | CEE | // +---------------------------------------+-----------------------------------------------------------+ ServiceWOWType uint16 `idl:"name:dwServiceWowType" json:"service_wow_type"` }
CreateWOWServiceRequest structure represents the RCreateWowService operation request
func (*CreateWOWServiceRequest) MarshalNDR ¶
func (*CreateWOWServiceRequest) UnmarshalNDR ¶
type CreateWOWServiceResponse ¶
type CreateWOWServiceResponse struct { // lpdwTagId: A pointer to a variable that receives a tag value. The value is unique // to the group specified in the lpLoadOrderGroup parameter. TagID uint32 `idl:"name:lpdwTagId;pointer:unique" json:"tag_id"` // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly created service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The RCreateWowService return value. Return uint32 `idl:"name:Return" json:"return"` }
CreateWOWServiceResponse structure represents the RCreateWowService operation response
func (*CreateWOWServiceResponse) MarshalNDR ¶
func (*CreateWOWServiceResponse) UnmarshalNDR ¶
type DeleteServiceRequest ¶
type DeleteServiceRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The DELETE access right MUST have been granted to the // caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` }
DeleteServiceRequest structure represents the RDeleteService operation request
func (*DeleteServiceRequest) MarshalNDR ¶
func (*DeleteServiceRequest) UnmarshalNDR ¶
type DeleteServiceResponse ¶
type DeleteServiceResponse struct { // Return: The RDeleteService return value. Return uint32 `idl:"name:Return" json:"return"` }
DeleteServiceResponse structure represents the RDeleteService operation response
func (*DeleteServiceResponse) MarshalNDR ¶
func (*DeleteServiceResponse) UnmarshalNDR ¶
type EnumDependentServicesARequest ¶
type EnumDependentServicesARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_ENUMERATE_DEPENDENT access right MUST have // been granted to the caller when the RPC context handle to the service record was // created. Service *Handle `idl:"name:hService" json:"service"` // dwServiceState: A value that specifies the service records to enumerate based on // the value of their ServiceStatus.dwCurrentState. This MUST be one of the following // values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records that have ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records that have ServiceStatus.dwCurrentState equal to | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates services that have ServiceStatus.dwCurrentState equal to one of | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the array pointed to by lpServices. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
EnumDependentServicesARequest structure represents the REnumDependentServicesA operation request
func (*EnumDependentServicesARequest) MarshalNDR ¶
func (*EnumDependentServicesARequest) UnmarshalNDR ¶
type EnumDependentServicesAResponse ¶
type EnumDependentServicesAResponse struct { // lpServices: A pointer to an array of ENUM_SERVICE_STATUSA (section 2.2.10) structures // that contain the name and service status information for each dependent service record // in the database. Services []byte `idl:"name:lpServices;size_is:(cbBufSize)" json:"services"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to store the array of service entries. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // Return: The REnumDependentServicesA return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumDependentServicesAResponse structure represents the REnumDependentServicesA operation response
func (*EnumDependentServicesAResponse) MarshalNDR ¶
func (*EnumDependentServicesAResponse) UnmarshalNDR ¶
type EnumDependentServicesWRequest ¶
type EnumDependentServicesWRequest struct { // hService: An SC_RPC_HANDLE data type that defines the handle to the service record // that MUST have been created previously, using one of the open methods specified in // section 3.1.4. The SERVICE_ENUMERATE_DEPENDENT access right MUST have been granted // to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // dwServiceState: A value that specifies the service records to enumerate based on // the value of their ServiceStatus.dwCurrentState. This MUST be one of the following // values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records that have a ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records that have a ServiceStatus.dwCurrentState equal to | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates service records that have a ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the array pointed to by lpServices. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
EnumDependentServicesWRequest structure represents the REnumDependentServicesW operation request
func (*EnumDependentServicesWRequest) MarshalNDR ¶
func (*EnumDependentServicesWRequest) UnmarshalNDR ¶
type EnumDependentServicesWResponse ¶
type EnumDependentServicesWResponse struct { // lpServices: A pointer to an array of ENUM_SERVICE_STATUSW (section 2.2.11) structures // that contain the name and service status information for each dependent service in // the database. Services []byte `idl:"name:lpServices;size_is:(cbBufSize)" json:"services"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to store the array of service entries. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // Return: The REnumDependentServicesW return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumDependentServicesWResponse structure represents the REnumDependentServicesW operation response
func (*EnumDependentServicesWResponse) MarshalNDR ¶
func (*EnumDependentServicesWResponse) UnmarshalNDR ¶
type EnumServiceGroupWRequest ¶
type EnumServiceGroupWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM created using one of the open methods specified in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE // access right MUST have been granted to the caller when the RPC context handle was // created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // dwServiceType: A value that specifies the service records to enumerate based on their // Type. This MUST be one or a combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwServiceState: A value that specifies the service records to enumerate based on // their ServiceStatus.dwCurrentState. This MUST be one of the following values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records with the ServiceStatus.dwCurrentState value | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the array pointed to by lpBuffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // pszGroupName: A pointer to a string that specifies service records to enumerate based // on their ServiceGroup value. GroupName string `idl:"name:pszGroupName;string;pointer:unique" json:"group_name"` }
EnumServiceGroupWRequest structure represents the REnumServiceGroupW operation request
func (*EnumServiceGroupWRequest) MarshalNDR ¶
func (*EnumServiceGroupWRequest) UnmarshalNDR ¶
type EnumServiceGroupWResponse ¶
type EnumServiceGroupWResponse struct { // lpBuffer: A pointer to an array of ENUM_SERVICE_STATUSW (section 2.2.11) structures // that contain the name and service status information for each dependent service in // the database. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to store the array of service entries. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // Return: The REnumServiceGroupW return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumServiceGroupWResponse structure represents the REnumServiceGroupW operation response
func (*EnumServiceGroupWResponse) MarshalNDR ¶
func (*EnumServiceGroupWResponse) UnmarshalNDR ¶
type EnumServiceStatusA ¶
type EnumServiceStatusA struct { // lpServiceName: A pointer to a null-terminated string that names a service in an // SCM database. ServiceName string `idl:"name:lpServiceName" json:"service_name"` // lpDisplayName: A pointer to a null-terminated string that user interface programs // use to identify the service. DisplayName string `idl:"name:lpDisplayName" json:"display_name"` // ServiceStatus: A SERVICE_STATUS (section 2.2.47) structure that contains status // information. ServiceStatus *ServiceStatus `idl:"name:ServiceStatus" json:"service_status"` }
EnumServiceStatusA structure represents ENUM_SERVICE_STATUSA RPC structure.
The ENUM_SERVICE_STATUSA structure defines the name and status of a service in an SCM database and returns information about the service. String values are stored in ANSI.
func (*EnumServiceStatusA) MarshalNDR ¶
func (*EnumServiceStatusA) UnmarshalNDR ¶
type EnumServiceStatusProcessA ¶
type EnumServiceStatusProcessA struct { // lpServiceName: A pointer to a null-terminated string that names a service in an // SCM database. ServiceName string `idl:"name:lpServiceName" json:"service_name"` // lpDisplayName: A pointer to a null-terminated string that contains the display name // of the service. DisplayName string `idl:"name:lpDisplayName" json:"display_name"` // ServiceStatusProcess: A SERVICE_STATUS_PROCESS (section 2.2.49) structure that contains // status information for the lpServiceName service. ServiceStatusProcess *ServiceStatusProcess `idl:"name:ServiceStatusProcess" json:"service_status_process"` }
EnumServiceStatusProcessA structure represents ENUM_SERVICE_STATUS_PROCESSA RPC structure.
The ENUM_SERVICE_STATUS_PROCESSA structure contains information used by the REnumServicesStatusExA method to return the name of a service in an SCM database. The structure also returns information about the service. String values are stored in ANSI.
func (*EnumServiceStatusProcessA) MarshalNDR ¶
func (*EnumServiceStatusProcessA) UnmarshalNDR ¶
type EnumServiceStatusProcessW ¶
type EnumServiceStatusProcessW struct { // lpServiceName: A pointer to a null-terminated string that names a service in an // SCM database. ServiceName string `idl:"name:lpServiceName" json:"service_name"` // lpDisplayName: A pointer to a null-terminated string that contains the display name // of the service. DisplayName string `idl:"name:lpDisplayName" json:"display_name"` // ServiceStatusProcess: A SERVICE_STATUS_PROCESS (section 2.2.49) structure that contains // status information for the lpServiceName service. ServiceStatusProcess *ServiceStatusProcess `idl:"name:ServiceStatusProcess" json:"service_status_process"` }
EnumServiceStatusProcessW structure represents ENUM_SERVICE_STATUS_PROCESSW RPC structure.
The ENUM_SERVICE_STATUS_PROCESSW structure contains information used by the REnumServicesStatusExW method to return the name of a service in an SCM database. The structure also returns information about the service. String values are stored in Unicode.
func (*EnumServiceStatusProcessW) MarshalNDR ¶
func (*EnumServiceStatusProcessW) UnmarshalNDR ¶
type EnumServiceStatusW ¶
type EnumServiceStatusW struct { // lpServiceName: A pointer to a null-terminated string that names a service in an // SCM database. ServiceName string `idl:"name:lpServiceName" json:"service_name"` // lpDisplayName: A pointer to a null-terminated string that user interface programs // use to identify the service. DisplayName string `idl:"name:lpDisplayName" json:"display_name"` // ServiceStatus: A SERVICE_STATUS (section 2.2.47) structure that contains status // information. ServiceStatus *ServiceStatus `idl:"name:ServiceStatus" json:"service_status"` }
EnumServiceStatusW structure represents ENUM_SERVICE_STATUSW RPC structure.
The ENUM_SERVICE_STATUSW structure defines the name and status of a service in an SCM database and returns information about the service. String values are stored in Unicode.
func (*EnumServiceStatusW) MarshalNDR ¶
func (*EnumServiceStatusW) UnmarshalNDR ¶
type EnumServicesStatusARequest ¶
type EnumServicesStatusARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE access right MUST have // been granted to the caller when the RPC context handle to the service record was // created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // dwServiceType: A value that specifies the service records to enumerate based on the // Type value. This MUST be one or a combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwServiceState: A value that specifies the service records to enumerate based on // their ServiceStatus.dwCurrentState. This MUST be one of the following values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records that have ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates services that have ServiceStatus.dwCurrentState equal to | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates services that have ServiceStatus.dwCurrentState equal to one of | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the array pointed to by lpBuffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` }
EnumServicesStatusARequest structure represents the REnumServicesStatusA operation request
func (*EnumServicesStatusARequest) MarshalNDR ¶
func (*EnumServicesStatusARequest) UnmarshalNDR ¶
type EnumServicesStatusAResponse ¶
type EnumServicesStatusAResponse struct { // lpBuffer: A pointer to an array of ENUM_SERVICE_STATUSA (section 2.2.10) structures // that contain the name and service status information for each dependent service in // the database. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to store the array of service entries. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // Return: The REnumServicesStatusA return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumServicesStatusAResponse structure represents the REnumServicesStatusA operation response
func (*EnumServicesStatusAResponse) MarshalNDR ¶
func (*EnumServicesStatusAResponse) UnmarshalNDR ¶
type EnumServicesStatusExARequest ¶
type EnumServicesStatusExARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE access right MUST have // been granted to the caller when the RPC context handle to the SCM was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // InfoLevel: An SC_ENUM_TYPE (section 2.2.20) structure that specifies which service // attributes to return. MUST be SC_ENUM_PROCESS_INFO. InfoLevel EnumType `idl:"name:InfoLevel" json:"info_level"` // dwServiceType: A value that specifies what type of service records to enumerate. // This MUST be one or a combination of the following values. // // +----------------------------------------+----------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x0000000F | Enumerates services of type SERVICE_KERNEL_DRIVER. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | Enumerates services of type SERVICE_FILE_SYSTEM_DRIVER. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Enumerates services of type SERVICE_WIN32_OWN_PROCESS. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Enumerates services of type SERVICE_WIN32_SHARE_PROCESS. | // +----------------------------------------+----------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwServiceState: Value that specifies the service records to enumerate based on their // ServiceStatus.dwCurrentState. This MUST be one of the following values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records with the ServiceStatus.dwCurrentState value | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the buffer pointed to by lpBuffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the current index in the enumerated list of service entries. The server // MUST assign a unique number to each service for the boot session, in increasing order, // and increment that number by one for each service addition. The value of the lpResumeIndex // parameter is one of these numbers, which the server can use to determine the resumption // point for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // pszGroupName: A pointer to a string that specifies service records to enumerate based // on their ServiceGroup values. GroupName string `idl:"name:pszGroupName;string;pointer:unique" json:"group_name"` }
EnumServicesStatusExARequest structure represents the REnumServicesStatusExA operation request
func (*EnumServicesStatusExARequest) MarshalNDR ¶
func (*EnumServicesStatusExARequest) UnmarshalNDR ¶
type EnumServicesStatusExAResponse ¶
type EnumServicesStatusExAResponse struct { // lpBuffer: A pointer to the buffer that contains the status information in the form // of an array of ENUM_SERVICE_STATUS_PROCESSA (section 2.2.12) structures. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to return the configuration information. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the current index in the enumerated list of service entries. The server // MUST assign a unique number to each service for the boot session, in increasing order, // and increment that number by one for each service addition. The value of the lpResumeIndex // parameter is one of these numbers, which the server can use to determine the resumption // point for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // Return: The REnumServicesStatusExA return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumServicesStatusExAResponse structure represents the REnumServicesStatusExA operation response
func (*EnumServicesStatusExAResponse) MarshalNDR ¶
func (*EnumServicesStatusExAResponse) UnmarshalNDR ¶
type EnumServicesStatusExWRequest ¶
type EnumServicesStatusExWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE access right MUST have // been granted to the caller when the RPC context handle to the SCM was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // InfoLevel: An SC_ENUM_TYPE (section 2.2.20) structure that specifies which service // attributes are returned. This MUST be SC_ENUM_PROCESS_INFO. InfoLevel EnumType `idl:"name:InfoLevel" json:"info_level"` // dwServiceType: A value that specifies the service records to enumerate based on their // Type. This MUST be one or a combination of the following values. // // +----------------------------------------+----------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | Enumerates services of type SERVICE_KERNEL_DRIVER. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | Enumerates services of type SERVICE_FILE_SYSTEM_DRIVER. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Enumerates services of type SERVICE_WIN32_OWN_PROCESS. | // +----------------------------------------+----------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Enumerates services of type SERVICE_WIN32_SHARE_PROCESS. | // +----------------------------------------+----------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwServiceState: A value that specifies the service records to enumerate based on // their ServiceStatus.dwCurrentState. This MUST be one of the following values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records with the ServiceStatus.dwCurrentState value | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates service records with ServiceStatus.dwCurrentState values from | // | | the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the buffer pointed to by lpBuffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the current index in the enumerated list of service entries. The server // MUST assign a unique number to each service for the boot session, in increasing order, // and increment that number by one for each service addition. The value of the lpResumeIndex // parameter is one of these numbers, which the server can use to determine the resumption // point for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // pszGroupName: A pointer to a string that specifies service records to enumerate based // on their ServiceGroup values. GroupName string `idl:"name:pszGroupName;string;pointer:unique" json:"group_name"` }
EnumServicesStatusExWRequest structure represents the REnumServicesStatusExW operation request
func (*EnumServicesStatusExWRequest) MarshalNDR ¶
func (*EnumServicesStatusExWRequest) UnmarshalNDR ¶
type EnumServicesStatusExWResponse ¶
type EnumServicesStatusExWResponse struct { // lpBuffer: A pointer to the buffer that contains the status information in the form // of an array of ENUM_SERVICE_STATUS_PROCESSW (section 2.2.13) structures. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to return the configuration information if the // method fails. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the current index in the enumerated list of service entries. The server // MUST assign a unique number to each service for the boot session, in increasing order, // and increment that number by one for each service addition. The value of the lpResumeIndex // parameter is one of these numbers, which the server can use to determine the resumption // point for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // Return: The REnumServicesStatusExW return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumServicesStatusExWResponse structure represents the REnumServicesStatusExW operation response
func (*EnumServicesStatusExWResponse) MarshalNDR ¶
func (*EnumServicesStatusExWResponse) UnmarshalNDR ¶
type EnumServicesStatusWRequest ¶
type EnumServicesStatusWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE access right MUST have // been granted to the caller when the RPC context handle to the service record was // created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // dwServiceType: A value that specifies what types of service records to enumerate. // This MUST be one or a combination of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | Service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | Service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwServiceState: A value that specifies the service records to enumerate based on // the value of their ServiceStatus.dwCurrentState. This MUST be one of the following // values. // // +------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------+----------------------------------------------------------------------------------+ // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ACTIVE 0x00000001 | Enumerates service records that have ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, and SERVICE_PAUSED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INACTIVE 0x00000002 | Enumerates service records that have ServiceStatus.dwCurrentState equal to | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STATE_ALL 0x00000003 | Enumerates service records that have ServiceStatus.dwCurrentState equal to one | // | | of the following: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, | // | | SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING, SERVICE_PAUSED, and | // | | SERVICE_STOPPED. | // +------------------------------+----------------------------------------------------------------------------------+ ServiceState uint32 `idl:"name:dwServiceState" json:"service_state"` // cbBufSize: The size, in bytes, of the array pointed to by the lpBuffer parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` }
EnumServicesStatusWRequest structure represents the REnumServicesStatusW operation request
func (*EnumServicesStatusWRequest) MarshalNDR ¶
func (*EnumServicesStatusWRequest) UnmarshalNDR ¶
type EnumServicesStatusWResponse ¶
type EnumServicesStatusWResponse struct { // lpBuffer: A pointer to an array of ENUM_SERVICE_STATUSW (section 2.2.11) structures // that contain the name and service status information for each service in the database. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to store the array of service entries. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // lpServicesReturned: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable // that contains the number of service entries returned. ServicesReturned uint32 `idl:"name:lpServicesReturned" json:"services_returned"` // lpResumeIndex: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // specifies the current position in the status enumeration. The server MUST assign // a unique number to each service for the boot session, in increasing order, and increment // that number by one for each service addition. The value of the lpResumeIndex parameter // is one of these numbers, which the server can use to determine the resumption point // for the enumeration. ResumeIndex uint32 `idl:"name:lpResumeIndex;pointer:unique" json:"resume_index"` // Return: The REnumServicesStatusW return value. Return uint32 `idl:"name:Return" json:"return"` }
EnumServicesStatusWResponse structure represents the REnumServicesStatusW operation response
func (*EnumServicesStatusWResponse) MarshalNDR ¶
func (*EnumServicesStatusWResponse) UnmarshalNDR ¶
type EnumType ¶
type EnumType uint32
EnumType type represents SC_ENUM_TYPE RPC enumeration.
The SC_ENUM_TYPE enumeration specifies information levels for the REnumServicesStatusExA and REnumServicesStatusExW methods.
var ( // SC_ENUM_PROCESS_INFO: Information level. EnumTypeProcessInfo EnumType = 0 )
type GetNotifyResultsRequest ¶
type GetNotifyResultsRequest struct { // hNotify: An SC_NOTIFY_RPC_HANDLE (section 2.2.6) data type that defines a handle // to the notification status associated with the client. This is the handle returned // by an RNotifyServiceStatusChange call. Notify *Notify `idl:"name:hNotify" json:"notify"` }
GetNotifyResultsRequest structure represents the RGetNotifyResults operation request
func (*GetNotifyResultsRequest) MarshalNDR ¶
func (*GetNotifyResultsRequest) UnmarshalNDR ¶
type GetNotifyResultsResponse ¶
type GetNotifyResultsResponse struct { // ppNotifyParams: A pointer to a buffer that receives an SC_RPC_NOTIFY_PARAMS_LIST // (section 2.2.24) data type. NotifyParams *NotifyParamsList `idl:"name:ppNotifyParams" json:"notify_params"` // Return: The RGetNotifyResults return value. Return uint32 `idl:"name:Return" json:"return"` }
GetNotifyResultsResponse structure represents the RGetNotifyResults operation response
func (*GetNotifyResultsResponse) MarshalNDR ¶
func (*GetNotifyResultsResponse) UnmarshalNDR ¶
type GetServiceDisplayNameARequest ¶
type GetServiceDisplayNameARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created previously, using one of the open methods specified in section // 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated ANSI string that specifies the service // name. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpcchBuffer: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the pointer // to a variable that specifies the size, in chars, of the buffer. On output, this variable // receives the size of the service's display name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` }
GetServiceDisplayNameARequest structure represents the RGetServiceDisplayNameA operation request
func (*GetServiceDisplayNameARequest) MarshalNDR ¶
func (*GetServiceDisplayNameARequest) UnmarshalNDR ¶
type GetServiceDisplayNameAResponse ¶
type GetServiceDisplayNameAResponse struct { // lpDisplayName: A pointer to a buffer that receives the null-terminated ANSI string // that contains the service display name. DisplayName string `idl:"name:lpDisplayName;size_is:(lpcchBuffer);string" json:"display_name"` // lpcchBuffer: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the pointer // to a variable that specifies the size, in chars, of the buffer. On output, this variable // receives the size of the service's display name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` // Return: The RGetServiceDisplayNameA return value. Return uint32 `idl:"name:Return" json:"return"` }
GetServiceDisplayNameAResponse structure represents the RGetServiceDisplayNameA operation response
func (*GetServiceDisplayNameAResponse) MarshalNDR ¶
func (*GetServiceDisplayNameAResponse) UnmarshalNDR ¶
type GetServiceDisplayNameWRequest ¶
type GetServiceDisplayNameWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database, created using one of the open methods specified in section 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated UNICODE string that specifies the service // name. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // lpcchBuffer: A DWORD data type that defines the pointer to a variable that specifies // the size, in wchar_ts, of the buffer. On output, this variable receives the size // of the service's display name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` }
GetServiceDisplayNameWRequest structure represents the RGetServiceDisplayNameW operation request
func (*GetServiceDisplayNameWRequest) MarshalNDR ¶
func (*GetServiceDisplayNameWRequest) UnmarshalNDR ¶
type GetServiceDisplayNameWResponse ¶
type GetServiceDisplayNameWResponse struct { // lpDisplayName: A pointer to a buffer that receives the null-terminated UNICODE string // that contains the service display name. DisplayName string `idl:"name:lpDisplayName;size_is:((lpcchBuffer+1));string" json:"display_name"` // lpcchBuffer: A DWORD data type that defines the pointer to a variable that specifies // the size, in wchar_ts, of the buffer. On output, this variable receives the size // of the service's display name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` // Return: The RGetServiceDisplayNameW return value. Return uint32 `idl:"name:Return" json:"return"` }
GetServiceDisplayNameWResponse structure represents the RGetServiceDisplayNameW operation response
func (*GetServiceDisplayNameWResponse) MarshalNDR ¶
func (*GetServiceDisplayNameWResponse) UnmarshalNDR ¶
type GetServiceKeyNameARequest ¶
type GetServiceKeyNameARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created previously, using one of the open methods specified in section // 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpDisplayName: A pointer to a null-terminated ANSI string that specifies the service // display name. DisplayName string `idl:"name:lpDisplayName;string" json:"display_name"` // lpcchBuffer: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the pointer // to a variable that specifies the size, in chars, of the buffer. On output, this variable // receives the size of the service name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` }
GetServiceKeyNameARequest structure represents the RGetServiceKeyNameA operation request
func (*GetServiceKeyNameARequest) MarshalNDR ¶
func (*GetServiceKeyNameARequest) UnmarshalNDR ¶
type GetServiceKeyNameAResponse ¶
type GetServiceKeyNameAResponse struct { // lpKeyName: A pointer to a buffer that receives the null-terminated ANSI string that // contains the service name. KeyName string `idl:"name:lpKeyName;size_is:(lpcchBuffer);string" json:"key_name"` // lpcchBuffer: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the pointer // to a variable that specifies the size, in chars, of the buffer. On output, this variable // receives the size of the service name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` // Return: The RGetServiceKeyNameA return value. Return uint32 `idl:"name:Return" json:"return"` }
GetServiceKeyNameAResponse structure represents the RGetServiceKeyNameA operation response
func (*GetServiceKeyNameAResponse) MarshalNDR ¶
func (*GetServiceKeyNameAResponse) UnmarshalNDR ¶
type GetServiceKeyNameWRequest ¶
type GetServiceKeyNameWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpDisplayName: A pointer to a null-terminated UNICODE string that specifies the service // display name. DisplayName string `idl:"name:lpDisplayName;string" json:"display_name"` // lpcchBuffer: A DWORD data type that defines the pointer to a variable that specifies // the size, in wchar_ts, of the buffer. On output, this variable receives the size // of the service name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` }
GetServiceKeyNameWRequest structure represents the RGetServiceKeyNameW operation request
func (*GetServiceKeyNameWRequest) MarshalNDR ¶
func (*GetServiceKeyNameWRequest) UnmarshalNDR ¶
type GetServiceKeyNameWResponse ¶
type GetServiceKeyNameWResponse struct { // lpServiceName: A pointer to a buffer that receives the null-terminated UNICODE string // that contains the service name. ServiceName string `idl:"name:lpServiceName;size_is:((lpcchBuffer+1));string" json:"service_name"` // lpcchBuffer: A DWORD data type that defines the pointer to a variable that specifies // the size, in wchar_ts, of the buffer. On output, this variable receives the size // of the service name, excluding the terminating null character. BufferLength uint32 `idl:"name:lpcchBuffer" json:"buffer_length"` // Return: The RGetServiceKeyNameW return value. Return uint32 `idl:"name:Return" json:"return"` }
GetServiceKeyNameWResponse structure represents the RGetServiceKeyNameW operation response
func (*GetServiceKeyNameWResponse) MarshalNDR ¶
func (*GetServiceKeyNameWResponse) UnmarshalNDR ¶
type Handle ¶
type Handle dcetypes.ContextHandle
Handle structure represents SC_RPC_HANDLE RPC structure.
func (*Handle) ContextHandle ¶
func (o *Handle) ContextHandle() *dcetypes.ContextHandle
type Lock ¶
type Lock dcetypes.ContextHandle
Lock structure represents SC_RPC_LOCK RPC structure.
func (*Lock) ContextHandle ¶
func (o *Lock) ContextHandle() *dcetypes.ContextHandle
type LockServiceDatabaseRequest ¶
type LockServiceDatabaseRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The caller MUST be granted the SC_MANAGER_LOCK access right when the RPC context // handle is created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` }
LockServiceDatabaseRequest structure represents the RLockServiceDatabase operation request
func (*LockServiceDatabaseRequest) MarshalNDR ¶
func (*LockServiceDatabaseRequest) UnmarshalNDR ¶
type LockServiceDatabaseResponse ¶
type LockServiceDatabaseResponse struct { // lpLock: An LPSC_RPC_LOCK (section 2.2.5) data type that defines the handle to the // resulting database lock. Lock *Lock `idl:"name:lpLock" json:"lock"` // Return: The RLockServiceDatabase return value. Return uint32 `idl:"name:Return" json:"return"` }
LockServiceDatabaseResponse structure represents the RLockServiceDatabase operation response
func (*LockServiceDatabaseResponse) MarshalNDR ¶
func (*LockServiceDatabaseResponse) UnmarshalNDR ¶
type Notify ¶
type Notify dcetypes.ContextHandle
Notify structure represents SC_NOTIFY_RPC_HANDLE RPC structure.
func (*Notify) ContextHandle ¶
func (o *Notify) ContextHandle() *dcetypes.ContextHandle
type NotifyBootConfigStatusRequest ¶
type NotifyBootConfigStatusRequest struct { // lpMachineName: An SVCCTL_HANDLEW (section 2.2.3) data type that defines the handle // that contains the UNICODE string name of the server to be notified. MachineName string `idl:"name:lpMachineName;string;pointer:unique" json:"machine_name"` // BootAcceptable: A value that specifies whether the configuration used when booting // the system is acceptable. MUST be one of the following values. // // +--------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------+----------------------------------------------------------------------------------+ // +--------------------+----------------------------------------------------------------------------------+ // | 0x00000000 < value | Server saves the configuration as the last-known good configuration. | // +--------------------+----------------------------------------------------------------------------------+ // | 0x00000000 | Server immediately reboots, using the previously saved last-known good | // | | configuration. | // +--------------------+----------------------------------------------------------------------------------+ BootAcceptable uint32 `idl:"name:BootAcceptable" json:"boot_acceptable"` }
NotifyBootConfigStatusRequest structure represents the RNotifyBootConfigStatus operation request
func (*NotifyBootConfigStatusRequest) MarshalNDR ¶
func (*NotifyBootConfigStatusRequest) UnmarshalNDR ¶
type NotifyBootConfigStatusResponse ¶
type NotifyBootConfigStatusResponse struct { // Return: The RNotifyBootConfigStatus return value. Return uint32 `idl:"name:Return" json:"return"` }
NotifyBootConfigStatusResponse structure represents the RNotifyBootConfigStatus operation response
func (*NotifyBootConfigStatusResponse) MarshalNDR ¶
func (*NotifyBootConfigStatusResponse) UnmarshalNDR ¶
type NotifyParams ¶
type NotifyParams struct { // dwInfoLevel: A value that indicates the version of the notification structure being // used. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` NotifyParams *NotifyParams_NotifyParams `idl:"name:NotifyParams;switch_is:dwInfoLevel" json:"notify_params"` }
NotifyParams structure represents SC_RPC_NOTIFY_PARAMS RPC structure.
The SC_RPC_NOTIFY_PARAMS structure<6> contains the parameters associated with the notification information of the service status.
func (*NotifyParams) MarshalNDR ¶
func (*NotifyParams) UnmarshalNDR ¶
type NotifyParamsList ¶
type NotifyParamsList struct { // cElements: The number of elements in the array. ElementsCount uint32 `idl:"name:cElements" json:"elements_count"` // NotifyParamsArray: An array of SC_RPC_NOTIFY_PARAMS (section 2.2.23) structures. NotifyParamsArray []*NotifyParams `idl:"name:NotifyParamsArray;size_is:(cElements)" json:"notify_params_array"` }
NotifyParamsList structure represents SC_RPC_NOTIFY_PARAMS_LIST RPC structure.
The SC_RPC_NOTIFY_PARAMS_LIST structure<7> defines an array of service state change parameters.
func (*NotifyParamsList) MarshalNDR ¶
func (*NotifyParamsList) NDRSizeInfo ¶
func (o *NotifyParamsList) NDRSizeInfo() []uint64
func (*NotifyParamsList) UnmarshalNDR ¶
type NotifyParams_NotifyParams ¶
type NotifyParams_NotifyParams struct { // Types that are assignable to Value // // *NotifyParams_StatusChangeParam1 // *NotifyParams_StatusChangeParams Value is_NotifyParams_NotifyParams `json:"value"` }
NotifyParams_NotifyParams structure represents SC_RPC_NOTIFY_PARAMS union anonymous member.
The SC_RPC_NOTIFY_PARAMS structure<6> contains the parameters associated with the notification information of the service status.
func (*NotifyParams_NotifyParams) GetValue ¶
func (o *NotifyParams_NotifyParams) GetValue() any
func (*NotifyParams_NotifyParams) MarshalUnionNDR ¶
func (*NotifyParams_NotifyParams) NDRSwitchValue ¶
func (o *NotifyParams_NotifyParams) NDRSwitchValue(sw uint32) uint32
func (*NotifyParams_NotifyParams) UnmarshalUnionNDR ¶
type NotifyParams_StatusChangeParam1 ¶
type NotifyParams_StatusChangeParam1 struct { // pStatusChangeParam1: A SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 (section 2.2.43) structure // that contains the service status notification information. StatusChangeParam1 *ServiceNotifyStatusChangeParams1 `idl:"name:pStatusChangeParam1" json:"status_change_param1"` }
NotifyParams_StatusChangeParam1 structure represents NotifyParams_NotifyParams RPC union arm.
It has following labels: 1
func (*NotifyParams_StatusChangeParam1) MarshalNDR ¶
func (*NotifyParams_StatusChangeParam1) UnmarshalNDR ¶
type NotifyParams_StatusChangeParams ¶
type NotifyParams_StatusChangeParams struct { // pStatusChangeParams: A SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 (section 2.2.44) structure // that contains the service status notification information. StatusChangeParams *ServiceNotifyStatusChangeParams2 `idl:"name:pStatusChangeParams" json:"status_change_params"` }
NotifyParams_StatusChangeParams structure represents NotifyParams_NotifyParams RPC union arm.
It has following labels: 2
func (*NotifyParams_StatusChangeParams) MarshalNDR ¶
func (*NotifyParams_StatusChangeParams) UnmarshalNDR ¶
type NotifyServiceStatusChangeRequest ¶
type NotifyServiceStatusChangeRequest struct { // hService: An SC_RPC_HANDLE data type that defines the handle to the SCM for SERVICE_NOTIFY_CREATED // and SERVICE_NOTIFY_DELETED notifications or to the service record for all other notification // types that MUST have been created previously, using one of the open methods specified // in section 3.1.4. The SC_MANAGER_ENUMERATE_SERVICE access right MUST have been granted // to the caller when the RPC context handle to the SCM was created, or the SERVICE_QUERY_STATUS // access right MUST have been granted to the caller when the RPC context handle to // the service record was created. Service *Handle `idl:"name:hService" json:"service"` // NotifyParams: An SC_RPC_NOTIFY_PARAMS (section 2.2.23) data type that defines the // service status notification information. NotifyParams *NotifyParams `idl:"name:NotifyParams" json:"notify_params"` // pClientProcessGuid: Not used. This MUST be ignored. ClientProcessGUID *dtyp.GUID `idl:"name:pClientProcessGuid" json:"client_process_guid"` }
NotifyServiceStatusChangeRequest structure represents the RNotifyServiceStatusChange operation request
func (*NotifyServiceStatusChangeRequest) MarshalNDR ¶
func (*NotifyServiceStatusChangeRequest) UnmarshalNDR ¶
type NotifyServiceStatusChangeResponse ¶
type NotifyServiceStatusChangeResponse struct { // pSCMProcessGuid: Not used. This MUST be ignored. SCMProcessGUID *dtyp.GUID `idl:"name:pSCMProcessGuid" json:"scm_process_guid"` // pfCreateRemoteQueue: Not used. This MUST be ignored. CreateRemoteQueue bool `idl:"name:pfCreateRemoteQueue" json:"create_remote_queue"` // phNotify: An LPSC_NOTIFY_RPC_HANDLE (section 2.2.6) data type that defines a handle // to the notification status associated with the client for the specified service. Notify *Notify `idl:"name:phNotify" json:"notify"` // Return: The RNotifyServiceStatusChange return value. Return uint32 `idl:"name:Return" json:"return"` }
NotifyServiceStatusChangeResponse structure represents the RNotifyServiceStatusChange operation response
func (*NotifyServiceStatusChangeResponse) MarshalNDR ¶
func (*NotifyServiceStatusChangeResponse) UnmarshalNDR ¶
type OpenSCM2Request ¶
type OpenSCM2Request struct { DatabaseName string `idl:"name:DatabaseName;string;pointer:unique" json:"database_name"` DesiredAccess uint32 `idl:"name:DesiredAccess" json:"desired_access"` }
OpenSCM2Request structure represents the ROpenSCManager2 operation request
func (*OpenSCM2Request) MarshalNDR ¶
func (*OpenSCM2Request) UnmarshalNDR ¶
type OpenSCM2Response ¶
type OpenSCM2Response struct { SCM *Handle `idl:"name:ScmHandle" json:"scm"` // Return: The ROpenSCManager2 return value. Return uint32 `idl:"name:Return" json:"return"` }
OpenSCM2Response structure represents the ROpenSCManager2 operation response
func (*OpenSCM2Response) MarshalNDR ¶
func (*OpenSCM2Response) UnmarshalNDR ¶
type OpenSCMARequest ¶
type OpenSCMARequest struct { // lpMachineName: An SVCCTL_HANDLEA (section 2.2.2) data type that defines the pointer // to a null-terminated ANSI string that specifies the server's machine name. MachineName string `idl:"name:lpMachineName;string;pointer:unique" json:"machine_name"` // lpDatabaseName: A pointer to a null-terminated ANSI string that specifies the name // of the SCM database to open. The parameter MUST be set to NULL, "ServicesActive", // or "ServicesFailed". DatabaseName string `idl:"name:lpDatabaseName;string;pointer:unique" json:"database_name"` // dwDesiredAccess: A value that specifies the access to the database. This MUST be // one of the values specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` }
OpenSCMARequest structure represents the ROpenSCManagerA operation request
func (*OpenSCMARequest) MarshalNDR ¶
func (*OpenSCMARequest) UnmarshalNDR ¶
type OpenSCMAResponse ¶
type OpenSCMAResponse struct { // lpScHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the newly opened SCM connection. SCM *Handle `idl:"name:lpScHandle" json:"scm"` // Return: The ROpenSCManagerA return value. Return uint32 `idl:"name:Return" json:"return"` }
OpenSCMAResponse structure represents the ROpenSCManagerA operation response
func (*OpenSCMAResponse) MarshalNDR ¶
func (*OpenSCMAResponse) UnmarshalNDR ¶
type OpenSCMWRequest ¶
type OpenSCMWRequest struct { // lpMachineName: An SVCCTL_HANDLEW (section 2.2.3) data type that defines the pointer // to a null-terminated UNICODE string that specifies the server's machine name. MachineName string `idl:"name:lpMachineName;string;pointer:unique" json:"machine_name"` // lpDatabaseName: A pointer to a null-terminated UNICODE string that specifies the // name of the SCM database to open. The parameter MUST be set to NULL, "ServicesActive", // or "ServicesFailed". DatabaseName string `idl:"name:lpDatabaseName;string;pointer:unique" json:"database_name"` // dwDesiredAccess: A value that specifies the access to the database. This MUST be // one of the values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` }
OpenSCMWRequest structure represents the ROpenSCManagerW operation request
func (*OpenSCMWRequest) MarshalNDR ¶
func (*OpenSCMWRequest) UnmarshalNDR ¶
type OpenSCMWResponse ¶
type OpenSCMWResponse struct { // lpScHandle: An LPSC_RPC_HANDLE data type that defines the handle to the newly opened // SCM database. SCM *Handle `idl:"name:lpScHandle" json:"scm"` // Return: The ROpenSCManagerW return value. Return uint32 `idl:"name:Return" json:"return"` }
OpenSCMWResponse structure represents the ROpenSCManagerW operation response
func (*OpenSCMWResponse) MarshalNDR ¶
func (*OpenSCMWResponse) UnmarshalNDR ¶
type OpenServiceARequest ¶
type OpenServiceARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database, created using one of the open methods specified in section 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated ANSI string that specifies the ServiceName // of the service record to open. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // dwDesiredAccess: A value that specifies the access right. This MUST be one of the // values specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` }
OpenServiceARequest structure represents the ROpenServiceA operation request
func (*OpenServiceARequest) MarshalNDR ¶
func (*OpenServiceARequest) UnmarshalNDR ¶
type OpenServiceAResponse ¶
type OpenServiceAResponse struct { // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the found service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The ROpenServiceA return value. Return uint32 `idl:"name:Return" json:"return"` }
OpenServiceAResponse structure represents the ROpenServiceA operation response
func (*OpenServiceAResponse) MarshalNDR ¶
func (*OpenServiceAResponse) UnmarshalNDR ¶
type OpenServiceWRequest ¶
type OpenServiceWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database, created using one of the open methods specified in section 3.1.4. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // lpServiceName: A pointer to a null-terminated UNICODE string that specifies the ServiceName // of the service record. // // The forward slash, back slash, comma, and space characters are illegal in service // names. ServiceName string `idl:"name:lpServiceName;string" json:"service_name"` // dwDesiredAccess: A value that specifies the access right. This MUST be one of the // values as specified in section 3.1.4. DesiredAccess uint32 `idl:"name:dwDesiredAccess" json:"desired_access"` }
OpenServiceWRequest structure represents the ROpenServiceW operation request
func (*OpenServiceWRequest) MarshalNDR ¶
func (*OpenServiceWRequest) UnmarshalNDR ¶
type OpenServiceWResponse ¶
type OpenServiceWResponse struct { // lpServiceHandle: An LPSC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the found service record. Service *Handle `idl:"name:lpServiceHandle" json:"service"` // Return: The ROpenServiceW return value. Return uint32 `idl:"name:Return" json:"return"` }
OpenServiceWResponse structure represents the ROpenServiceW operation response
func (*OpenServiceWResponse) MarshalNDR ¶
func (*OpenServiceWResponse) UnmarshalNDR ¶
type QueryServiceConfig2ARequest ¶
type QueryServiceConfig2ARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // dwInfoLevel: A value that specifies the configuration information to query. This // SHOULD be one of the following values. // // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_DESCRIPTION 0x00000001 | The lpBuffer parameter is a pointer to a SERVICE_DESCRIPTIONA structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_FAILURE_ACTIONS 0x00000002 | The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONSA structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_DELAYED_AUTO_START_INFO 0x00000003<56> | The lpBuffer parameter is a pointer to a SERVICE_DELAYED_AUTO_START_INFO | // | | structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 0x00000004<57> | The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONS_FLAG structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_SERVICE_SID_INFO 0x00000005<58> | The lpBuffer parameter is a pointer to a SERVICE_SID_INFO structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 0x00000006<59> | The lpBuffer parameter is a pointer to a SERVICE_RPC_REQUIRED_PRIVILEGES_INFO | // | | structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_PRESHUTDOWN_INFO 0x00000007<60> | The lpBuffer parameter is a pointer to a SERVICE_PRESHUTDOWN_INFO structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_PREFERRED_NODE 0x00000009<61> | The lpBuffer parameter is a pointer to a SERVICE_PREFERRED_NODE_INFO | // | | structure.<62> | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` // cbBufSize: The size, in bytes, of the lpBuffer parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceConfig2ARequest structure represents the RQueryServiceConfig2A operation request
func (*QueryServiceConfig2ARequest) MarshalNDR ¶
func (*QueryServiceConfig2ARequest) UnmarshalNDR ¶
type QueryServiceConfig2AResponse ¶
type QueryServiceConfig2AResponse struct { // lpBuffer: A pointer to the buffer that contains the service configuration information. // The format of this data depends on the value of the dwInfoLevel parameter. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the // pointer to a variable that contains the number of bytes needed to return the configuration // information. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceConfig2A return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceConfig2AResponse structure represents the RQueryServiceConfig2A operation response
func (*QueryServiceConfig2AResponse) MarshalNDR ¶
func (*QueryServiceConfig2AResponse) UnmarshalNDR ¶
type QueryServiceConfig2WRequest ¶
type QueryServiceConfig2WRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been // granted to the caller when the RPC context handle to the service record was created. // // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_DESCRIPTION 0x00000001 | The lpBuffer parameter is a pointer to a SERVICE_DESCRIPTION_WOW64 (section | // | | 2.2.36) structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_FAILURE_ACTIONS 0x00000002 | The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONS_WOW64 (section | // | | 2.2.37) structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_DELAYED_AUTO_START_INFO 0x00000003<65> | The lpBuffer parameter is a pointer to a SERVICE_DELAYED_AUTO_START_INFO | // | | structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 0x00000004<66> | The lpBuffer parameter is a pointer to a SERVICE_FAILURE_ACTIONS_FLAG structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_SERVICE_SID_INFO 0x00000005<67> | The lpBuffer parameter is a pointer to a SERVICE_SID_INFO structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 0x00000006<68> | The lpBuffer parameter is a pointer to a SERVICE_REQUIRED_PRIVILEGES_INFO_WOW64 | // | | (section 2.2.38) structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_PRESHUTDOWN_INFO 0x00000007<69> | The lpBuffer parameter is a pointer to a SERVICE_PRESHUTDOWN_INFO structure. | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_CONFIG_PREFERRED_NODE 0x00000009<70> | The lpBuffer parameter is a pointer to a SERVICE_PREFERRED_NODE_INFO | // | | structure.<71> | // +--------------------------------------------------------+----------------------------------------------------------------------------------+ Service *Handle `idl:"name:hService" json:"service"` // dwInfoLevel: A value that specifies the configuration information to query. This // MUST be one of the following values. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` // cbBufSize: The size, in bytes, of the lpBuffer parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceConfig2WRequest structure represents the RQueryServiceConfig2W operation request
func (*QueryServiceConfig2WRequest) MarshalNDR ¶
func (*QueryServiceConfig2WRequest) UnmarshalNDR ¶
type QueryServiceConfig2WResponse ¶
type QueryServiceConfig2WResponse struct { // lpBuffer: A pointer to the buffer that contains the service configuration information. // The format of this data depends on the value of the dwInfoLevel parameter. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the // pointer to a variable that receives the number of bytes needed to return the configuration // information. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceConfig2W return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceConfig2WResponse structure represents the RQueryServiceConfig2W operation response
func (*QueryServiceConfig2WResponse) MarshalNDR ¶
func (*QueryServiceConfig2WResponse) UnmarshalNDR ¶
type QueryServiceConfigA ¶
type QueryServiceConfigA struct { // dwServiceType: The type of service. This member MUST be one of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | A service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | A service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: Defines when to start the service. This member MUST be one of the following // values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | A service started automatically by the SCM during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | A service that cannot be started. Attempts to start the service result in the | // | | error code ERROR_SERVICE_DISABLED. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: The severity of the error if this service fails to start during // startup, and the action that the SCM takes if failure occurs. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error in the event log and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error in the event log. If the last-known good configuration | // | | is being started, the startup operation continues. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error in the event log if possible. If the last-known | // | | good configuration is being started, the startup operation fails. Otherwise, the | // | | system is restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated string that contains the fully // qualified path to the service binary file. The path MAY include arguments. If the // path contains a space, it MUST be quoted so that it is correctly interpreted. For // example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated string that names the service group // for load-ordering of which this service is a member. If the pointer is NULL or if // it points to an empty string, the service does not belong to a group. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string" json:"load_order_group"` // dwTagId: A unique tag value for this service within the service group specified // by the lpLoadOrderGroup parameter. A value of 0 indicates that the service has not // been assigned a tag. TagID uint32 `idl:"name:dwTagId" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or names // of service groups that MUST start before this service. The array is doubly null-terminated. // Service group names are prefixed with a "+" character (to distinguish them from service // names). If the pointer is NULL or if it points to an empty string, the service has // no dependencies. Cyclic dependency between services is not allowed. The character // set is ANSI. Dependency on a service means that this service can only run if the // service it depends on is running. Dependency on a group means that this service can // run if at least one member of the group is running after an attempt to start all // members of the group. Dependencies string `idl:"name:lpDependencies;string" json:"dependencies"` // lpServiceStartName: A pointer to a null-terminated string that contains the service // name. ServiceStartName string `idl:"name:lpServiceStartName;string" json:"service_start_name"` // lpDisplayName: A pointer to a null-terminated string that contains the service display // name. DisplayName string `idl:"name:lpDisplayName;string" json:"display_name"` }
QueryServiceConfigA structure represents QUERY_SERVICE_CONFIGA RPC structure.
The QUERY_SERVICE_CONFIGA structure defines configuration information about an installed service. String values are stored in ANSI.
func (*QueryServiceConfigA) MarshalNDR ¶
func (*QueryServiceConfigA) UnmarshalNDR ¶
type QueryServiceConfigARequest ¶
type QueryServiceConfigARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been // granted to the caller when the RPC context handle was created. Service *Handle `idl:"name:hService" json:"service"` // cbBufSize: The size, in bytes, of the lpServiceConfig parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceConfigARequest structure represents the RQueryServiceConfigA operation request
func (*QueryServiceConfigARequest) MarshalNDR ¶
func (*QueryServiceConfigARequest) UnmarshalNDR ¶
type QueryServiceConfigAResponse ¶
type QueryServiceConfigAResponse struct { // lpServiceConfig: A pointer to a buffer that contains the QUERY_SERVICE_CONFIGA structure. ServiceConfig *QueryServiceConfigA `idl:"name:lpServiceConfig" json:"service_config"` // pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the // pointer to a variable that contains the number of bytes needed to return all the // configuration information if the function fails. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceConfigA return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceConfigAResponse structure represents the RQueryServiceConfigA operation response
func (*QueryServiceConfigAResponse) MarshalNDR ¶
func (*QueryServiceConfigAResponse) UnmarshalNDR ¶
type QueryServiceConfigExRequest ¶
type QueryServiceConfigExRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been // granted to the caller when the RPC context handle was created. Service *Handle `idl:"name:hService" json:"service"` // dwInfoLevel: The information level for the service configuration parameters. This // MUST be set to 0x00000008 which corresponds to the service's trigger information. InfoLevel uint32 `idl:"name:dwInfoLevel" json:"info_level"` }
QueryServiceConfigExRequest structure represents the RQueryServiceConfigEx operation request
func (*QueryServiceConfigExRequest) MarshalNDR ¶
func (*QueryServiceConfigExRequest) UnmarshalNDR ¶
type QueryServiceConfigExResponse ¶
type QueryServiceConfigExResponse struct { // pInfo: A pointer to an SC_RPC_CONFIG_INFOW (section 2.2.22) structure that contains // optional configuration information. Info *ConfigInfoW `idl:"name:pInfo" json:"info"` // Return: The RQueryServiceConfigEx return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceConfigExResponse structure represents the RQueryServiceConfigEx operation response
func (*QueryServiceConfigExResponse) MarshalNDR ¶
func (*QueryServiceConfigExResponse) UnmarshalNDR ¶
type QueryServiceConfigW ¶
type QueryServiceConfigW struct { // dwServiceType: The type of service. This member MUST be one of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | A service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | A service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwStartType: Defines when to start the service. This member MUST be one of the following // values. // // +---------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_BOOT_START 0x00000000 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SYSTEM_START 0x00000001 | Starts the driver service when the system boots up. This value is valid only for | // | | driver services. The services marked SERVICE_SYSTEM_START are started after all | // | | SERVICE_BOOT_START services have been started. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_AUTO_START 0x00000002 | A service started automatically by the SCM during system startup. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DEMAND_START 0x00000003 | Starts the service when a client requests the SCM to start the service. | // +---------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_DISABLED 0x00000004 | A service that cannot be started. Attempts to start the service result in the | // | | error code ERROR_SERVICE_DISABLED. | // +---------------------------------+----------------------------------------------------------------------------------+ StartType uint32 `idl:"name:dwStartType" json:"start_type"` // dwErrorControl: The severity of the error if this service fails to start during // startup and the action the SCM takes if failure occurs. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_IGNORE 0x00000000 | The SCM ignores the error and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_NORMAL 0x00000001 | The SCM logs the error in the event log and continues the startup operation. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_SEVERE 0x00000002 | The SCM logs the error in the event log. If the last-known good configuration | // | | is being started, the startup operation continues. Otherwise, the system is | // | | restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_ERROR_CRITICAL 0x00000003 | The SCM SHOULD log the error in the event log if possible. If the last-known | // | | good configuration is being started, the startup operation fails. Otherwise, the | // | | system is restarted with the last-known good configuration. | // +-----------------------------------+----------------------------------------------------------------------------------+ ErrorControl uint32 `idl:"name:dwErrorControl" json:"error_control"` // lpBinaryPathName: A pointer to a null-terminated string that contains the fully // qualified path to the service binary file. The path MAY include arguments. If the // path contains a space, it MUST be quoted so that it is correctly interpreted. For // example, "d:\\my share\\myservice.exe" is specified as "\"d:\\my share\\myservice.exe\"". BinaryPathName string `idl:"name:lpBinaryPathName;string" json:"binary_path_name"` // lpLoadOrderGroup: A pointer to a null-terminated string that names the service group // for load ordering of which this service is a member. If the pointer is NULL or if // it points to an empty string, the service does not belong to a group. LoadOrderGroup string `idl:"name:lpLoadOrderGroup;string" json:"load_order_group"` // dwTagId: A unique tag value for this service in the service group. A value of 0 // indicates that the service has not been assigned a tag. TagID uint32 `idl:"name:dwTagId" json:"tag_id"` // lpDependencies: A pointer to an array of null-separated names of services or service // groups that MUST start before this service. The array is doubly null-terminated. // Service group names are prefixed with a "+" character (to distinguish them from service // names). If the pointer is NULL or if it points to an empty string, the service has // no dependencies. Cyclic dependency between services is not allowed. The character // set is Unicode. Dependency on a service means that this service can only run if the // service it depends on is running. Dependency on a group means that this service can // run if at least one member of the group is running after an attempt to start all // members of the group. Dependencies string `idl:"name:lpDependencies;string" json:"dependencies"` // lpServiceStartName: A pointer to a null-terminated string that contains the service // start (key) name. ServiceStartName string `idl:"name:lpServiceStartName;string" json:"service_start_name"` // lpDisplayName: A pointer to a null-terminated string that contains the service display // name. DisplayName string `idl:"name:lpDisplayName;string" json:"display_name"` }
QueryServiceConfigW structure represents QUERY_SERVICE_CONFIGW RPC structure.
The QUERY_SERVICE_CONFIGW structure defines configuration information about an installed service. String values are stored in Unicode.
func (*QueryServiceConfigW) MarshalNDR ¶
func (*QueryServiceConfigW) UnmarshalNDR ¶
type QueryServiceConfigWRequest ¶
type QueryServiceConfigWRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_CONFIG access right MUST have been // granted to the caller when the RPC context handle was created. Service *Handle `idl:"name:hService" json:"service"` // cbBufSize: The size, in bytes, of the lpServiceConfig parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceConfigWRequest structure represents the RQueryServiceConfigW operation request
func (*QueryServiceConfigWRequest) MarshalNDR ¶
func (*QueryServiceConfigWRequest) UnmarshalNDR ¶
type QueryServiceConfigWResponse ¶
type QueryServiceConfigWResponse struct { // lpServiceConfig: A pointer to a buffer that contains the QUERY_SERVICE_CONFIGW (section // 2.2.15) structure. ServiceConfig *QueryServiceConfigW `idl:"name:lpServiceConfig" json:"service_config"` // pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the // pointer to a variable that contains the number of bytes needed to return all the // configuration information if the method fails. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceConfigW return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceConfigWResponse structure represents the RQueryServiceConfigW operation response
func (*QueryServiceConfigWResponse) MarshalNDR ¶
func (*QueryServiceConfigWResponse) UnmarshalNDR ¶
type QueryServiceLockStatusA ¶
type QueryServiceLockStatusA struct { // fIsLocked: The lock status of the database. If this member is nonzero, the database // is locked. If it is 0, the database is unlocked. IsLocked uint32 `idl:"name:fIsLocked" json:"is_locked"` // lpLockOwner: A pointer to a null-terminated string that contains the name of the // user that acquired the lock. LockOwner string `idl:"name:lpLockOwner;string" json:"lock_owner"` // dwLockDuration: The elapsed time, in seconds, since the lock was first acquired. LockDuration uint32 `idl:"name:dwLockDuration" json:"lock_duration"` }
QueryServiceLockStatusA structure represents QUERY_SERVICE_LOCK_STATUSA RPC structure.
The QUERY_SERVICE_LOCK_STATUSA structure defines information about the lock status of an SCM database. String values are stored in ANSI.
func (*QueryServiceLockStatusA) MarshalNDR ¶
func (*QueryServiceLockStatusA) UnmarshalNDR ¶
type QueryServiceLockStatusARequest ¶
type QueryServiceLockStatusARequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created previously, using one of the open methods specified in section // 3.1.4. The SC_MANAGER_QUERY_LOCK_STATUS access right MUST have been granted to the // caller when the RPC context handle was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // cbBufSize: The size, in bytes, of the lpLockStatus buffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceLockStatusARequest structure represents the RQueryServiceLockStatusA operation request
func (*QueryServiceLockStatusARequest) MarshalNDR ¶
func (*QueryServiceLockStatusARequest) UnmarshalNDR ¶
type QueryServiceLockStatusAResponse ¶
type QueryServiceLockStatusAResponse struct { // lpLockStatus: A pointer to a buffer that contains the QUERY_SERVICE_LOCK_STATUSA // (section 2.2.16) structures. LockStatus *QueryServiceLockStatusA `idl:"name:lpLockStatus" json:"lock_status"` // pcbBytesNeeded: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the // pointer to a variable that receives the number of bytes needed to return all the // lock status. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceLockStatusA return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceLockStatusAResponse structure represents the RQueryServiceLockStatusA operation response
func (*QueryServiceLockStatusAResponse) MarshalNDR ¶
func (*QueryServiceLockStatusAResponse) UnmarshalNDR ¶
type QueryServiceLockStatusW ¶
type QueryServiceLockStatusW struct { // fIsLocked: The lock status of the database. If this member is nonzero, the database // is locked. If it is 0, the database is unlocked. IsLocked uint32 `idl:"name:fIsLocked" json:"is_locked"` // lpLockOwner: A pointer to a null-terminated string that contains the name of the // user that acquired the lock. LockOwner string `idl:"name:lpLockOwner;string" json:"lock_owner"` // dwLockDuration: The elapsed time, in seconds, since the lock was first acquired. LockDuration uint32 `idl:"name:dwLockDuration" json:"lock_duration"` }
QueryServiceLockStatusW structure represents QUERY_SERVICE_LOCK_STATUSW RPC structure.
The QUERY_SERVICE_LOCK_STATUSW structure defines information about the lock status of an SCM database. String values are stored in Unicode.
func (*QueryServiceLockStatusW) MarshalNDR ¶
func (*QueryServiceLockStatusW) UnmarshalNDR ¶
type QueryServiceLockStatusWRequest ¶
type QueryServiceLockStatusWRequest struct { // hSCManager: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to // the SCM database created using one of the open methods specified in section 3.1.4. // The SC_MANAGER_QUERY_LOCK_STATUS access right MUST have been granted to the caller // when the RPC context handle was created. ServiceManager *Handle `idl:"name:hSCManager" json:"service_manager"` // cbBufSize: The size, in bytes, of the lpLockStatus buffer. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceLockStatusWRequest structure represents the RQueryServiceLockStatusW operation request
func (*QueryServiceLockStatusWRequest) MarshalNDR ¶
func (*QueryServiceLockStatusWRequest) UnmarshalNDR ¶
type QueryServiceLockStatusWResponse ¶
type QueryServiceLockStatusWResponse struct { // lpLockStatus: A pointer to a buffer that contains QUERY_SERVICE_LOCK_STATUSW (section // 2.2.17) structures. LockStatus *QueryServiceLockStatusW `idl:"name:lpLockStatus" json:"lock_status"` // pcbBytesNeeded: An LPBOUNDED_DWORD_4K (section 2.2.7) data type that defines the // pointer to a variable that receives the number of bytes needed to return all the // lock status information if the method fails. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceLockStatusW return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceLockStatusWResponse structure represents the RQueryServiceLockStatusW operation response
func (*QueryServiceLockStatusWResponse) MarshalNDR ¶
func (*QueryServiceLockStatusWResponse) UnmarshalNDR ¶
type QueryServiceObjectSecurityRequest ¶
type QueryServiceObjectSecurityRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to a // service record or to the SCM database that MUST have been created previously using // one of the open methods specified in section 3.1.4. Service *Handle `idl:"name:hService" json:"service"` // dwSecurityInformation: A SECURITY_INFORMATION (section 2.2.1) type definition that // specifies the security information being requested. SecurityInformation uint32 `idl:"name:dwSecurityInformation" json:"security_information"` // cbBufSize: Size, in bytes, of the buffer to which the lpSecurityDescriptor parameter // points. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceObjectSecurityRequest structure represents the RQueryServiceObjectSecurity operation request
func (*QueryServiceObjectSecurityRequest) MarshalNDR ¶
func (*QueryServiceObjectSecurityRequest) UnmarshalNDR ¶
type QueryServiceObjectSecurityResponse ¶
type QueryServiceObjectSecurityResponse struct { // lpSecurityDescriptor: A pointer to a buffer that contains a copy of the SECURITY_DESCRIPTOR // structure (as specified in [MS-DTYP] section 2.4.6) for the specified service object. SecurityDescriptor []byte `idl:"name:lpSecurityDescriptor;size_is:(cbBufSize)" json:"security_descriptor"` // pcbBytesNeeded: An LPBOUNDED_DWORD_256K (section 2.2.9) pointer to a variable that // contains the number of bytes needed to return all the requested SECURITY_DESCRIPTOR // information if the method fails. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceObjectSecurity return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceObjectSecurityResponse structure represents the RQueryServiceObjectSecurity operation response
func (*QueryServiceObjectSecurityResponse) MarshalNDR ¶
func (*QueryServiceObjectSecurityResponse) UnmarshalNDR ¶
type QueryServiceStatusExRequest ¶
type QueryServiceStatusExRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously, using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_STATUS access right MUST have been // granted to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // InfoLevel: An enumerated value from SC_STATUS_TYPE (section 2.2.29) that specifies // which service attributes are returned. MUST be SC_STATUS_PROCESS_INFO. InfoLevel StatusType `idl:"name:InfoLevel" json:"info_level"` // cbBufSize: The size, in bytes, of the lpBuffer parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
QueryServiceStatusExRequest structure represents the RQueryServiceStatusEx operation request
func (*QueryServiceStatusExRequest) MarshalNDR ¶
func (*QueryServiceStatusExRequest) UnmarshalNDR ¶
type QueryServiceStatusExResponse ¶
type QueryServiceStatusExResponse struct { // lpBuffer: A pointer to the buffer that contains the status information in the form // of a SERVICE_STATUS_PROCESS (section 2.2.49) structure. Buffer []byte `idl:"name:lpBuffer;size_is:(cbBufSize)" json:"buffer"` // pcbBytesNeeded: An LPBOUNDED_DWORD_8K (section 2.2.8) data type that defines the // pointer to a variable that contains the number of bytes needed to return the configuration // information. BytesNeededLength uint32 `idl:"name:pcbBytesNeeded" json:"bytes_needed_length"` // Return: The RQueryServiceStatusEx return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceStatusExResponse structure represents the RQueryServiceStatusEx operation response
func (*QueryServiceStatusExResponse) MarshalNDR ¶
func (*QueryServiceStatusExResponse) UnmarshalNDR ¶
type QueryServiceStatusRequest ¶
type QueryServiceStatusRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously using one of the open methods // specified in section 3.1.4. The SERVICE_QUERY_STATUS access right MUST have been // granted to the caller when the RPC context handle was created. Service *Handle `idl:"name:hService" json:"service"` }
QueryServiceStatusRequest structure represents the RQueryServiceStatus operation request
func (*QueryServiceStatusRequest) MarshalNDR ¶
func (*QueryServiceStatusRequest) UnmarshalNDR ¶
type QueryServiceStatusResponse ¶
type QueryServiceStatusResponse struct { // lpServiceStatus: Pointer to a SERVICE_STATUS (section 2.2.47) structure that contains // the status information for the service. ServiceStatus *ServiceStatus `idl:"name:lpServiceStatus" json:"service_status"` // Return: The RQueryServiceStatus return value. Return uint32 `idl:"name:Return" json:"return"` }
QueryServiceStatusResponse structure represents the RQueryServiceStatus operation response
func (*QueryServiceStatusResponse) MarshalNDR ¶
func (*QueryServiceStatusResponse) UnmarshalNDR ¶
type RequiredPrivilegesInfo ¶
type RequiredPrivilegesInfo struct { // cbRequiredPrivileges: Size, in bytes, of the pRequiredPrivileges buffer. RequiredPrivilegesLength uint32 `idl:"name:cbRequiredPrivileges" json:"required_privileges_length"` // pRequiredPrivileges: Buffer that contains the required privileges of a service in // the format of a sequence of null-terminated strings, terminated by an empty string // (\0). The privilege constants are detailed in [MS-LSAD] section 3.1.1.2.1. RequiredPrivileges []byte `idl:"name:pRequiredPrivileges;size_is:(cbRequiredPrivileges)" json:"required_privileges"` }
RequiredPrivilegesInfo structure represents SERVICE_RPC_REQUIRED_PRIVILEGES_INFO RPC structure.
The SERVICE_RPC_REQUIRED_PRIVILEGES_INFO structure<21> defines the required privileges for a service.
func (*RequiredPrivilegesInfo) MarshalNDR ¶
func (*RequiredPrivilegesInfo) UnmarshalNDR ¶
type ServiceControlInParamsA ¶
type ServiceControlInParamsA struct { // Types that are assignable to Value // // *ServiceControlInParamsA_StatusReasonInParams Value is_ServiceControlInParamsA `json:"value"` }
ServiceControlInParamsA structure represents SC_RPC_SERVICE_CONTROL_IN_PARAMSA RPC union.
func (*ServiceControlInParamsA) GetValue ¶
func (o *ServiceControlInParamsA) GetValue() any
func (*ServiceControlInParamsA) MarshalUnionNDR ¶
func (*ServiceControlInParamsA) NDRSwitchValue ¶
func (o *ServiceControlInParamsA) NDRSwitchValue(sw uint32) uint32
func (*ServiceControlInParamsA) UnmarshalUnionNDR ¶
type ServiceControlInParamsA_StatusReasonInParams ¶
type ServiceControlInParamsA_StatusReasonInParams struct {
StatusReasonInParams *ServiceControlStatusReasonInParamsA `idl:"name:psrInParams" json:"status_reason_in_params"`
}
ServiceControlInParamsA_StatusReasonInParams structure represents SC_RPC_SERVICE_CONTROL_IN_PARAMSA RPC union arm.
It has following labels: 1
func (*ServiceControlInParamsA_StatusReasonInParams) MarshalNDR ¶
func (*ServiceControlInParamsA_StatusReasonInParams) UnmarshalNDR ¶
type ServiceControlInParamsW ¶
type ServiceControlInParamsW struct { // Types that are assignable to Value // // *ServiceControlInParamsW_StatusReasonInParams Value is_ServiceControlInParamsW `json:"value"` }
ServiceControlInParamsW structure represents SC_RPC_SERVICE_CONTROL_IN_PARAMSW RPC union.
func (*ServiceControlInParamsW) GetValue ¶
func (o *ServiceControlInParamsW) GetValue() any
func (*ServiceControlInParamsW) MarshalUnionNDR ¶
func (*ServiceControlInParamsW) NDRSwitchValue ¶
func (o *ServiceControlInParamsW) NDRSwitchValue(sw uint32) uint32
func (*ServiceControlInParamsW) UnmarshalUnionNDR ¶
type ServiceControlInParamsW_StatusReasonInParams ¶
type ServiceControlInParamsW_StatusReasonInParams struct {
StatusReasonInParams *ServiceControlStatusReasonInParamsW `idl:"name:psrInParams" json:"status_reason_in_params"`
}
ServiceControlInParamsW_StatusReasonInParams structure represents SC_RPC_SERVICE_CONTROL_IN_PARAMSW RPC union arm.
It has following labels: 1
func (*ServiceControlInParamsW_StatusReasonInParams) MarshalNDR ¶
func (*ServiceControlInParamsW_StatusReasonInParams) UnmarshalNDR ¶
type ServiceControlOutParamsA ¶
type ServiceControlOutParamsA struct { // Types that are assignable to Value // // *ServiceControlOutParamsA_StatusReasonOutParams Value is_ServiceControlOutParamsA `json:"value"` }
ServiceControlOutParamsA structure represents SC_RPC_SERVICE_CONTROL_OUT_PARAMSA RPC union.
func (*ServiceControlOutParamsA) GetValue ¶
func (o *ServiceControlOutParamsA) GetValue() any
func (*ServiceControlOutParamsA) MarshalUnionNDR ¶
func (*ServiceControlOutParamsA) NDRSwitchValue ¶
func (o *ServiceControlOutParamsA) NDRSwitchValue(sw uint32) uint32
func (*ServiceControlOutParamsA) UnmarshalUnionNDR ¶
type ServiceControlOutParamsA_StatusReasonOutParams ¶
type ServiceControlOutParamsA_StatusReasonOutParams struct {
StatusReasonOutParams *ServiceControlStatusReasonOutParams `idl:"name:psrOutParams" json:"status_reason_out_params"`
}
ServiceControlOutParamsA_StatusReasonOutParams structure represents SC_RPC_SERVICE_CONTROL_OUT_PARAMSA RPC union arm.
It has following labels: 1
func (*ServiceControlOutParamsA_StatusReasonOutParams) MarshalNDR ¶
func (*ServiceControlOutParamsA_StatusReasonOutParams) UnmarshalNDR ¶
type ServiceControlOutParamsW ¶
type ServiceControlOutParamsW struct { // Types that are assignable to Value // // *ServiceControlOutParamsW_StatusReasonOutParams Value is_ServiceControlOutParamsW `json:"value"` }
ServiceControlOutParamsW structure represents SC_RPC_SERVICE_CONTROL_OUT_PARAMSW RPC union.
func (*ServiceControlOutParamsW) GetValue ¶
func (o *ServiceControlOutParamsW) GetValue() any
func (*ServiceControlOutParamsW) MarshalUnionNDR ¶
func (*ServiceControlOutParamsW) NDRSwitchValue ¶
func (o *ServiceControlOutParamsW) NDRSwitchValue(sw uint32) uint32
func (*ServiceControlOutParamsW) UnmarshalUnionNDR ¶
type ServiceControlOutParamsW_StatusReasonOutParams ¶
type ServiceControlOutParamsW_StatusReasonOutParams struct {
StatusReasonOutParams *ServiceControlStatusReasonOutParams `idl:"name:psrOutParams" json:"status_reason_out_params"`
}
ServiceControlOutParamsW_StatusReasonOutParams structure represents SC_RPC_SERVICE_CONTROL_OUT_PARAMSW RPC union arm.
It has following labels: 1
func (*ServiceControlOutParamsW_StatusReasonOutParams) MarshalNDR ¶
func (*ServiceControlOutParamsW_StatusReasonOutParams) UnmarshalNDR ¶
type ServiceControlStatusReasonInParamsA ¶
type ServiceControlStatusReasonInParamsA struct { // dwReason: The reason associated with the SERVICE_CONTROL_STOP control. This member // MUST be set to a combination of one general reason code, one major reason code, and // one minor reason code. // // The following are the general reason codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_CUSTOM 0x20000000 | The reason code is defined by the user. If this flag is not present, the | // | | reason code is defined by the system. If this flag is specified with a | // | | system reason code, the function call fails. Users can create custom major | // | | reason codes in the range SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM (0x00400000) | // | | through SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM (0x00ff0000) and minor reason | // | | codes in the range SERVICE_STOP_REASON_MINOR_MIN_CUSTOM (0x00000100) through | // | | SERVICE_STOP_REASON_MINOR_MAX_CUSTOM (0x0000FFFF). | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_PLANNED 0x40000000 | The service stop was planned. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_UNPLANNED 0x10000000 | The service stop was not planned. | // +-----------------------------------+----------------------------------------------------------------------------------+ // // The following are the major reason codes. // // +------------------------------------------------------+------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------------------------------+------------------------+ // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000 | Application issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000 | Hardware issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_NONE 0x00060000 | No major reason | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000 | Operating system issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000 | Other issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000 | Software issue | // +------------------------------------------------------+------------------------+ // // The following are the minor reason codes. // // +----------------------------------------------------------------+---------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------------------------------+---------------------------+ // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_DISK 0x00000008 | Disk | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a | Environment | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b | Driver | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_HUNG 0x00000006 | Unresponsive | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003 | Installation | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002 | Maintenance | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_MMC 0x00000016 | MMC issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011 | Network connectivity | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009 | Network card | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NONE 0x00000017 | No minor reason | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_OTHER 0x00000001 | Other issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c | Other driver event | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005 | Reconfigure | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010 | Security issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f | Security update | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015 | Security update uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d | Service pack | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013 | Service pack uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e | Software update | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014 | Software update uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007 | Unstable | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004 | Installation of software | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_WMI 0x00000012 | WMI issue | // +----------------------------------------------------------------+---------------------------+ Reason uint32 `idl:"name:dwReason" json:"reason"` // pszComment: A pointer to a string that specifies a comment associated with the dwReason // parameter. String values are in ANSI. Comment string `idl:"name:pszComment;string" json:"comment"` }
ServiceControlStatusReasonInParamsA structure represents SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA RPC structure.
The SERVICE_CONTROL_STATUS_REASON_IN_PARAMSA structure<8> contains the reason associated with the SERVICE_CONTROL_STOP control. String values are in ANSI.
func (*ServiceControlStatusReasonInParamsA) MarshalNDR ¶
func (*ServiceControlStatusReasonInParamsA) UnmarshalNDR ¶
type ServiceControlStatusReasonInParamsW ¶
type ServiceControlStatusReasonInParamsW struct { // dwReason: The reason associated with the SERVICE_CONTROL_STOP control. This member // MUST be set to a combination of one general reason code, one major reason code, and // one minor reason code. // // The following are the general reason codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_CUSTOM 0x20000000 | The reason code is defined by the user. If this flag is not present, the | // | | reason code is defined by the system. If this flag is specified with a | // | | system reason code, the function call fails. Users can create custom major | // | | reason codes in the range SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM (0x00400000) | // | | through SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM (0x00ff0000) and minor reason | // | | codes in the range SERVICE_STOP_REASON_MINOR_MIN_CUSTOM (0x00000100) through | // | | SERVICE_STOP_REASON_MINOR_MAX_CUSTOM (0x0000FFFF). | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_PLANNED 0x40000000 | The service stop was planned. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_STOP_UNPLANNED 0x10000000 | The service stop was not planned. | // +-----------------------------------+----------------------------------------------------------------------------------+ // // The following are the major reason codes. // // +------------------------------------------------------+------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------------------------------+------------------------+ // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000 | Application issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000 | Hardware issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_NONE 0x00060000 | No major reason | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000 | Operating system issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000 | Other issue | // +------------------------------------------------------+------------------------+ // | SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000 | Software issue | // +------------------------------------------------------+------------------------+ // // The following are the minor reason codes. // // +----------------------------------------------------------------+---------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------------------------------+---------------------------+ // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_DISK 0x00000008 | Disk | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a | Environment | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b | Driver | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_HUNG 0x00000006 | Unresponsive | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003 | Installation | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002 | Maintenance | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_MMC 0x00000016 | MMC issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011 | Network connectivity | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009 | Network card | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_NONE 0x00000017 | No minor reason | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_OTHER 0x00000001 | Other issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c | Other driver event | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005 | Reconfigure | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010 | Security issue | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f | Security update | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015 | Security update uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d | Service pack | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013 | Service pack uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e | Software update | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014 | Software update uninstall | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007 | Unstable | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004 | Installation of software | // +----------------------------------------------------------------+---------------------------+ // | SERVICE_STOP_REASON_MINOR_WMI 0x00000012 | WMI issue | // +----------------------------------------------------------------+---------------------------+ Reason uint32 `idl:"name:dwReason" json:"reason"` // pszComment: A pointer to a string that specifies a comment associated with the dwReason // parameter. String values are in Unicode. Comment string `idl:"name:pszComment;string" json:"comment"` }
ServiceControlStatusReasonInParamsW structure represents SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW RPC structure.
The SERVICE_CONTROL_STATUS_REASON_IN_PARAMSW structure<9> contains the reason associated with the SERVICE_CONTROL_STOP. String values are in Unicode.
func (*ServiceControlStatusReasonInParamsW) MarshalNDR ¶
func (*ServiceControlStatusReasonInParamsW) UnmarshalNDR ¶
type ServiceControlStatusReasonOutParams ¶
type ServiceControlStatusReasonOutParams struct { // ServiceStatus: A SERVICE_STATUS_PROCESS (section 2.2.49) structure that contains // the current status of the service. ServiceStatus *ServiceStatusProcess `idl:"name:ServiceStatus" json:"service_status"` }
ServiceControlStatusReasonOutParams structure represents SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS RPC structure.
The SERVICE_CONTROL_STATUS_REASON_OUT_PARAMS structure<10> contains the status of the service.
func (*ServiceControlStatusReasonOutParams) MarshalNDR ¶
func (*ServiceControlStatusReasonOutParams) UnmarshalNDR ¶
type ServiceDelayedAutoStartInfo ¶
type ServiceDelayedAutoStartInfo struct { // fDelayedAutostart: A Boolean value that specifies whether to delay the start of // the service. If this value is TRUE, the service is started after other autostart // services are started plus a short delay of approximately two minutes. Otherwise, // the service is started during the system boot. This setting is ignored unless the // service is an autostart service. // // If the service has other services that it is dependent on, as specified via the lpDependencies // member of the QUERY_SERVICE_CONFIGA structure (section 2.2.14) and the QUERY_SERVICE_CONFIGW // structure (section 2.2.15), then those services are started before this service. DelayedAutoStart bool `idl:"name:fDelayedAutostart" json:"delayed_auto_start"` }
ServiceDelayedAutoStartInfo structure represents SERVICE_DELAYED_AUTO_START_INFO RPC structure.
The SERVICE_DELAYED_AUTO_START_INFO structure<11> defines the delayed autostart setting of an autostart service.
func (*ServiceDelayedAutoStartInfo) MarshalNDR ¶
func (*ServiceDelayedAutoStartInfo) UnmarshalNDR ¶
type ServiceDescriptionA ¶
type ServiceDescriptionA struct { // lpDescription: A pointer to a string that contains the description of the service // in ANSI. Description string `idl:"name:lpDescription;string" json:"description"` }
ServiceDescriptionA structure represents SERVICE_DESCRIPTIONA RPC structure.
The SERVICE_DESCRIPTIONA structure contains the description of the service. String values are in ANSI.
func (*ServiceDescriptionA) MarshalNDR ¶
func (*ServiceDescriptionA) UnmarshalNDR ¶
type ServiceDescriptionW ¶
type ServiceDescriptionW struct { // lpDescription: A pointer to a string that contains the description of the service // in Unicode. Description string `idl:"name:lpDescription;string" json:"description"` }
ServiceDescriptionW structure represents SERVICE_DESCRIPTIONW RPC structure.
The SERVICE_DESCRIPTIONW structure contains the description of the service. String values are in Unicode.
func (*ServiceDescriptionW) MarshalNDR ¶
func (*ServiceDescriptionW) UnmarshalNDR ¶
type ServiceDescriptionWOW64 ¶
type ServiceDescriptionWOW64 struct { // dwDescriptionOffset: A pointer to the offset for the SERVICE_DESCRIPTIONW (section // 2.2.35) structure, which contains the service description in Unicode. DescriptionOffset uint32 `idl:"name:dwDescriptionOffset" json:"description_offset"` }
ServiceDescriptionWOW64 structure represents SERVICE_DESCRIPTION_WOW64 RPC structure.
The SERVICE_DESCRIPTION_WOW64 structure defines the offset at which SERVICE_DESRIPTIONW is present.
func (*ServiceDescriptionWOW64) MarshalNDR ¶
func (*ServiceDescriptionWOW64) UnmarshalNDR ¶
type ServiceFailureActionsA ¶
type ServiceFailureActionsA struct { // dwResetPeriod: The time, in seconds, after which to reset the failure count to zero // if there are no failures. ResetPeriod uint32 `idl:"name:dwResetPeriod" json:"reset_period"` // lpRebootMsg: The buffer that contains the message to be broadcast to server users // before rebooting in response to the SC_ACTION_REBOOT service controller action. RebootMessage string `idl:"name:lpRebootMsg;string" json:"reboot_message"` // lpCommand: The buffer that contains the command line of the process for the process // creation function to execute in response to the SC_ACTION_RUN_COMMAND service controller // action. Command string `idl:"name:lpCommand;string" json:"command"` // cActions: The number of elements in the lpsaActions array. ActionsCount uint32 `idl:"name:cActions" json:"actions_count"` // lpsaActions: A pointer to an array of SC_ACTION (section 2.2.19) structures. Actions []*Action `idl:"name:lpsaActions;size_is:(cActions)" json:"actions"` }
ServiceFailureActionsA structure represents SERVICE_FAILURE_ACTIONSA RPC structure.
The SERVICE_FAILURE_ACTIONSA structure defines the action that the service controller takes on each failure of a service. String values are stored in ANSI.
func (*ServiceFailureActionsA) MarshalNDR ¶
func (*ServiceFailureActionsA) UnmarshalNDR ¶
type ServiceFailureActionsFlag ¶
type ServiceFailureActionsFlag struct { // fFailureActionsOnNonCrashFailures: If this member is TRUE and the service has configured // failure actions, the failure actions are queued if the service process terminates // without reporting a status of SERVICE_STOPPED or if it enters the SERVICE_STOPPED // state but the dwWin32ExitCode member of the SERVICE_STATUS (section 2.2.47) structure // is not ERROR_SUCCESS. // // If this member is FALSE and the service has configured failure actions, the failure // actions are queued only if the service terminates without reporting a status of SERVICE_STOPPED. FailureActionsOnNonCrashFailures bool `idl:"name:fFailureActionsOnNonCrashFailures" json:"failure_actions_on_non_crash_failures"` }
ServiceFailureActionsFlag structure represents SERVICE_FAILURE_ACTIONS_FLAG RPC structure.
The SERVICE_FAILURE_ACTIONS_FLAG structure<12> defines the failure action setting of a service. This setting determines when failure actions are to be executed.
func (*ServiceFailureActionsFlag) MarshalNDR ¶
func (*ServiceFailureActionsFlag) UnmarshalNDR ¶
type ServiceFailureActionsW ¶
type ServiceFailureActionsW struct { // dwResetPeriod: The time, in seconds, after which to reset the failure count to zero // if there are no failures. ResetPeriod uint32 `idl:"name:dwResetPeriod" json:"reset_period"` // lpRebootMsg: The buffer that contains the message to be broadcast to server users // before rebooting in response to the SC_ACTION_REBOOT service controller action. RebootMessage string `idl:"name:lpRebootMsg;string" json:"reboot_message"` // lpCommand: The buffer that contains the command line of the process for the process // creation function to execute in response to the SC_ACTION_RUN_COMMAND service controller // action. Command string `idl:"name:lpCommand;string" json:"command"` // cActions: The number of elements in the lpsaActions array. ActionsCount uint32 `idl:"name:cActions" json:"actions_count"` // lpsaActions: A pointer to an array of SC_ACTION (section 2.2.19) structures. Actions []*Action `idl:"name:lpsaActions;size_is:(cActions)" json:"actions"` }
ServiceFailureActionsW structure represents SERVICE_FAILURE_ACTIONSW RPC structure.
The SERVICE_FAILURE_ACTIONSW structure defines the action that the service controller takes on each failure of a service. String values are stored in Unicode.
func (*ServiceFailureActionsW) MarshalNDR ¶
func (*ServiceFailureActionsW) UnmarshalNDR ¶
type ServiceFailureActionsWOW64 ¶
type ServiceFailureActionsWOW64 struct { // dwResetPeriod: The time, in seconds, after which to reset the failure count to zero // if there are no failures. ResetPeriod uint32 `idl:"name:dwResetPeriod" json:"reset_period"` // dwRebootMsgOffset: The offset for the buffer containing the message that is broadcast // in response to the SC_ACTION_REBOOT service controller action (section 2.2.18) to // all server users prior to a server reboot. RebootMessageOffset uint32 `idl:"name:dwRebootMsgOffset" json:"reboot_message_offset"` // dwCommandOffset: The offset for the buffer that contains the Unicode command line // of the process that the process creation function executes in response to the SC_ACTION_RUN_COMMAND // service controller action (section 2.2.18). CommandOffset uint32 `idl:"name:dwCommandOffset" json:"command_offset"` // cActions: The number of SC_ACTION (section 2.2.19) structures in the array that // is offset by the value of dwsaActionsOffset. ActionsCount uint32 `idl:"name:cActions" json:"actions_count"` // dwsaActionsOffset: The offset for the buffer that contains an array of SC_ACTION // structures. ActionsOffset uint32 `idl:"name:dwsaActionsOffset" json:"actions_offset"` }
ServiceFailureActionsWOW64 structure represents SERVICE_FAILURE_ACTIONS_WOW64 RPC structure.
The SERVICE_FAILURE_ACTIONS_WOW64 structure defines the action that the service controller takes on each failure of a service.
func (*ServiceFailureActionsWOW64) MarshalNDR ¶
func (*ServiceFailureActionsWOW64) UnmarshalNDR ¶
type ServiceNotifyStatusChangeParams ¶
type ServiceNotifyStatusChangeParams ServiceNotifyStatusChangeParams2
ServiceNotifyStatusChangeParams structure represents SERVICE_NOTIFY_STATUS_CHANGE_PARAMS RPC structure.
func (*ServiceNotifyStatusChangeParams) MarshalNDR ¶
func (*ServiceNotifyStatusChangeParams) ServiceNotifyStatusChangeParams2 ¶
func (o *ServiceNotifyStatusChangeParams) ServiceNotifyStatusChangeParams2() *ServiceNotifyStatusChangeParams2
func (*ServiceNotifyStatusChangeParams) UnmarshalNDR ¶
type ServiceNotifyStatusChangeParams1 ¶
type ServiceNotifyStatusChangeParams1 struct { // ullThreadId: Not used. ThreadID uint64 `idl:"name:ullThreadId" json:"thread_id"` // dwNotifyMask: A value that specifies the status changes in which the client is interested. // It MUST be one or more of the following values. // // +--------------------------------------------+-----------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------------------------------+-----------------------------------------------------------------+ // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_CREATED 0x00000080 | Report when the service has been created. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010 | Report when the service is about to continue. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_DELETE_PENDING 0x00000200 | Report when an application has specified the service to delete. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_DELETED 0x00000100 | Report when the service has been deleted. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_PAUSE_PENDING 0x00000020 | Report when the service is pausing. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_PAUSED 0x00000040 | Report when the service has paused. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_RUNNING 0x00000008 | Report when the service is running. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_START_PENDING 0x00000002 | Report when the service is starting. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_STOP_PENDING 0x00000004 | Report when the service is stopping. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_STOPPED 0x00000001 | Report when the service has stopped. | // +--------------------------------------------+-----------------------------------------------------------------+ NotifyMask uint32 `idl:"name:dwNotifyMask" json:"notify_mask"` // CallbackAddressArray: Not used. CallbackAddressArray []byte `idl:"name:CallbackAddressArray" json:"callback_address_array"` // CallbackParamAddressArray: Not used. CallbackParamAddressArray []byte `idl:"name:CallbackParamAddressArray" json:"callback_param_address_array"` // ServiceStatus: A SERVICE_STATUS_PROCESS (section 2.2.49) structure that contains // information about the service. ServiceStatus *ServiceStatusProcess `idl:"name:ServiceStatus" json:"service_status"` // dwNotificationStatus: A value that indicates the notification status. If this member // is ERROR_SUCCESS, the notification has succeeded and the server adds valid information // to the ServiceStatus, dwNotificationTriggered, and pszServiceNames members. If this // member is ERROR_REQUEST_ABORTED or ERROR_SERVICE_MARKED_FOR_DELETE, the notification // has failed. NotificationStatus uint32 `idl:"name:dwNotificationStatus" json:"notification_status"` // dwSequence: Not used. Sequence uint32 `idl:"name:dwSequence" json:"sequence"` }
ServiceNotifyStatusChangeParams1 structure represents SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 RPC structure.
The SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_1 structure defines the service status notification information. If a client uses this structure, the server copies data from this structure to the newer structure specified in 2.2.44, and uses the newer structure.
func (*ServiceNotifyStatusChangeParams1) MarshalNDR ¶
func (*ServiceNotifyStatusChangeParams1) UnmarshalNDR ¶
type ServiceNotifyStatusChangeParams2 ¶
type ServiceNotifyStatusChangeParams2 struct { // ullThreadId: Not used. ThreadID uint64 `idl:"name:ullThreadId" json:"thread_id"` // dwNotifyMask: A value that specifies the status changes in which the client is interested. // It MUST be one or more of the following values. // // +--------------------------------------------+-----------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +--------------------------------------------+-----------------------------------------------------------------+ // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_CREATED 0x00000080 | Report when the service has been created. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010 | Report when the service is about to continue. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_DELETE_PENDING 0x00000200 | Report when an application has specified the service to delete. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_DELETED 0x00000100 | Report when the service has been deleted. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_PAUSE_PENDING 0x00000020 | Report when the service is pausing. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_PAUSED 0x00000040 | Report when the service has paused. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_RUNNING 0x00000008 | Report when the service is running. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_START_PENDING 0x00000002 | Report when the service is starting. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_STOP_PENDING 0x00000004 | Report when the service is stopping. | // +--------------------------------------------+-----------------------------------------------------------------+ // | SERVICE_NOTIFY_STOPPED 0x00000001 | Report when the service has stopped. | // +--------------------------------------------+-----------------------------------------------------------------+ NotifyMask uint32 `idl:"name:dwNotifyMask" json:"notify_mask"` // CallbackAddressArray: Not used. CallbackAddressArray []byte `idl:"name:CallbackAddressArray" json:"callback_address_array"` // CallbackParamAddressArray: Not used. CallbackParamAddressArray []byte `idl:"name:CallbackParamAddressArray" json:"callback_param_address_array"` // ServiceStatus: A SERVICE_STATUS_PROCESS (section 2.2.49) structure that contains // information about the service. ServiceStatus *ServiceStatusProcess `idl:"name:ServiceStatus" json:"service_status"` // dwNotificationStatus: A value that indicates the notification status. If this member // is ERROR_SUCCESS, the notification has succeeded and the server adds valid information // to the ServiceStatus, dwNotificationTriggered, and pszServiceNames members. If this // member is ERROR_REQUEST_ABORTED or ERROR_SERVICE_MARKED_FOR_DELETE, the notification // has failed. NotificationStatus uint32 `idl:"name:dwNotificationStatus" json:"notification_status"` // dwSequence: Not used. Sequence uint32 `idl:"name:dwSequence" json:"sequence"` // dwNotificationTriggered: The value that specifies the specific status change event // that triggered the notification to the client. This MUST be one or more of the values // specified in the dwNotifyMask parameter. NotificationTriggered uint32 `idl:"name:dwNotificationTriggered" json:"notification_triggered"` // pszServiceNames: A pointer to a sequence of null-terminated strings, terminated // by an empty string (\0) that contains the name of the service that was created or // deleted. // // The forward slash, back slash, comma, and space characters are illegal in service // names. ServiceNames string `idl:"name:pszServiceNames;string" json:"service_names"` }
ServiceNotifyStatusChangeParams2 structure represents SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 RPC structure.
The SERVICE_NOTIFY_STATUS_CHANGE_PARAMS_2 structure<14> defines the service status notification information.
func (*ServiceNotifyStatusChangeParams2) MarshalNDR ¶
func (*ServiceNotifyStatusChangeParams2) UnmarshalNDR ¶
type ServicePreferredNodeInfo ¶
type ServicePreferredNodeInfo struct { // usPreferredNode: The preferred node number. PreferredNode uint16 `idl:"name:usPreferredNode" json:"preferred_node"` // fDelete: If the preferred NUMA node information of the service can be deleted, set // to 1; otherwise set to 0. Delete bool `idl:"name:fDelete" json:"delete"` }
ServicePreferredNodeInfo structure represents SERVICE_PREFERRED_NODE_INFO RPC structure.
func (*ServicePreferredNodeInfo) MarshalNDR ¶
func (*ServicePreferredNodeInfo) UnmarshalNDR ¶
type ServicePreshutdownInfo ¶
type ServicePreshutdownInfo struct { // dwPreshutdownTimeout: Time, in milliseconds, that the SCM waits for the service // to enter the SERVICE_STOPPED state after sending the SERVICE_CONTROL_PRESHUTDOWN // message. PreshutdownTimeout uint32 `idl:"name:dwPreshutdownTimeout" json:"preshutdown_timeout"` }
ServicePreshutdownInfo structure represents SERVICE_PRESHUTDOWN_INFO RPC structure.
The SERVICE_PRESHUTDOWN_INFO structure<15> defines the time-out value in milliseconds.
func (*ServicePreshutdownInfo) MarshalNDR ¶
func (*ServicePreshutdownInfo) UnmarshalNDR ¶
type ServiceRequiredPrivilegesInfoWOW64 ¶
type ServiceRequiredPrivilegesInfoWOW64 struct { // dwRequiredPrivilegesOffset: Offset of the SERVICE_RPC_REQUIRED_PRIVILEGES_INFO structure. RequiredPrivilegesOffset uint32 `idl:"name:dwRequiredPrivilegesOffset" json:"required_privileges_offset"` }
ServiceRequiredPrivilegesInfoWOW64 structure represents SERVICE_REQUIRED_PRIVILEGES_INFO_WOW64 RPC structure.
The SERVICE_REQUIRED_PRIVILEGES_INFO_WOW64 structure defines the offset at which the SERVICE_RPC_REQUIRED_PRIVILEGES_INFO (section 2.2.48) structure is present.
func (*ServiceRequiredPrivilegesInfoWOW64) MarshalNDR ¶
func (*ServiceRequiredPrivilegesInfoWOW64) UnmarshalNDR ¶
type ServiceSIDInfo ¶
type ServiceSIDInfo struct { // dwServiceSidType: The type of service SID. This MUST be one of the following values. // // +------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SID_TYPE_NONE 0x00000000 | No service SID. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SID_TYPE_RESTRICTED 0x00000003 | This type includes SERVICE_SID_TYPE_UNRESTRICTED. The service SID is also added | // | | to the restricted SID list of the process token. Three additional SIDs are added | // | | to the restricted SID list: 1. World SID S-1-1-0. 2. Service logon SID. 3. One | // | | access control entry (ACE) that allows GENERIC_ALL access for the service logon | // | | SID is also added to the service process token object. If multiple services are | // | | hosted in the same process and one service has SERVICE_SID_TYPE_RESTRICTED, all | // | | services MUST have SERVICE_SID_TYPE_RESTRICTED. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_SID_TYPE_UNRESTRICTED 0x00000001 | When the service process is created, the service SID is added to the service | // | | process token with the following attributes: SE_GROUP_ENABLED_BY_DEFAULT | | // | | SE_GROUP_OWNER. | // +------------------------------------------+----------------------------------------------------------------------------------+ ServiceSIDType uint32 `idl:"name:dwServiceSidType" json:"service_sid_type"` }
ServiceSIDInfo structure represents SERVICE_SID_INFO RPC structure.
The SERVICE_SID_INFO structure<16> defines the type of service security identifier (SID) associated with a service.
func (*ServiceSIDInfo) MarshalNDR ¶
func (*ServiceSIDInfo) UnmarshalNDR ¶
type ServiceStatus ¶
type ServiceStatus struct { // dwServiceType: The type of service. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | A service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | A service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwCurrentState: The current state of the service. // // +------------+--------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+--------------------------+ // +------------+--------------------------+ // | 0x00000005 | SERVICE_CONTINUE_PENDING | // +------------+--------------------------+ // | 0x00000006 | SERVICE_PAUSE_PENDING | // +------------+--------------------------+ // | 0x00000007 | SERVICE_PAUSED | // +------------+--------------------------+ // | 0x00000004 | SERVICE_RUNNING | // +------------+--------------------------+ // | 0x00000002 | SERVICE_START_PENDING | // +------------+--------------------------+ // | 0x00000003 | SERVICE_STOP_PENDING | // +------------+--------------------------+ // | 0x00000001 | SERVICE_STOPPED | // +------------+--------------------------+ CurrentState uint32 `idl:"name:dwCurrentState" json:"current_state"` // dwControlsAccepted: The control codes that the service accepts and processes in // its handler function. One or more of the following values can be set. By default, // all services accept the SERVICE_CONTROL_INTERROGATE value. A value of zero indicates // that no controls are accepted. // // +------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+----------------------------------------------------------------------------------+ // +------------+----------------------------------------------------------------------------------+ // | 0x00000008 | SERVICE_ACCEPT_PARAMCHANGE Service can reread its startup parameters without | // | | being stopped and restarted. This control code allows the service to receive | // | | SERVICE_CONTROL_PARAMCHANGE notifications. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000002 | SERVICE_ACCEPT_PAUSE_CONTINUE Service can be paused and continued. This | // | | control code allows the service to receive SERVICE_CONTROL_PAUSE and | // | | SERVICE_CONTROL_CONTINUE notifications. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000004 | SERVICE_ACCEPT_SHUTDOWN Service is notified when system shutdown occurs. | // | | This control code enables the service to receive SERVICE_CONTROL_SHUTDOWN | // | | notifications from the server. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000001 | SERVICE_ACCEPT_STOP Service can be stopped. This control code allows the service | // | | to receive SERVICE_CONTROL_STOP notifications. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000020 | SERVICE_ACCEPT_HARDWAREPROFILECHANGE Service is notified when the computer's | // | | hardware profile changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000040 | SERVICE_ACCEPT_POWEREVENT Service is notified when the computer's power status | // | | changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000080 | SERVICE_ACCEPT_SESSIONCHANGE Service is notified when the computer's session | // | | status changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000100 | SERVICE_ACCEPT_PRESHUTDOWN<17> The service can perform preshutdown tasks. | // | | SERVICE_ACCEPT_PRESHUTDOWN is sent before sending SERVICE_CONTROL_SHUTDOWN to | // | | give more time to services that need extra time before shutdown occurs. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000200 | SERVICE_ACCEPT_TIMECHANGE<18> Service is notified when the system time changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000400 | SERVICE_ACCEPT_TRIGGEREVENT<19> Service is notified when an event for which the | // | | service has registered occurs. | // +------------+----------------------------------------------------------------------------------+ ControlsAccepted uint32 `idl:"name:dwControlsAccepted" json:"controls_accepted"` // dwWin32ExitCode: An error code that the service uses to report an error that occurs // when it is starting or stopping. To return an error code specific to the service, // the service MUST set this value to ERROR_SERVICE_SPECIFIC_ERROR to indicate that // the dwServiceSpecificExitCode member contains the error code. The service sets this // value to NO_ERROR when it is running and on normal termination. Win32ExitCode uint32 `idl:"name:dwWin32ExitCode" json:"win32_exit_code"` // dwServiceSpecificExitCode: A service-specific error code that the service returns // when an error occurs while it is starting or stopping. The client SHOULD<20> ignore // this value unless the dwWin32ExitCode member is set to ERROR_SERVICE_SPECIFIC_ERROR. ServiceSpecificExitCode uint32 `idl:"name:dwServiceSpecificExitCode" json:"service_specific_exit_code"` // dwCheckPoint: A value that the service increments periodically to report its progress // during a lengthy start, stop, pause, or continue operation. This value is zero when // the service state is SERVICE_PAUSED, SERVICE_RUNNING, or SERVICE_STOPPED. CheckPoint uint32 `idl:"name:dwCheckPoint" json:"check_point"` // dwWaitHint: An estimate of the amount of time, in milliseconds, that the service // expects a pending start, stop, pause, or continue operation to take before the service // makes its next status update. Before the specified amount of time has elapsed, the // service makes its next call to the SetServiceStatus function with either an incremented // dwCheckPoint value or a change in dwCurrentState. If the time specified by dwWaitHint // passes, and dwCheckPoint has not been incremented or dwCurrentState has not changed, // the server can assume that an error has occurred and the service can be stopped. // However, if the service shares a process with other services, the server cannot terminate // the service application because it would have to terminate the other services sharing // the process as well. WaitHint uint32 `idl:"name:dwWaitHint" json:"wait_hint"` }
ServiceStatus structure represents SERVICE_STATUS RPC structure.
The SERVICE_STATUS structure defines information about a service.
func (*ServiceStatus) MarshalNDR ¶
func (*ServiceStatus) UnmarshalNDR ¶
type ServiceStatusProcess ¶
type ServiceStatusProcess struct { // dwServiceType: The type of service. This MUST be one of the following values. // // +----------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_KERNEL_DRIVER 0x00000001 | A driver service. These are services that manage devices on the system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_FILE_SYSTEM_DRIVER 0x00000002 | A file system driver service. These are services that manage file systems on the | // | | system. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_OWN_PROCESS 0x00000010 | A service that runs in its own process. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_WIN32_SHARE_PROCESS 0x00000020 | A service that shares a process with other services. | // +----------------------------------------+----------------------------------------------------------------------------------+ // | SERVICE_INTERACTIVE_PROCESS 0x00000100 | The service can interact with the desktop. | // +----------------------------------------+----------------------------------------------------------------------------------+ ServiceType uint32 `idl:"name:dwServiceType" json:"service_type"` // dwCurrentState: The current state of the service. This MUST be one of the following // values. // // +------------+--------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+--------------------------+ // +------------+--------------------------+ // | 0x00000005 | SERVICE_CONTINUE_PENDING | // +------------+--------------------------+ // | 0x00000006 | SERVICE_PAUSE_PENDING | // +------------+--------------------------+ // | 0x00000007 | SERVICE_PAUSED | // +------------+--------------------------+ // | 0x00000004 | SERVICE_RUNNING | // +------------+--------------------------+ // | 0x00000002 | SERVICE_START_PENDING | // +------------+--------------------------+ // | 0x00000003 | SERVICE_STOP_PENDING | // +------------+--------------------------+ // | 0x00000001 | SERVICE_STOPPED | // +------------+--------------------------+ CurrentState uint32 `idl:"name:dwCurrentState" json:"current_state"` // dwControlsAccepted: The control codes that the service accepts and processes in // its handler function. This bit mask MUST be set to zero or more of the following // values. The value of dwControlsAccepted is 0x00000000 if the service type is SERVICE_KERNEL_DRIVER // or SERVICE_FILE_SYSTEM_DRIVER. // // +------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+----------------------------------------------------------------------------------+ // +------------+----------------------------------------------------------------------------------+ // | 0x00000008 | SERVICE_ACCEPT_PARAMCHANGE Service can reread its startup parameters without | // | | being stopped and restarted. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000002 | SERVICE_ACCEPT_PAUSE_CONTINUE Service can be paused and continued. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000004 | SERVICE_ACCEPT_SHUTDOWN Service is notified when system shutdown occurs. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000001 | SERVICE_ACCEPT_STOP Service can be stopped. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000020 | SERVICE_ACCEPT_HARDWAREPROFILECHANGE Service is notified when the computer | // | | hardware profile changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000040 | SERVICE_ACCEPT_POWEREVENT Service is notified when the computer power status | // | | changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000080 | SERVICE_ACCEPT_SESSIONCHANGE Service is notified when the computer session | // | | status changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000100 | SERVICE_ACCEPT_PRESHUTDOWN<22> The service can perform preshutdown tasks. | // | | SERVICE_ACCEPT_PRESHUTDOWN is sent before sending SERVICE_CONTROL_SHUTDOWN to | // | | give more time to services that need extra time before shutdown occurs. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000200 | SERVICE_ACCEPT_TIMECHANGE<23> Service is notified when the system time changes. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000400 | SERVICE_ACCEPT_TRIGGEREVENT<24> Service is notified when an event for which the | // | | service has registered occurs. | // +------------+----------------------------------------------------------------------------------+ ControlsAccepted uint32 `idl:"name:dwControlsAccepted" json:"controls_accepted"` // dwWin32ExitCode: An error code that the service uses to report an error that occurs // when it is starting or stopping. Win32ExitCode uint32 `idl:"name:dwWin32ExitCode" json:"win32_exit_code"` // dwServiceSpecificExitCode: A service-specific error code that the service returns // when an error occurs while it is starting or stopping. ServiceSpecificExitCode uint32 `idl:"name:dwServiceSpecificExitCode" json:"service_specific_exit_code"` // dwCheckPoint: A value that the service increments periodically to report its progress // during a lengthy start, stop, pause, or continue operation. CheckPoint uint32 `idl:"name:dwCheckPoint" json:"check_point"` // dwWaitHint: An estimate of the amount of time, in milliseconds, that the service // expects a pending start, stop, pause, or continue operation to take before the service // makes its next status update. WaitHint uint32 `idl:"name:dwWaitHint" json:"wait_hint"` // dwProcessId: A process identifier of the service. A value of 0 indicates that the // service is not started. ProcessID uint32 `idl:"name:dwProcessId" json:"process_id"` // dwServiceFlags: The bit flags that describe the process in which the service is // running. This MUST be one of the following values. // // +------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+----------------------------------------------------------------------------------+ // +------------+----------------------------------------------------------------------------------+ // | 0x00000000 | Service is either running in a process that is not a system process, or the | // | | service is not running at all. In a nonsystem process, dwProcessId is nonzero. | // | | If the service is not running, dwProcessId is 0. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000001 | Service runs in a system process that MUST always be running. | // +------------+----------------------------------------------------------------------------------+ ServiceFlags uint32 `idl:"name:dwServiceFlags" json:"service_flags"` }
ServiceStatusProcess structure represents SERVICE_STATUS_PROCESS RPC structure.
The SERVICE_STATUS_PROCESS structure contains information about a service that is used by the RQueryServiceStatusEx method.
func (*ServiceStatusProcess) MarshalNDR ¶
func (*ServiceStatusProcess) UnmarshalNDR ¶
type ServiceTrigger ¶
type ServiceTrigger struct { // dwTriggerType: The type of trigger. This MUST be one of the following values. // // +------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+----------------------------------------------------------------------------------+ // +------------+----------------------------------------------------------------------------------+ // | 0x00000001 | SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL The event is triggered when | // | | a device of the specified device interface class arrives or is present when | // | | the system starts. This trigger event is commonly used to start a service. | // | | Interface arrival occurs when a device belonging to a device interface class | // | | has been inserted. The pTriggerSubtype member specifies the device interface | // | | class GUID, as defined in [MS-DTYP] section 2.3.4. These GUIDs are defined | // | | in device-specific header files provided with the Windows Driver Kit (WDK) | // | | [MSDN-WinDriverKit]. The pDataItems member specifies one or more hardware | // | | ID and compatible ID strings for the device interface class. Strings MUST | // | | be Unicode. If more than one string is specified, the event is triggered | // | | if any one of the strings matches. For example, the Wpdbusenum service | // | | is started when a device of device interface class GUID_DEVINTERFACE_DISK | // | | {53f56307-b6bf-11d0-94f2-00a0c91efb8b} and a hardware ID string of | // | | "USBSTOR\GenDisk" arrives. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000002 | SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY The event is triggered when | // | | the first IP address on the TCP/IP networking stack becomes available | // | | or the last IP address on the stack becomes unavailable. This trigger | // | | event can be used to start or stop a service. The pTriggerSubtype | // | | member specifies NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID or | // | | NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID. The pDataItems member is not used. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000003 | SERVICE_TRIGGER_TYPE_DOMAIN_JOIN The event is triggered when the computer joins | // | | or leaves a domain. This trigger event can be used to start or stop a service. | // | | The pTriggerSubtype member specifies DOMAIN_JOIN_GUID or DOMAIN_LEAVE_GUID. The | // | | pDataItems member is not used. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000004 | SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT The event is triggered when a firewall | // | | port is opened or approximately 60 seconds after the firewall port is closed. | // | | This trigger event can be used to start or stop a service. The pTriggerSubtype | // | | member specifies FIREWALL_PORT_OPEN_GUID or FIREWALL_PORT_CLOSE_GUID. The | // | | pDataItems member specifies the port, the protocol, and optionally the | // | | executable path and user information (SID string or name) of the service | // | | listening on the event. The "RPC" token can be used in place of the port to | // | | specify any listening socket used by RPC. The "system" token can be used in | // | | place of the executable path to specify ports created by and listened on by the | // | | Windows kernel. The event is triggered only if all strings match. For example, | // | | if MyService hosted inside Svchost.exe is to be trigger-started when port UDP | // | | 5001 opens, the trigger-specific data would be the Unicode representation of | // | | "5001\0UDP\0%systemroot%\system32\svchost.exe\0MyService\0\0". | // +------------+----------------------------------------------------------------------------------+ // | 0x00000005 | SERVICE_TRIGGER_TYPE_GROUP_POLICY The event is triggered when a machine policy | // | | or user policy change occurs. This trigger event is commonly used to start a | // | | service. The pTriggerSubtype member specifies MACHINE_POLICY_PRESENT_GUID or | // | | USER_POLICY_PRESENT_GUID. The pDataItems member is not used. | // +------------+----------------------------------------------------------------------------------+ // | 0x00000020 | SERVICE_TRIGGER_TYPE_CUSTOM The event is a custom event generated by an Event | // | | Tracing for Windows (ETW) provider. This trigger event can be used to start or | // | | stop a service. The pTriggerSubtype member specifies the event provider's GUID. | // | | The pDataItems member specifies trigger-specific data defined by the provider. | // +------------+----------------------------------------------------------------------------------+ TriggerType uint32 `idl:"name:dwTriggerType" json:"trigger_type"` // dwAction: The type of action to be taken on the trigger arrival. This MUST be one // of the following values. // // +------------+--------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+--------------------------------------+ // +------------+--------------------------------------+ // | 0x00000001 | SERVICE_TRIGGER_ACTION_SERVICE_START | // +------------+--------------------------------------+ // | 0x00000002 | SERVICE_TRIGGER_ACTION_SERVICE_STOP | // +------------+--------------------------------------+ Action uint32 `idl:"name:dwAction" json:"action"` // pTriggerSubtype: Points to a GUID that identifies the trigger event subtype. The // value of this member depends on the value of the dwTriggerType member. // // If dwTriggerType is SERVICE_TRIGGER_TYPE_CUSTOM, pTriggerSubtype is the GUID that // identifies the custom event provider. // // If dwTriggerType is SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL, pTriggerSubtype // is the GUID that identifies the device interface class. // // For other trigger event types, pTriggerSubtype can be one of the following values. // // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | | | // | VALUE | MEANING | // | | | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | DOMAIN_JOIN_GUID 1ce20aba-9851-4421-9430-1ddeb766e809 | The event is triggered when the computer joins a domain. The dwTriggerType | // | | member MUST be SERVICE_TRIGGER_TYPE_DOMAIN_JOIN. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | DOMAIN_LEAVE_GUID ddaf516e-58c2-4866-9574-c3b615d42ea1 | The event is triggered when the computer leaves a domain. The dwTriggerType | // | | member MUST be SERVICE_TRIGGER_TYPE_DOMAIN_JOIN. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | FIREWALL_PORT_OPEN_GUID b7569e07-8421-4ee0-ad10-86915afdad09 | The event is triggered when the specified firewall port is opened. The | // | | dwTriggerType member MUST be SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | FIREWALL_PORT_CLOSE_GUID a144ed38-8e12-4de4-9d96-e64740b1a524 | The event is triggered approximately 60 seconds after the | // | | specified firewall port is closed. The dwTriggerType member MUST be | // | | SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | MACHINE_POLICY_PRESENT_GUID 659FCAE6-5BDB-4DA9-B1FF-CA2A178D46E0 | The event is triggered when the machine policy has changed. The dwTriggerType | // | | member MUST be SERVICE_TRIGGER_TYPE_GROUP_POLICY. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | NETWORK_MANAGER_FIRST_IP_ADDRESS_ARRIVAL_GUID | The event is triggered when the first IP address on the TCP/IP | // | 4f27f2de-14e2-430b-a549-7cd48cbc8245 | networking stack becomes available. The dwTriggerType member MUST be | // | | SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | NETWORK_MANAGER_LAST_IP_ADDRESS_REMOVAL_GUID | The event is triggered when the last IP address on the TCP/IP | // | cc4ba62a-162e-4648-847a-b6bdf993e335 | networking stack becomes unavailable. The dwTriggerType member MUST be | // | | SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ // | USER_POLICY_PRESENT_GUID 54FB46C8-F089-464C-B1FD-59D1B62C3B50 | The event is triggered when the user policy has changed. The dwTriggerType | // | | member MUST be SERVICE_TRIGGER_TYPE_GROUP_POLICY. | // +----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+ TriggerSubtype *dtyp.GUID `idl:"name:pTriggerSubtype" json:"trigger_subtype"` // cDataItems: Number of data items in the pDataItems array. DataItemsCount uint32 `idl:"name:cDataItems" json:"data_items_count"` // pDataItems: Array of SERVICE_TRIGGER_SPECIFIC_DATA_ITEM structures. DataItems []*ServiceTriggerSpecificDataItem `idl:"name:pDataItems;size_is:(cDataItems)" json:"data_items"` }
ServiceTrigger structure represents SERVICE_TRIGGER RPC structure.
The SERVICE_TRIGGER <26> structure contains information about one trigger of a service.
func (*ServiceTrigger) MarshalNDR ¶
func (*ServiceTrigger) UnmarshalNDR ¶
type ServiceTriggerInfo ¶
type ServiceTriggerInfo struct { // cTriggers: Number of items in the pTriggers array. TriggersCount uint32 `idl:"name:cTriggers" json:"triggers_count"` // pTriggers: Array of triggers each element of type SERVICE_TRIGGER. Triggers []*ServiceTrigger `idl:"name:pTriggers;size_is:(cTriggers)" json:"triggers"` // contains filtered or unexported fields }
ServiceTriggerInfo structure represents SERVICE_TRIGGER_INFO RPC structure.
The SERVICE_TRIGGER_INFO <27> structure contains trigger information about a service.
func (*ServiceTriggerInfo) MarshalNDR ¶
func (*ServiceTriggerInfo) UnmarshalNDR ¶
type ServiceTriggerSpecificDataItem ¶
type ServiceTriggerSpecificDataItem struct { // dwDataType: The type of trigger data. This MUST be one of the following values. // // +------------+----------------------------------+ // | | | // | VALUE | MEANING | // | | | // +------------+----------------------------------+ // +------------+----------------------------------+ // | 0x00000001 | SERVICE_TRIGGER_DATA_TYPE_BINARY | // +------------+----------------------------------+ // | 0x00000002 | SERVICE_TRIGGER_DATA_TYPE_STRING | // +------------+----------------------------------+ DataType uint32 `idl:"name:dwDataType" json:"data_type"` // cbData: Size in bytes of the data in pData. DataLength uint32 `idl:"name:cbData" json:"data_length"` // pData: Trigger data. When dwDataType is set equal to 0x00000002 (SERVICE_TRIGGER_DATA_TYPE_STRING), // the encoding is Unicode string and includes a terminating null character. This string // can contain data in the format of a sequence of null-terminated strings, terminated // by an empty string (\0). Data []byte `idl:"name:pData;size_is:(cbData)" json:"data"` }
ServiceTriggerSpecificDataItem structure represents SERVICE_TRIGGER_SPECIFIC_DATA_ITEM RPC structure.
The SERVICE_TRIGGER_SPECIFIC_DATA_ITEM <25> structure contains information about one trigger data item of a service.
func (*ServiceTriggerSpecificDataItem) MarshalNDR ¶
func (*ServiceTriggerSpecificDataItem) UnmarshalNDR ¶
type SetServiceObjectSecurityRequest ¶
type SetServiceObjectSecurityRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to a // service record or to the SCM database that MUST have been created previously using // one of the open methods specified in section 3.1.4. Service *Handle `idl:"name:hService" json:"service"` // dwSecurityInformation: A SECURITY_INFORMATION (section 2.2.1) type definition that // specifies the security information being set. SecurityInformation uint32 `idl:"name:dwSecurityInformation" json:"security_information"` // lpSecurityDescriptor: A pointer to a buffer of bytes that contains the new security // information. SecurityDescriptor []byte `idl:"name:lpSecurityDescriptor;size_is:(cbBufSize)" json:"security_descriptor"` // cbBufSize: Size, in bytes, of the buffer pointed to by the lpSecurityDescriptor parameter. BufferLength uint32 `idl:"name:cbBufSize" json:"buffer_length"` }
SetServiceObjectSecurityRequest structure represents the RSetServiceObjectSecurity operation request
func (*SetServiceObjectSecurityRequest) MarshalNDR ¶
func (*SetServiceObjectSecurityRequest) UnmarshalNDR ¶
type SetServiceObjectSecurityResponse ¶
type SetServiceObjectSecurityResponse struct { // Return: The RSetServiceObjectSecurity return value. Return uint32 `idl:"name:Return" json:"return"` }
SetServiceObjectSecurityResponse structure represents the RSetServiceObjectSecurity operation response
func (*SetServiceObjectSecurityResponse) MarshalNDR ¶
func (*SetServiceObjectSecurityResponse) UnmarshalNDR ¶
type SetServiceStatusRequest ¶
type SetServiceStatusRequest struct { // hServiceStatus: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle // to the service record that MUST have been created previously using one of the open // methods specified in section 3.1.4. The SERVICE_SET_STATUS access right MUST have // been granted to the caller when the RPC context handle was created. Service *Handle `idl:"name:hServiceStatus" json:"service"` // lpServiceStatus: Pointer to the SERVICE_STATUS (section 2.2.47) structure that contains // the latest status information for the service. ServiceStatus *ServiceStatus `idl:"name:lpServiceStatus" json:"service_status"` }
SetServiceStatusRequest structure represents the RSetServiceStatus operation request
func (*SetServiceStatusRequest) MarshalNDR ¶
func (*SetServiceStatusRequest) UnmarshalNDR ¶
type SetServiceStatusResponse ¶
type SetServiceStatusResponse struct { // Return: The RSetServiceStatus return value. Return uint32 `idl:"name:Return" json:"return"` }
SetServiceStatusResponse structure represents the RSetServiceStatus operation response
func (*SetServiceStatusResponse) MarshalNDR ¶
func (*SetServiceStatusResponse) UnmarshalNDR ¶
type StartServiceARequest ¶
type StartServiceARequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) that defines the handle to the service // record that MUST have been created previously, using one of the open methods specified // in section 3.1.4. The SERVICE_START access right MUST have been granted to the caller // when the RPC context handle was created. Service *Handle `idl:"name:hService" json:"service"` // argc: The number of argument strings in the argv array. If argv is NULL, this parameter // MAY be zero. Argc uint32 `idl:"name:argc" json:"argc"` // argv: A pointer to a buffer that contains an array of pointers to null-terminated // ANSI strings that are passed as arguments to the service. Argv []*String `idl:"name:argv;size_is:(argc);pointer:unique" json:"argv"` }
StartServiceARequest structure represents the RStartServiceA operation request
func (*StartServiceARequest) MarshalNDR ¶
func (*StartServiceARequest) UnmarshalNDR ¶
type StartServiceAResponse ¶
type StartServiceAResponse struct { // Return: The RStartServiceA return value. Return uint32 `idl:"name:Return" json:"return"` }
StartServiceAResponse structure represents the RStartServiceA operation response
func (*StartServiceAResponse) MarshalNDR ¶
func (*StartServiceAResponse) UnmarshalNDR ¶
type StartServiceWRequest ¶
type StartServiceWRequest struct { // hService: An SC_RPC_HANDLE (section 2.2.4) data type that defines the handle to the // service record that MUST have been created previously using one of the open methods // specified in section 3.1.4. The SERVICE_START access right MUST have been granted // to the caller when the RPC context handle to the service record was created. Service *Handle `idl:"name:hService" json:"service"` // argc: The number of argument strings in the argv array. If argv is NULL, this parameter // MAY be 0. Argc uint32 `idl:"name:argc" json:"argc"` // argv: A pointer to a buffer that contains an array of pointers to null-terminated // UNICODE strings that are passed as arguments to the service. Argv []*UnicodeString `idl:"name:argv;size_is:(argc);pointer:unique" json:"argv"` }
StartServiceWRequest structure represents the RStartServiceW operation request
func (*StartServiceWRequest) MarshalNDR ¶
func (*StartServiceWRequest) UnmarshalNDR ¶
type StartServiceWResponse ¶
type StartServiceWResponse struct { // Return: The RStartServiceW return value. Return uint32 `idl:"name:Return" json:"return"` }
StartServiceWResponse structure represents the RStartServiceW operation response
func (*StartServiceWResponse) MarshalNDR ¶
func (*StartServiceWResponse) UnmarshalNDR ¶
type StatusType ¶
type StatusType uint32
StatusType type represents SC_STATUS_TYPE RPC enumeration.
The SC_STATUS_TYPE enumeration specifies the information level for the RQueryServiceStatusEx method.
var ( // SC_STATUS_PROCESS_INFO: The information level StatusTypeProcessInfo StatusType = 0 )
func (StatusType) String ¶
func (o StatusType) String() string
type String ¶
type String struct { // StringPtr: Pointer to an ANSI character string. StringPointer string `idl:"name:StringPtr;string" json:"string_pointer"` }
String structure represents STRING_PTRSA RPC structure.
The STRING_PTRSA structure defines a pointer to an ANSI character string.
type SvcctlClient ¶
type SvcctlClient interface { // The RCloseServiceHandle method is called by the client. In response, the server releases // the handle to the specified service or the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+----------------------------------------------------------------------------------+ // +------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------+----------------------------------------------------------------------------------+ // | 0xFFFF75FD | The operation completed successfully. Additionally, the passed handle was the | // | | last one created for the associated service record that was previously used in a | // | | successful call to the RNotifyServiceStatusChange (section 3.1.4.43) method. | // +------------------------+----------------------------------------------------------------------------------+ // | 0xFFFF75FE | The operation completed successfully. Additionally, the passed handle was | // | | previously used in a successful call to the RNotifyServiceStatusChange method. | // +------------------------+----------------------------------------------------------------------------------+ CloseService(context.Context, *CloseServiceRequest, ...dcerpc.CallOption) (*CloseServiceResponse, error) // The RControlService method receives a control code for a specific service handle, // as specified by the client. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | The requested control code is undefined | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<35> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the | // | | ServiceStatus.dwCurrentState in the service record is SERVICE_START_PENDING or | // | | SERVICE_STOP_PENDING. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ ControlService(context.Context, *ControlServiceRequest, ...dcerpc.CallOption) (*ControlServiceResponse, error) // The RDeleteService method marks the specified service for deletion from the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The DELETE access right had not been granted to the caller when the RPC context | // | | handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has already been called for the service record identified by | // | | the hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ DeleteService(context.Context, *DeleteServiceRequest, ...dcerpc.CallOption) (*DeleteServiceResponse, error) // The RLockServiceDatabase method acquires a lock on an SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_LOCK access rights had not been granted to the caller when the | // | | RPC context handle was created. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked. | // +------------------------------------+----------------------------------------------------------------------------------+ LockServiceDatabase(context.Context, *LockServiceDatabaseRequest, ...dcerpc.CallOption) (*LockServiceDatabaseResponse, error) // The RQueryServiceObjectSecurity method returns a copy of the SECURITY_DESCRIPTOR // structure associated with a service object. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access rights had not been granted to the caller when the RPC | // | | context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ // // The client MAY provide a combination of one or more SECURITY_INFORMATION bit flags // for dwSecurityInformation. // // If SACL_SECURITY_INFORMATION is specified for the dwSecurityInformation parameter, // then an ACCESS_SYSTEM_SECURITY right MUST have been granted to the caller when hService // was created. (See AS in ACCESS_MASK in [MS-DTYP] 2.4.3.) // // If DACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, OWNER_SECURITY_INFORMATION, // or GROUP_SECURITY_INFORMATION is specified for the dwSecurityInformation parameter, // then a READ_CONTROL right MUST have been granted to the caller when hService was // created. (See RC in ACCESS_MASK in [MS-DTYP] 2.4.3.) QueryServiceObjectSecurity(context.Context, *QueryServiceObjectSecurityRequest, ...dcerpc.CallOption) (*QueryServiceObjectSecurityResponse, error) // The RSetServiceObjectSecurity method sets the SECURITY_DESCRIPTOR structure associated // with a service object. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access rights had not been granted to the caller when the RPC | // | | context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called with an RPC context handle identifying | // | | the same service record as the hService parameter for this call. | // +--------------------------------------+----------------------------------------------------------------------------------+ // // The client MAY provide a combination of one or more SECURITY_INFORMATION bit flags // for dwSecurityInformation. // // If SACL_SECURITY_INFORMATION is specified via dwSecurityInformation, then an ACCESS_SYSTEM_SECURITY // right MUSThave been granted to the caller when hService was created. (See WD in ACCESS_MASK // in [MS-DTYP] 2.4.3. // // If LABEL_SECURITY_INFORMATION or OWNER_SECURITY_INFORMATION or GROUP_SECURITY_INFORMATION // is specified via dwSecurityInformation, then a WRITE_OWNER right MUST have been granted // to the caller when hService was created. (See WO in ACCESS_MASK in [MS-DTYP] 2.4.3.) // // If DACL_SECURITY_INFORMATION is specified via dwSecurityInformation, then a WRITE_DAC // right MUST have been granted to the caller when hService was created. (See WD in // ACCESS_MASK in [MS-DTYP] 2.4.3.) SetServiceObjectSecurity(context.Context, *SetServiceObjectSecurityRequest, ...dcerpc.CallOption) (*SetServiceObjectSecurityResponse, error) // The RQueryServiceStatus method returns the current status of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_STATUS access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The ImagePath of the service record identified by the hService parameter does | // | | not exist. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ // // If the type of the service record is SERVICE_KERNEL_DRIVER or SERVICE_FILESYSTEM_DRIVER, // the SCM queries the current status of the driver from the operating system and set // the ServiceStatus.dwCurrentState of the service record to SERVICE_RUNNING if driver // is loaded and to SERVICE_STOPPED if it is not. QueryServiceStatus(context.Context, *QueryServiceStatusRequest, ...dcerpc.CallOption) (*QueryServiceStatusResponse, error) // The RSetServiceStatus method updates the SCM status information for the calling service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+----------------------------------------------------------------------------------+ // +------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | Either the handle is no longer valid or the SERVICE_SET_STATUS access rights had | // | | not been granted to the caller when the RPC context handle was created. | // +------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data provided in the lpServiceStatus parameter is invalid. | // +------------------------+----------------------------------------------------------------------------------+ SetServiceStatus(context.Context, *SetServiceStatusRequest, ...dcerpc.CallOption) (*SetServiceStatusResponse, error) // The RUnlockServiceDatabase method releases a lock on a service database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +---------------------------------+----------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------+ // +---------------------------------+----------------------------------------------+ // | 1071 ERROR_INVALID_SERVICE_LOCK | The specified RPC context handle is invalid. | // +---------------------------------+----------------------------------------------+ UnlockServiceDatabase(context.Context, *UnlockServiceDatabaseRequest, ...dcerpc.CallOption) (*UnlockServiceDatabaseResponse, error) // The RNotifyBootConfigStatus method reports the boot status to the SCM. // // Return Values: The method returns ERROR_SUCCESS (0x00000000) on success; otherwise, // it returns one of the following error codes. // // +----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The caller does not have the SC_MANAGER_MODIFY_BOOT_CONFIG access rights granted | // | | in the SCM Security Descriptor. | // +----------------------------------+----------------------------------------------------------------------------------+ // | 1074 ERROR_ALREADY_RUNNING_LKG | The system is currently running with the last-known-good configuration. | // +----------------------------------+----------------------------------------------------------------------------------+ // | 1076 ERROR_BOOT_ALREADY_ACCEPTED | The BootAccepted field of the SCM on the target machine indicated that a | // | | successful call to RNotifyBootConfigStatus has already been made. | // +----------------------------------+----------------------------------------------------------------------------------+ NotifyBootConfigStatus(context.Context, *NotifyBootConfigStatusRequest, ...dcerpc.CallOption) (*NotifyBootConfigStatusResponse, error) // The RChangeServiceConfigW method changes a service's configuration parameters in // the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The lpDisplayName matches either the ServiceName or the DisplayName of another | // | | service record in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfigW(context.Context, *ChangeServiceConfigWRequest, ...dcerpc.CallOption) (*ChangeServiceConfigWResponse, error) // The RCreateServiceW method creates the service record in the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceW(context.Context, *CreateServiceWRequest, ...dcerpc.CallOption) (*CreateServiceWResponse, error) // The REnumDependentServicesW method returns the ServiceName, DisplayName, and ServiceStatus // values of service records that are listed as dependents of a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_ENUMERATE_DEPENDENT access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ EnumDependentServicesW(context.Context, *EnumDependentServicesWRequest, ...dcerpc.CallOption) (*EnumDependentServicesWResponse, error) // The REnumServicesStatusW method enumerates service records in the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +----------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------+----------------------------------------------------------------------------------+ // +----------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SM_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +----------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +----------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusW(context.Context, *EnumServicesStatusWRequest, ...dcerpc.CallOption) (*EnumServicesStatusWResponse, error) // The ROpenSCManagerW method establishes a connection to server and opens the SCM database // on the specified server. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The client does not have the required access rights to open the SCM | // | | database on the server or the desired access is not granted to it in the SCM | // | | SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCMW(context.Context, *OpenSCMWRequest, ...dcerpc.CallOption) (*OpenSCMWResponse, error) // The ROpenServiceW method creates an RPC context handle to an existing service record. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The access specified by the dwDesiredAccess parameter cannot be granted to the | // | | caller. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with a specified DisplayName does not exist in the SCM | // | | database. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ OpenServiceW(context.Context, *OpenServiceWRequest, ...dcerpc.CallOption) (*OpenServiceWResponse, error) // The RQueryServiceConfigW method returns the configuration parameters of the specified // service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigW(context.Context, *QueryServiceConfigWRequest, ...dcerpc.CallOption) (*QueryServiceConfigWResponse, error) // The RQueryServiceLockStatusW method returns the lock status of the specified SCM // database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_QUERY_LOCK_STATUS access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ QueryServiceLockStatusW(context.Context, *QueryServiceLockStatusWRequest, ...dcerpc.CallOption) (*QueryServiceLockStatusWResponse, error) // The RStartServiceW method starts a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes.<41> // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 2 ERROR_FILE_NOT_FOUND | The system cannot find the file specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The system cannot find the path specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_START access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<42> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1054 ERROR_SERVICE_NO_THREAD | A thread could not be created for the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked by the call to the BlockServiceDatabase | // | | method.<43> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1056 ERROR_SERVICE_ALREADY_RUNNING | The ServiceStatus.dwCurrentState in the service record is not set to | // | | SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1058 ERROR_SERVICE_DISABLED | The service cannot be started because the Start field in the service record is | // | | set to SERVICE_DISABLED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1068 ERROR_SERVICE_DEPENDENCY_FAIL | The specified service depends on another service that has failed to start. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1069 ERROR_SERVICE_LOGON_FAILED | The service did not start due to a logon failure. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called for the service record identified by | // | | the hService parameter. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1075 ERROR_SERVICE_DEPENDENCY_DELETED | The specified service depends on a service that does not exist or has been | // | | marked for deletion. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ StartServiceW(context.Context, *StartServiceWRequest, ...dcerpc.CallOption) (*StartServiceWResponse, error) // The RGetServiceDisplayNameW method returns the display name of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The display name does not fit in the buffer. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the specified ServiceName does not exist in the SCM | // | | database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceDisplayNameW(context.Context, *GetServiceDisplayNameWRequest, ...dcerpc.CallOption) (*GetServiceDisplayNameWResponse, error) // The RGetServiceKeyNameW method returns the ServiceName of the service record with // the specified DisplayName. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The name specified in the lpDisplayName parameter is invalid or set to NULL. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the DisplayName matching the value specified in the | // | | lpDisplayName parameter does not exist in the SCM database identified by the | // | | hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceKeyNameW(context.Context, *GetServiceKeyNameWRequest, ...dcerpc.CallOption) (*GetServiceKeyNameWResponse, error) // The RChangeServiceConfigA method changes a service's configuration parameters in // the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The lpDisplayName matches either the ServiceName or the DisplayName of another | // | | service record in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfigA(context.Context, *ChangeServiceConfigARequest, ...dcerpc.CallOption) (*ChangeServiceConfigAResponse, error) // The RCreateServiceA method creates the service record in the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceA(context.Context, *CreateServiceARequest, ...dcerpc.CallOption) (*CreateServiceAResponse, error) // The REnumDependentServicesA method returns the ServiceName, DisplayName, and ServiceStatus // of each service record that depends on the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_ENUMERATE_DEPENDENT access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ EnumDependentServicesA(context.Context, *EnumDependentServicesARequest, ...dcerpc.CallOption) (*EnumDependentServicesAResponse, error) // The REnumServicesStatusA method enumerates service records in the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +----------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------+----------------------------------------------------------------------------------+ // +----------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +----------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +----------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusA(context.Context, *EnumServicesStatusARequest, ...dcerpc.CallOption) (*EnumServicesStatusAResponse, error) // The ROpenSCManagerA method opens a connection to the SCM from the client and then // opens the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CONNECT access right or the desired access is not granted to the | // | | caller in the SCM SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCMA(context.Context, *OpenSCMARequest, ...dcerpc.CallOption) (*OpenSCMAResponse, error) // The ROpenServiceA method creates an RPC context handle to an existing service record. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The access specified by the dwDesiredAccess parameter cannot be granted to the | // | | caller. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with a specified DisplayName does not exist in the SCM | // | | database. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ OpenServiceA(context.Context, *OpenServiceARequest, ...dcerpc.CallOption) (*OpenServiceAResponse, error) // The RQueryServiceConfigA method returns the configuration parameters of the specified // service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigA(context.Context, *QueryServiceConfigARequest, ...dcerpc.CallOption) (*QueryServiceConfigAResponse, error) // The RQueryServiceLockStatusA method returns the lock status of the specified SCM // database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_QUERY_LOCK_STATUS access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ QueryServiceLockStatusA(context.Context, *QueryServiceLockStatusARequest, ...dcerpc.CallOption) (*QueryServiceLockStatusAResponse, error) // The RStartServiceA method starts a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes.<46> // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 2 ERROR_FILE_NOT_FOUND | The system cannot find the file specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The system cannot find the path specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_START access right had not been granted to the caller when the RPC | // | | context handle to the service was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<47> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1054 ERROR_SERVICE_NO_THREAD | A thread could not be created for the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked by the call to the RLockServiceDatabase (section | // | | 3.1.4.4) method.<48> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1056 ERROR_SERVICE_ALREADY_RUNNING | The ServiceStatus.dwCurrentState in the service record is not set to | // | | SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1058 ERROR_SERVICE_DISABLED | The service cannot be started because the Start field in the service record is | // | | set to SERVICE_DISABLED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1068 ERROR_SERVICE_DEPENDENCY_FAIL | The specified service depends on another service that has failed to start. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1069 ERROR_SERVICE_LOGON_FAILED | The service did not start due to a logon failure. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called for the service record identified by | // | | the hService parameter. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1075 ERROR_SERVICE_DEPENDENCY_DELETED | The specified service depends on a service that does not exist or has been | // | | marked for deletion. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ StartServiceA(context.Context, *StartServiceARequest, ...dcerpc.CallOption) (*StartServiceAResponse, error) // The RGetServiceDisplayNameA method returns the display name of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The display name does not fit in the buffer. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the specified ServiceName does not exist in the SCM | // | | database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceDisplayNameA(context.Context, *GetServiceDisplayNameARequest, ...dcerpc.CallOption) (*GetServiceDisplayNameAResponse, error) // The RGetServiceKeyNameA method returns the ServiceName of the service record with // the specified DisplayName. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The name specified in lpDisplayName is invalid or set to NULL. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the DisplayName matching the specified lpDisplayName | // | | does not exist in the SCM database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceKeyNameA(context.Context, *GetServiceKeyNameARequest, ...dcerpc.CallOption) (*GetServiceKeyNameAResponse, error) // The REnumServiceGroupW method returns the members of a service group. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by pszGroupName does not exist in the SCM GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServiceGroupW(context.Context, *EnumServiceGroupWRequest, ...dcerpc.CallOption) (*EnumServiceGroupWResponse, error) // The RChangeServiceConfig2A method SHOULD<51> change the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes.<52> // // +-----------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1080 ERROR_CANNOT_DETECT_DRIVER_FAILURE | SERVICE_CONFIG_FAILURE_ACTIONS cannot be used as a dwInfoLevel in the Info | // | | parameter for service records with a Type value defined for drivers. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfig2A(context.Context, *ChangeServiceConfig2ARequest, ...dcerpc.CallOption) (*ChangeServiceConfig2AResponse, error) // The RChangeServiceConfig2W <53> method changes the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes.<54> // // +-----------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1080 ERROR_CANNOT_DETECT_DRIVER_FAILURE | SERVICE_CONFIG_FAILURE_ACTIONS cannot be used as a dwInfoLevel in the Info | // | | parameter for service records with a Type value defined for drivers. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfig2W(context.Context, *ChangeServiceConfig2WRequest, ...dcerpc.CallOption) (*ChangeServiceConfig2WResponse, error) // The RQueryServiceConfig2A <55> method returns the optional configuration parameters // of the specified service based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfig2A(context.Context, *QueryServiceConfig2ARequest, ...dcerpc.CallOption) (*QueryServiceConfig2AResponse, error) // The RQueryServiceConfig2W <64> method returns the optional configuration parameters // of the specified service based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000005 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000006 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000087 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfig2W(context.Context, *QueryServiceConfig2WRequest, ...dcerpc.CallOption) (*QueryServiceConfig2WResponse, error) // The RQueryServiceStatusEx method returns the current status of the specified service, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_STATUS access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceStatusEx(context.Context, *QueryServiceStatusExRequest, ...dcerpc.CallOption) (*QueryServiceStatusExResponse, error) // The REnumServicesStatusExA method enumerates services in the specified SCM database, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by the pszGroupName parameter does not exist in the SCM | // | | GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusExA(context.Context, *EnumServicesStatusExARequest, ...dcerpc.CallOption) (*EnumServicesStatusExAResponse, error) // The REnumServicesStatusExW method enumerates services in the specified SCM database, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) (ERROR_SUCCESS) on success; // otherwise, it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by the pszGroupName parameter does not exist in the SCM | // | | GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusExW(context.Context, *EnumServicesStatusExWRequest, ...dcerpc.CallOption) (*EnumServicesStatusExWResponse, error) // The RCreateServiceWOW64A method creates the service record for a 32-bit service on // a 64-bit system with the path to the file image automatically adjusted to point to // a 32-bit file location on the system. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the SCM database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceWOW64A(context.Context, *CreateServiceWOW64ARequest, ...dcerpc.CallOption) (*CreateServiceWOW64AResponse, error) // The RCreateServiceWOW64W method creates the service record for a 32-bit service on // a 64-bit system with the path to the file image automatically adjusted to point to // a 32-bit file location on the system. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceWOW64W(context.Context, *CreateServiceWOW64WRequest, ...dcerpc.CallOption) (*CreateServiceWOW64WResponse, error) // The RNotifyServiceStatusChange method<74> allows the client to register for notifications // and check, via RGetNotifyResults (section 3.1.4.44), when the specified service of // type SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS is created or deleted // or when its status changes. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created, or the SERVICE_QUERY_STATUS | // | | access right had not been granted to the caller when the RPC context handle to | // | | the service record was created. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid or is not supported for the specified | // | | notification. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 50 ERROR_NOT_SUPPORTED | The request is not supported. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The system call level is not correct. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1242 ERROR_ALREADY_REGISTERED | A notification status handle has already been created for the service handle | // | | passed in the hService parameter. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1294 ERROR_SERVICE_NOTIFY_CLIENT_LAGGING | The service notification client is lagging too far behind the current state of | // | | services in the machine. | // +------------------------------------------+----------------------------------------------------------------------------------+ NotifyServiceStatusChange(context.Context, *NotifyServiceStatusChangeRequest, ...dcerpc.CallOption) (*NotifyServiceStatusChangeResponse, error) // The RGetNotifyResults method<75> returns notification information when the specified // status change that was previously requested by the client via RNotifyServiceStatusChange // (section 3.1.4.43) occurs on a specified service. // // The client MUST make one call to RGetNotifyResults for each call to RNotifyServiceStatusChange. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+--------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+--------------------------------+ // +---------------------------------+--------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+--------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+--------------------------------+ // | 1235 ERROR_REQUEST_ABORTED | The request was aborted. | // +---------------------------------+--------------------------------+ GetNotifyResults(context.Context, *GetNotifyResultsRequest, ...dcerpc.CallOption) (*GetNotifyResultsResponse, error) // The RCloseNotifyHandle method<77> unregisters the client from receiving future notifications // via the RGetNotifyResults (section 3.1.4.44) method from the server for specified // status changes on a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +------------------------+--------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+--------------------------------+ // +------------------------+--------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------+--------------------------------+ CloseNotify(context.Context, *CloseNotifyRequest, ...dcerpc.CallOption) (*CloseNotifyResponse, error) // The RControlServiceExA method<78> receives a control code for a specific service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | The requested control code is undefined. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<79> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the state of | // | | the service is SERVICE_START_PENDING or SERVICE_STOP_PENDING. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ ControlServiceExA(context.Context, *ControlServiceExARequest, ...dcerpc.CallOption) (*ControlServiceExAResponse, error) // The RControlServiceExW method<80> receives a control code for a specific service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000005 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000006 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000087 ERROR_INVALID_PARAMETER | The requested control code is undefined. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported level. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific timeout.<81> | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the state of | // | | the service is SERVICE_START_PENDING or SERVICE_STOP_PENDING. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------------+----------------------------------------------------------------------------------+ ControlServiceExW(context.Context, *ControlServiceExWRequest, ...dcerpc.CallOption) (*ControlServiceExWResponse, error) // The RQueryServiceConfigEx method SHOULD<82> query the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigEx(context.Context, *QueryServiceConfigExRequest, ...dcerpc.CallOption) (*QueryServiceConfigExResponse, error) // The RCreateWowService method creates a service whose binary is compiled for a specified // computer architecture.<83> The path to the file image is automatically adjusted to // point to the correct WoW-redirected location. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 50 ERROR_NOT_SUPPORTED | dwServiceWowType was an architecture that is not supported. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateWOWService(context.Context, *CreateWOWServiceRequest, ...dcerpc.CallOption) (*CreateWOWServiceResponse, error) // The ROpenSCManager2 method establishes a connection to server and opens the SCM database // on the specified server.<87> // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The client does not have the required access rights to open the SCM | // | | database on the server or the desired access is not granted to it in the SCM | // | | SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCM2(context.Context, *OpenSCM2Request, ...dcerpc.CallOption) (*OpenSCM2Response, error) // AlterContext alters the client context. AlterContext(context.Context, ...dcerpc.Option) error }
svcctl interface.
func NewSvcctlClient ¶
type SvcctlServer ¶
type SvcctlServer interface { // The RCloseServiceHandle method is called by the client. In response, the server releases // the handle to the specified service or the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+----------------------------------------------------------------------------------+ // +------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------+----------------------------------------------------------------------------------+ // | 0xFFFF75FD | The operation completed successfully. Additionally, the passed handle was the | // | | last one created for the associated service record that was previously used in a | // | | successful call to the RNotifyServiceStatusChange (section 3.1.4.43) method. | // +------------------------+----------------------------------------------------------------------------------+ // | 0xFFFF75FE | The operation completed successfully. Additionally, the passed handle was | // | | previously used in a successful call to the RNotifyServiceStatusChange method. | // +------------------------+----------------------------------------------------------------------------------+ CloseService(context.Context, *CloseServiceRequest) (*CloseServiceResponse, error) // The RControlService method receives a control code for a specific service handle, // as specified by the client. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | The requested control code is undefined | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<35> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the | // | | ServiceStatus.dwCurrentState in the service record is SERVICE_START_PENDING or | // | | SERVICE_STOP_PENDING. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ ControlService(context.Context, *ControlServiceRequest) (*ControlServiceResponse, error) // The RDeleteService method marks the specified service for deletion from the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The DELETE access right had not been granted to the caller when the RPC context | // | | handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has already been called for the service record identified by | // | | the hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ DeleteService(context.Context, *DeleteServiceRequest) (*DeleteServiceResponse, error) // The RLockServiceDatabase method acquires a lock on an SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_LOCK access rights had not been granted to the caller when the | // | | RPC context handle was created. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked. | // +------------------------------------+----------------------------------------------------------------------------------+ LockServiceDatabase(context.Context, *LockServiceDatabaseRequest) (*LockServiceDatabaseResponse, error) // The RQueryServiceObjectSecurity method returns a copy of the SECURITY_DESCRIPTOR // structure associated with a service object. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access rights had not been granted to the caller when the RPC | // | | context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ // // The client MAY provide a combination of one or more SECURITY_INFORMATION bit flags // for dwSecurityInformation. // // If SACL_SECURITY_INFORMATION is specified for the dwSecurityInformation parameter, // then an ACCESS_SYSTEM_SECURITY right MUST have been granted to the caller when hService // was created. (See AS in ACCESS_MASK in [MS-DTYP] 2.4.3.) // // If DACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, OWNER_SECURITY_INFORMATION, // or GROUP_SECURITY_INFORMATION is specified for the dwSecurityInformation parameter, // then a READ_CONTROL right MUST have been granted to the caller when hService was // created. (See RC in ACCESS_MASK in [MS-DTYP] 2.4.3.) QueryServiceObjectSecurity(context.Context, *QueryServiceObjectSecurityRequest) (*QueryServiceObjectSecurityResponse, error) // The RSetServiceObjectSecurity method sets the SECURITY_DESCRIPTOR structure associated // with a service object. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access rights had not been granted to the caller when the RPC | // | | context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called with an RPC context handle identifying | // | | the same service record as the hService parameter for this call. | // +--------------------------------------+----------------------------------------------------------------------------------+ // // The client MAY provide a combination of one or more SECURITY_INFORMATION bit flags // for dwSecurityInformation. // // If SACL_SECURITY_INFORMATION is specified via dwSecurityInformation, then an ACCESS_SYSTEM_SECURITY // right MUSThave been granted to the caller when hService was created. (See WD in ACCESS_MASK // in [MS-DTYP] 2.4.3. // // If LABEL_SECURITY_INFORMATION or OWNER_SECURITY_INFORMATION or GROUP_SECURITY_INFORMATION // is specified via dwSecurityInformation, then a WRITE_OWNER right MUST have been granted // to the caller when hService was created. (See WO in ACCESS_MASK in [MS-DTYP] 2.4.3.) // // If DACL_SECURITY_INFORMATION is specified via dwSecurityInformation, then a WRITE_DAC // right MUST have been granted to the caller when hService was created. (See WD in // ACCESS_MASK in [MS-DTYP] 2.4.3.) SetServiceObjectSecurity(context.Context, *SetServiceObjectSecurityRequest) (*SetServiceObjectSecurityResponse, error) // The RQueryServiceStatus method returns the current status of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_STATUS access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The ImagePath of the service record identified by the hService parameter does | // | | not exist. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ // // If the type of the service record is SERVICE_KERNEL_DRIVER or SERVICE_FILESYSTEM_DRIVER, // the SCM queries the current status of the driver from the operating system and set // the ServiceStatus.dwCurrentState of the service record to SERVICE_RUNNING if driver // is loaded and to SERVICE_STOPPED if it is not. QueryServiceStatus(context.Context, *QueryServiceStatusRequest) (*QueryServiceStatusResponse, error) // The RSetServiceStatus method updates the SCM status information for the calling service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+----------------------------------------------------------------------------------+ // +------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | Either the handle is no longer valid or the SERVICE_SET_STATUS access rights had | // | | not been granted to the caller when the RPC context handle was created. | // +------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data provided in the lpServiceStatus parameter is invalid. | // +------------------------+----------------------------------------------------------------------------------+ SetServiceStatus(context.Context, *SetServiceStatusRequest) (*SetServiceStatusResponse, error) // The RUnlockServiceDatabase method releases a lock on a service database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +---------------------------------+----------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------+ // +---------------------------------+----------------------------------------------+ // | 1071 ERROR_INVALID_SERVICE_LOCK | The specified RPC context handle is invalid. | // +---------------------------------+----------------------------------------------+ UnlockServiceDatabase(context.Context, *UnlockServiceDatabaseRequest) (*UnlockServiceDatabaseResponse, error) // The RNotifyBootConfigStatus method reports the boot status to the SCM. // // Return Values: The method returns ERROR_SUCCESS (0x00000000) on success; otherwise, // it returns one of the following error codes. // // +----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------------+----------------------------------------------------------------------------------+ // +----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The caller does not have the SC_MANAGER_MODIFY_BOOT_CONFIG access rights granted | // | | in the SCM Security Descriptor. | // +----------------------------------+----------------------------------------------------------------------------------+ // | 1074 ERROR_ALREADY_RUNNING_LKG | The system is currently running with the last-known-good configuration. | // +----------------------------------+----------------------------------------------------------------------------------+ // | 1076 ERROR_BOOT_ALREADY_ACCEPTED | The BootAccepted field of the SCM on the target machine indicated that a | // | | successful call to RNotifyBootConfigStatus has already been made. | // +----------------------------------+----------------------------------------------------------------------------------+ NotifyBootConfigStatus(context.Context, *NotifyBootConfigStatusRequest) (*NotifyBootConfigStatusResponse, error) // The RChangeServiceConfigW method changes a service's configuration parameters in // the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The lpDisplayName matches either the ServiceName or the DisplayName of another | // | | service record in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfigW(context.Context, *ChangeServiceConfigWRequest) (*ChangeServiceConfigWResponse, error) // The RCreateServiceW method creates the service record in the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceW(context.Context, *CreateServiceWRequest) (*CreateServiceWResponse, error) // The REnumDependentServicesW method returns the ServiceName, DisplayName, and ServiceStatus // values of service records that are listed as dependents of a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_ENUMERATE_DEPENDENT access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ EnumDependentServicesW(context.Context, *EnumDependentServicesWRequest) (*EnumDependentServicesWResponse, error) // The REnumServicesStatusW method enumerates service records in the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +----------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------+----------------------------------------------------------------------------------+ // +----------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SM_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +----------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +----------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusW(context.Context, *EnumServicesStatusWRequest) (*EnumServicesStatusWResponse, error) // The ROpenSCManagerW method establishes a connection to server and opens the SCM database // on the specified server. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The client does not have the required access rights to open the SCM | // | | database on the server or the desired access is not granted to it in the SCM | // | | SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCMW(context.Context, *OpenSCMWRequest) (*OpenSCMWResponse, error) // The ROpenServiceW method creates an RPC context handle to an existing service record. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The access specified by the dwDesiredAccess parameter cannot be granted to the | // | | caller. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with a specified DisplayName does not exist in the SCM | // | | database. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ OpenServiceW(context.Context, *OpenServiceWRequest) (*OpenServiceWResponse, error) // The RQueryServiceConfigW method returns the configuration parameters of the specified // service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigW(context.Context, *QueryServiceConfigWRequest) (*QueryServiceConfigWResponse, error) // The RQueryServiceLockStatusW method returns the lock status of the specified SCM // database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_QUERY_LOCK_STATUS access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ QueryServiceLockStatusW(context.Context, *QueryServiceLockStatusWRequest) (*QueryServiceLockStatusWResponse, error) // The RStartServiceW method starts a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes.<41> // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 2 ERROR_FILE_NOT_FOUND | The system cannot find the file specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The system cannot find the path specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_START access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<42> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1054 ERROR_SERVICE_NO_THREAD | A thread could not be created for the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked by the call to the BlockServiceDatabase | // | | method.<43> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1056 ERROR_SERVICE_ALREADY_RUNNING | The ServiceStatus.dwCurrentState in the service record is not set to | // | | SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1058 ERROR_SERVICE_DISABLED | The service cannot be started because the Start field in the service record is | // | | set to SERVICE_DISABLED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1068 ERROR_SERVICE_DEPENDENCY_FAIL | The specified service depends on another service that has failed to start. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1069 ERROR_SERVICE_LOGON_FAILED | The service did not start due to a logon failure. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called for the service record identified by | // | | the hService parameter. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1075 ERROR_SERVICE_DEPENDENCY_DELETED | The specified service depends on a service that does not exist or has been | // | | marked for deletion. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ StartServiceW(context.Context, *StartServiceWRequest) (*StartServiceWResponse, error) // The RGetServiceDisplayNameW method returns the display name of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The display name does not fit in the buffer. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the specified ServiceName does not exist in the SCM | // | | database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceDisplayNameW(context.Context, *GetServiceDisplayNameWRequest) (*GetServiceDisplayNameWResponse, error) // The RGetServiceKeyNameW method returns the ServiceName of the service record with // the specified DisplayName. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The name specified in the lpDisplayName parameter is invalid or set to NULL. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the DisplayName matching the value specified in the | // | | lpDisplayName parameter does not exist in the SCM database identified by the | // | | hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceKeyNameW(context.Context, *GetServiceKeyNameWRequest) (*GetServiceKeyNameWResponse, error) // The RChangeServiceConfigA method changes a service's configuration parameters in // the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The lpDisplayName matches either the ServiceName or the DisplayName of another | // | | service record in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfigA(context.Context, *ChangeServiceConfigARequest) (*ChangeServiceConfigAResponse, error) // The RCreateServiceA method creates the service record in the SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceA(context.Context, *CreateServiceARequest) (*CreateServiceAResponse, error) // The REnumDependentServicesA method returns the ServiceName, DisplayName, and ServiceStatus // of each service record that depends on the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_ENUMERATE_DEPENDENT access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ EnumDependentServicesA(context.Context, *EnumDependentServicesARequest) (*EnumDependentServicesAResponse, error) // The REnumServicesStatusA method enumerates service records in the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +----------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +----------------------------+----------------------------------------------------------------------------------+ // +----------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the service record was created. | // +----------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +----------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +----------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusA(context.Context, *EnumServicesStatusARequest) (*EnumServicesStatusAResponse, error) // The ROpenSCManagerA method opens a connection to the SCM from the client and then // opens the specified SCM database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CONNECT access right or the desired access is not granted to the | // | | caller in the SCM SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCMA(context.Context, *OpenSCMARequest) (*OpenSCMAResponse, error) // The ROpenServiceA method creates an RPC context handle to an existing service record. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The access specified by the dwDesiredAccess parameter cannot be granted to the | // | | caller. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with a specified DisplayName does not exist in the SCM | // | | database. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ OpenServiceA(context.Context, *OpenServiceARequest) (*OpenServiceAResponse, error) // The RQueryServiceConfigA method returns the configuration parameters of the specified // service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigA(context.Context, *QueryServiceConfigARequest) (*QueryServiceConfigAResponse, error) // The RQueryServiceLockStatusA method returns the lock status of the specified SCM // database. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-------------------------------+----------------------------------------------------------------------------------+ // +-------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_QUERY_LOCK_STATUS access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-------------------------------+----------------------------------------------------------------------------------+ QueryServiceLockStatusA(context.Context, *QueryServiceLockStatusARequest) (*QueryServiceLockStatusAResponse, error) // The RStartServiceA method starts a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes.<46> // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 2 ERROR_FILE_NOT_FOUND | The system cannot find the file specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 3 ERROR_PATH_NOT_FOUND | The system cannot find the path specified. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_START access right had not been granted to the caller when the RPC | // | | context handle to the service was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<47> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1054 ERROR_SERVICE_NO_THREAD | A thread could not be created for the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1055 ERROR_SERVICE_DATABASE_LOCKED | The service database is locked by the call to the RLockServiceDatabase (section | // | | 3.1.4.4) method.<48> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1056 ERROR_SERVICE_ALREADY_RUNNING | The ServiceStatus.dwCurrentState in the service record is not set to | // | | SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1058 ERROR_SERVICE_DISABLED | The service cannot be started because the Start field in the service record is | // | | set to SERVICE_DISABLED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1068 ERROR_SERVICE_DEPENDENCY_FAIL | The specified service depends on another service that has failed to start. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1069 ERROR_SERVICE_LOGON_FAILED | The service did not start due to a logon failure. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService method has been called for the service record identified by | // | | the hService parameter. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1075 ERROR_SERVICE_DEPENDENCY_DELETED | The specified service depends on a service that does not exist or has been | // | | marked for deletion. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ StartServiceA(context.Context, *StartServiceARequest) (*StartServiceAResponse, error) // The RGetServiceDisplayNameA method returns the display name of the specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The display name does not fit in the buffer. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the specified ServiceName does not exist in the SCM | // | | database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceDisplayNameA(context.Context, *GetServiceDisplayNameARequest) (*GetServiceDisplayNameAResponse, error) // The RGetServiceKeyNameA method returns the ServiceName of the service record with // the specified DisplayName. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The name specified in lpDisplayName is invalid or set to NULL. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The service record with the DisplayName matching the specified lpDisplayName | // | | does not exist in the SCM database identified by the hSCManager parameter. | // +-----------------------------------+----------------------------------------------------------------------------------+ GetServiceKeyNameA(context.Context, *GetServiceKeyNameARequest) (*GetServiceKeyNameAResponse, error) // The REnumServiceGroupW method returns the members of a service group. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by pszGroupName does not exist in the SCM GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServiceGroupW(context.Context, *EnumServiceGroupWRequest) (*EnumServiceGroupWResponse, error) // The RChangeServiceConfig2A method SHOULD<51> change the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes.<52> // // +-----------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1080 ERROR_CANNOT_DETECT_DRIVER_FAILURE | SERVICE_CONFIG_FAILURE_ACTIONS cannot be used as a dwInfoLevel in the Info | // | | parameter for service records with a Type value defined for drivers. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfig2A(context.Context, *ChangeServiceConfig2ARequest) (*ChangeServiceConfig2AResponse, error) // The RChangeServiceConfig2W <53> method changes the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise // it returns one of the following error codes.<54> // // +-----------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_CHANGE_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1080 ERROR_CANNOT_DETECT_DRIVER_FAILURE | SERVICE_CONFIG_FAILURE_ACTIONS cannot be used as a dwInfoLevel in the Info | // | | parameter for service records with a Type value defined for drivers. | // +-----------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------------+----------------------------------------------------------------------------------+ ChangeServiceConfig2W(context.Context, *ChangeServiceConfig2WRequest) (*ChangeServiceConfig2WResponse, error) // The RQueryServiceConfig2A <55> method returns the optional configuration parameters // of the specified service based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfig2A(context.Context, *QueryServiceConfig2ARequest) (*QueryServiceConfig2AResponse, error) // The RQueryServiceConfig2W <64> method returns the optional configuration parameters // of the specified service based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000005 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000006 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000087 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfig2W(context.Context, *QueryServiceConfig2WRequest) (*QueryServiceConfig2WResponse, error) // The RQueryServiceStatusEx method returns the current status of the specified service, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_STATUS access right had not been granted to the caller when | // | | the RPC context handle to the service record was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 122 ERROR_INSUFFICIENT_BUFFER | The data area passed to a system call is too small. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceStatusEx(context.Context, *QueryServiceStatusExRequest) (*QueryServiceStatusExResponse, error) // The REnumServicesStatusExA method enumerates services in the specified SCM database, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by the pszGroupName parameter does not exist in the SCM | // | | GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusExA(context.Context, *EnumServicesStatusExARequest) (*EnumServicesStatusExAResponse, error) // The REnumServicesStatusExW method enumerates services in the specified SCM database, // based on the specified information level. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) (ERROR_SUCCESS) on success; // otherwise, it returns one of the following error codes. // // +-----------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +-----------------------------------+----------------------------------------------------------------------------------+ // +-----------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The InfoLevel parameter contains an unsupported value. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 234 ERROR_MORE_DATA | More data is available. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1060 ERROR_SERVICE_DOES_NOT_EXIST | The group specified by the pszGroupName parameter does not exist in the SCM | // | | GroupList. | // +-----------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +-----------------------------------+----------------------------------------------------------------------------------+ EnumServicesStatusExW(context.Context, *EnumServicesStatusExWRequest) (*EnumServicesStatusExWResponse, error) // The RCreateServiceWOW64A method creates the service record for a 32-bit service on // a 64-bit system with the path to the file image automatically adjusted to point to // a 32-bit file location on the system. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the SCM database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceWOW64A(context.Context, *CreateServiceWOW64ARequest) (*CreateServiceWOW64AResponse, error) // The RCreateServiceWOW64W method creates the service record for a 32-bit service on // a 64-bit system with the path to the file image automatically adjusted to point to // a 32-bit file location on the system. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateServiceWOW64W(context.Context, *CreateServiceWOW64WRequest) (*CreateServiceWOW64WResponse, error) // The RNotifyServiceStatusChange method<74> allows the client to register for notifications // and check, via RGetNotifyResults (section 3.1.4.44), when the specified service of // type SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS is created or deleted // or when its status changes. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_ENUMERATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created, or the SERVICE_QUERY_STATUS | // | | access right had not been granted to the caller when the RPC context handle to | // | | the service record was created. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid or is not supported for the specified | // | | notification. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 50 ERROR_NOT_SUPPORTED | The request is not supported. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The system call level is not correct. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The RDeleteService has been called for the service record identified by the | // | | hService parameter. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1242 ERROR_ALREADY_REGISTERED | A notification status handle has already been created for the service handle | // | | passed in the hService parameter. | // +------------------------------------------+----------------------------------------------------------------------------------+ // | 1294 ERROR_SERVICE_NOTIFY_CLIENT_LAGGING | The service notification client is lagging too far behind the current state of | // | | services in the machine. | // +------------------------------------------+----------------------------------------------------------------------------------+ NotifyServiceStatusChange(context.Context, *NotifyServiceStatusChangeRequest) (*NotifyServiceStatusChangeResponse, error) // The RGetNotifyResults method<75> returns notification information when the specified // status change that was previously requested by the client via RNotifyServiceStatusChange // (section 3.1.4.43) occurs on a specified service. // // The client MUST make one call to RGetNotifyResults for each call to RNotifyServiceStatusChange. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+--------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+--------------------------------+ // +---------------------------------+--------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+--------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+--------------------------------+ // | 1235 ERROR_REQUEST_ABORTED | The request was aborted. | // +---------------------------------+--------------------------------+ GetNotifyResults(context.Context, *GetNotifyResultsRequest) (*GetNotifyResultsResponse, error) // The RCloseNotifyHandle method<77> unregisters the client from receiving future notifications // via the RGetNotifyResults (section 3.1.4.44) method from the server for specified // status changes on a specified service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns the following error code. // // +------------------------+--------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------+--------------------------------+ // +------------------------+--------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +------------------------+--------------------------------+ CloseNotify(context.Context, *CloseNotifyRequest) (*CloseNotifyResponse, error) // The RControlServiceExA method<78> receives a control code for a specific service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | The requested control code is undefined. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific time-out.<79> | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the state of | // | | the service is SERVICE_START_PENDING or SERVICE_STOP_PENDING. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------+----------------------------------------------------------------------------------+ ControlServiceExA(context.Context, *ControlServiceExARequest) (*ControlServiceExAResponse, error) // The RControlServiceExW method<80> receives a control code for a specific service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000005 ERROR_ACCESS_DENIED | The required access right had not been granted to the caller when the RPC | // | | context handle to the service record was created. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000006 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000087 ERROR_INVALID_PARAMETER | The requested control code is undefined. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00000124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported level. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001051 ERROR_DEPENDENT_SERVICES_RUNNING | The service cannot be stopped because other running services are dependent on | // | | it. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001052 ERROR_INVALID_SERVICE_CONTROL | The requested control code is not valid, or it is unacceptable to the service. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001053 ERROR_SERVICE_REQUEST_TIMEOUT | The process for the service was started, but it did not respond within an | // | | implementation-specific timeout.<81> | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001061 ERROR_SERVICE_CANNOT_ACCEPT_CTRL | The requested control code cannot be sent to the service because the state of | // | | the service is SERVICE_START_PENDING or SERVICE_STOP_PENDING. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 0x00001062 ERROR_SERVICE_NOT_ACTIVE | The service has not been started, or the ServiceStatus.dwCurrentState in the | // | | service record is SERVICE_STOPPED. | // +---------------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------------------+----------------------------------------------------------------------------------+ ControlServiceExW(context.Context, *ControlServiceExWRequest) (*ControlServiceExWResponse, error) // The RQueryServiceConfigEx method SHOULD<82> query the optional configuration parameters // of a service. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +---------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +---------------------------------+----------------------------------------------------------------------------------+ // +---------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SERVICE_QUERY_CONFIG access right had not been granted to the caller when | // | | the RPC context handle was created. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle is no longer valid. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 124 ERROR_INVALID_LEVEL | The dwInfoLevel parameter contains an unsupported value. | // +---------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +---------------------------------+----------------------------------------------------------------------------------+ QueryServiceConfigEx(context.Context, *QueryServiceConfigExRequest) (*QueryServiceConfigExResponse, error) // The RCreateWowService method creates a service whose binary is compiled for a specified // computer architecture.<83> The path to the file image is automatically adjusted to // point to the correct WoW-redirected location. // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +--------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +--------------------------------------+----------------------------------------------------------------------------------+ // +--------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The SC_MANAGER_CREATE_SERVICE access right had not been granted to the caller | // | | when the RPC context handle to the SCM was created. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 6 ERROR_INVALID_HANDLE | The handle specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 13 ERROR_INVALID_DATA | The data is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 50 ERROR_NOT_SUPPORTED | dwServiceWowType was an architecture that is not supported. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 87 ERROR_INVALID_PARAMETER | A parameter that was specified is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1057 ERROR_INVALID_SERVICE_ACCOUNT | The user account name specified in the lpServiceStartName parameter does not | // | | exist. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1059 ERROR_CIRCULAR_DEPENDENCY | A circular service dependency was specified. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1072 ERROR_SERVICE_MARKED_FOR_DELETE | The service record with a specified name already exists, and RDeleteService has | // | | been called for it. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1073 ERROR_SERVICE_EXISTS | The service record with the ServiceName matching the specified lpServiceName | // | | already exists. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1078 ERROR_DUPLICATE_SERVICE_NAME | The service record with the same DisplayName or the same ServiceName as the | // | | passed-in lpDisplayName already exists in the service control manager database. | // +--------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +--------------------------------------+----------------------------------------------------------------------------------+ CreateWOWService(context.Context, *CreateWOWServiceRequest) (*CreateWOWServiceResponse, error) // The ROpenSCManager2 method establishes a connection to server and opens the SCM database // on the specified server.<87> // // Return Values: The method returns 0x00000000 (ERROR_SUCCESS) on success; otherwise, // it returns one of the following error codes. // // +------------------------------------+----------------------------------------------------------------------------------+ // | RETURN | | // | VALUE/CODE | DESCRIPTION | // | | | // +------------------------------------+----------------------------------------------------------------------------------+ // +------------------------------------+----------------------------------------------------------------------------------+ // | 5 ERROR_ACCESS_DENIED | The client does not have the required access rights to open the SCM | // | | database on the server or the desired access is not granted to it in the SCM | // | | SecurityDescriptor. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 123 ERROR_INVALID_NAME | The specified service name is invalid. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1065 ERROR_DATABASE_DOES_NOT_EXIST | The database specified does not exist. | // +------------------------------------+----------------------------------------------------------------------------------+ // | 1115 ERROR_SHUTDOWN_IN_PROGRESS | The system is shutting down. | // +------------------------------------+----------------------------------------------------------------------------------+ OpenSCM2(context.Context, *OpenSCM2Request) (*OpenSCM2Response, error) }
svcctl server interface.
type UnicodeString ¶
type UnicodeString struct { // StringPtr: A pointer to a Unicode character string. StringPointer string `idl:"name:StringPtr;string" json:"string_pointer"` }
UnicodeString structure represents STRING_PTRSW RPC structure.
The STRING_PTRSW structure defines a pointer to a Unicode character string.
func (*UnicodeString) MarshalNDR ¶
func (*UnicodeString) UnmarshalNDR ¶
type UnlockServiceDatabaseRequest ¶
type UnlockServiceDatabaseRequest struct { // Lock: An LPSC_RPC_LOCK (section 2.2.5) data type that defines the database lock context // handle created by a previous call to the RLockServiceDatabase method. Lock *Lock `idl:"name:Lock" json:"lock"` }
UnlockServiceDatabaseRequest structure represents the RUnlockServiceDatabase operation request
func (*UnlockServiceDatabaseRequest) MarshalNDR ¶
func (*UnlockServiceDatabaseRequest) UnmarshalNDR ¶
type UnlockServiceDatabaseResponse ¶
type UnlockServiceDatabaseResponse struct { // Lock: An LPSC_RPC_LOCK (section 2.2.5) data type that defines the database lock context // handle created by a previous call to the RLockServiceDatabase method. Lock *Lock `idl:"name:Lock" json:"lock"` // Return: The RUnlockServiceDatabase return value. Return uint32 `idl:"name:Return" json:"return"` }
UnlockServiceDatabaseResponse structure represents the RUnlockServiceDatabase operation response