svcctl

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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}
)
View Source
var (
	// import guard
	GoPackage = "scmr"
)
View Source
var MaxAccountNameLength = 2048

MaxAccountNameLength represents the SC_MAX_ACCOUNT_NAME_LENGTH RPC constant

View Source
var MaxArgumentLength = 1024

MaxArgumentLength represents the SC_MAX_ARGUMENT_LENGTH RPC constant

View Source
var MaxArguments = 1024

MaxArguments represents the SC_MAX_ARGUMENTS RPC constant

View Source
var MaxCommentLength = 128

MaxCommentLength represents the SC_MAX_COMMENT_LENGTH RPC constant

View Source
var MaxComputerNameLength = 1024

MaxComputerNameLength represents the SC_MAX_COMPUTER_NAME_LENGTH RPC constant

View Source
var MaxDependSize = 4096

MaxDependSize represents the SC_MAX_DEPEND_SIZE RPC constant

View Source
var MaxNameLength = 257

MaxNameLength represents the SC_MAX_NAME_LENGTH RPC constant

View Source
var MaxPathLength = 32768

MaxPathLength represents the SC_MAX_PATH_LENGTH RPC constant

View Source
var MaxPwdSize = 514

MaxPwdSize represents the SC_MAX_PWD_SIZE RPC constant

View Source
var MaxServiceNameLength = 256

MaxServiceNameLength represents the MAX_SERVICE_NAME_LENGTH RPC constant

Functions

func NewSvcctlServerHandle

func NewSvcctlServerHandle(o SvcctlServer) dcerpc.ServerHandle

func RegisterSvcctlServer

func RegisterSvcctlServer(conn dcerpc.Conn, o SvcctlServer, opts ...dcerpc.Option)

func SvcctlServerHandle

func SvcctlServerHandle(ctx context.Context, o SvcctlServer, opNum int, r ndr.Reader) (dcerpc.Operation, error)

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.

func (*Action) MarshalNDR

func (o *Action) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Action) UnmarshalNDR

func (o *Action) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func (o *ChangeServiceConfig2ARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfig2AResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfig2WRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfig2WResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfigARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfigAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfigWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *ChangeServiceConfigWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseNotifyRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseNotifyRequest) UnmarshalNDR

func (o *CloseNotifyRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseNotifyResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseNotifyResponse) UnmarshalNDR

func (o *CloseNotifyResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseServiceRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseServiceRequest) UnmarshalNDR

func (o *CloseServiceRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CloseServiceResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CloseServiceResponse) UnmarshalNDR

func (o *CloseServiceResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ConfigInfoA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA) UnmarshalNDR

func (o *ConfigInfoA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_ConfigInfoA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ConfigInfoA_ConfigInfoA) NDRSwitchValue

func (o *ConfigInfoA_ConfigInfoA) NDRSwitchValue(sw uint32) uint32

func (*ConfigInfoA_ConfigInfoA) UnmarshalUnionNDR

func (o *ConfigInfoA_ConfigInfoA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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

func (o *ConfigInfoA_DelayedAutoStart) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_Description) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_Description) UnmarshalNDR

func (o *ConfigInfoA_Description) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_FailureActions) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_FailureActions) UnmarshalNDR

func (o *ConfigInfoA_FailureActions) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_PreferredNode) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_PreferredNode) UnmarshalNDR

func (o *ConfigInfoA_PreferredNode) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_Preshutdown) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_Preshutdown) UnmarshalNDR

func (o *ConfigInfoA_Preshutdown) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_SIDInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_SIDInfo) UnmarshalNDR

func (o *ConfigInfoA_SIDInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoA_TriggerInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoA_TriggerInfo) UnmarshalNDR

func (o *ConfigInfoA_TriggerInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW) UnmarshalNDR

func (o *ConfigInfoW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_ConfigInfoW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ConfigInfoW_ConfigInfoW) NDRSwitchValue

func (o *ConfigInfoW_ConfigInfoW) NDRSwitchValue(sw uint32) uint32

func (*ConfigInfoW_ConfigInfoW) UnmarshalUnionNDR

func (o *ConfigInfoW_ConfigInfoW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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

func (o *ConfigInfoW_DelayedAutoStart) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_Description) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_Description) UnmarshalNDR

func (o *ConfigInfoW_Description) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_FailureActions) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_FailureActions) UnmarshalNDR

func (o *ConfigInfoW_FailureActions) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_PreferredNode) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_PreferredNode) UnmarshalNDR

func (o *ConfigInfoW_PreferredNode) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_Preshutdown) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_Preshutdown) UnmarshalNDR

func (o *ConfigInfoW_Preshutdown) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_SIDInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_SIDInfo) UnmarshalNDR

func (o *ConfigInfoW_SIDInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ConfigInfoW_TriggerInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ConfigInfoW_TriggerInfo) UnmarshalNDR

func (o *ConfigInfoW_TriggerInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ControlServiceExARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceExARequest) UnmarshalNDR

func (o *ControlServiceExARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ControlServiceExAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceExAResponse) UnmarshalNDR

func (o *ControlServiceExAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ControlServiceExWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceExWRequest) UnmarshalNDR

func (o *ControlServiceExWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ControlServiceExWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceExWResponse) UnmarshalNDR

func (o *ControlServiceExWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ControlServiceRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceRequest) UnmarshalNDR

func (o *ControlServiceRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *ControlServiceResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ControlServiceResponse) UnmarshalNDR

func (o *ControlServiceResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceARequest) UnmarshalNDR

func (o *CreateServiceARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceAResponse) UnmarshalNDR

func (o *CreateServiceAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceWOW64ARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceWOW64ARequest) UnmarshalNDR

func (o *CreateServiceWOW64ARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *CreateServiceWOW64AResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceWOW64WRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceWOW64WRequest) UnmarshalNDR

func (o *CreateServiceWOW64WRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *CreateServiceWOW64WResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceWRequest) UnmarshalNDR

func (o *CreateServiceWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateServiceWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateServiceWResponse) UnmarshalNDR

func (o *CreateServiceWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateWOWServiceRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateWOWServiceRequest) UnmarshalNDR

func (o *CreateWOWServiceRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *CreateWOWServiceResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*CreateWOWServiceResponse) UnmarshalNDR

func (o *CreateWOWServiceResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *DeleteServiceRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DeleteServiceRequest) UnmarshalNDR

func (o *DeleteServiceRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *DeleteServiceResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*DeleteServiceResponse) UnmarshalNDR

func (o *DeleteServiceResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumDependentServicesARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumDependentServicesWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EnumServiceGroupWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceGroupWRequest) UnmarshalNDR

func (o *EnumServiceGroupWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EnumServiceGroupWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceGroupWResponse) UnmarshalNDR

func (o *EnumServiceGroupWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EnumServiceStatusA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceStatusA) UnmarshalNDR

func (o *EnumServiceStatusA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *EnumServiceStatusProcessA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceStatusProcessA) UnmarshalNDR

func (o *EnumServiceStatusProcessA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *EnumServiceStatusProcessW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceStatusProcessW) UnmarshalNDR

func (o *EnumServiceStatusProcessW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *EnumServiceStatusW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServiceStatusW) UnmarshalNDR

func (o *EnumServiceStatusW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *EnumServicesStatusARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServicesStatusARequest) UnmarshalNDR

func (o *EnumServicesStatusARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusExARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusExAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusExWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusExWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *EnumServicesStatusWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*EnumServicesStatusWRequest) UnmarshalNDR

func (o *EnumServicesStatusWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *EnumServicesStatusWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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
)

func (EnumType) String

func (o EnumType) String() string

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 (o *GetNotifyResultsRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetNotifyResultsRequest) UnmarshalNDR

func (o *GetNotifyResultsRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetNotifyResultsResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetNotifyResultsResponse) UnmarshalNDR

func (o *GetNotifyResultsResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *GetServiceDisplayNameARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *GetServiceDisplayNameWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServiceKeyNameARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServiceKeyNameARequest) UnmarshalNDR

func (o *GetServiceKeyNameARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServiceKeyNameAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServiceKeyNameAResponse) UnmarshalNDR

func (o *GetServiceKeyNameAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServiceKeyNameWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServiceKeyNameWRequest) UnmarshalNDR

func (o *GetServiceKeyNameWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *GetServiceKeyNameWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*GetServiceKeyNameWResponse) UnmarshalNDR

func (o *GetServiceKeyNameWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type Handle

type Handle dcetypes.ContextHandle

Handle structure represents SC_RPC_HANDLE RPC structure.

func (*Handle) ContextHandle

func (o *Handle) ContextHandle() *dcetypes.ContextHandle

func (*Handle) MarshalNDR

func (o *Handle) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Handle) UnmarshalNDR

func (o *Handle) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

type Lock

Lock structure represents SC_RPC_LOCK RPC structure.

func (*Lock) ContextHandle

func (o *Lock) ContextHandle() *dcetypes.ContextHandle

func (*Lock) MarshalNDR

func (o *Lock) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Lock) UnmarshalNDR

func (o *Lock) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *LockServiceDatabaseRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*LockServiceDatabaseRequest) UnmarshalNDR

func (o *LockServiceDatabaseRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *LockServiceDatabaseResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

type Notify

type Notify dcetypes.ContextHandle

Notify structure represents SC_NOTIFY_RPC_HANDLE RPC structure.

func (*Notify) ContextHandle

func (o *Notify) ContextHandle() *dcetypes.ContextHandle

func (*Notify) MarshalNDR

func (o *Notify) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*Notify) UnmarshalNDR

func (o *Notify) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func (o *NotifyBootConfigStatusRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *NotifyParams) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*NotifyParams) UnmarshalNDR

func (o *NotifyParams) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *NotifyParamsList) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*NotifyParamsList) NDRSizeInfo

func (o *NotifyParamsList) NDRSizeInfo() []uint64

func (*NotifyParamsList) UnmarshalNDR

func (o *NotifyParamsList) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *NotifyParams_NotifyParams) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*NotifyParams_NotifyParams) NDRSwitchValue

func (o *NotifyParams_NotifyParams) NDRSwitchValue(sw uint32) uint32

func (*NotifyParams_NotifyParams) UnmarshalUnionNDR

func (o *NotifyParams_NotifyParams) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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 (o *OpenSCM2Request) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCM2Request) UnmarshalNDR

func (o *OpenSCM2Request) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenSCM2Response) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCM2Response) UnmarshalNDR

func (o *OpenSCM2Response) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenSCMARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCMARequest) UnmarshalNDR

func (o *OpenSCMARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenSCMAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCMAResponse) UnmarshalNDR

func (o *OpenSCMAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenSCMWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCMWRequest) UnmarshalNDR

func (o *OpenSCMWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenSCMWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenSCMWResponse) UnmarshalNDR

func (o *OpenSCMWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenServiceARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenServiceARequest) UnmarshalNDR

func (o *OpenServiceARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenServiceAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenServiceAResponse) UnmarshalNDR

func (o *OpenServiceAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenServiceWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenServiceWRequest) UnmarshalNDR

func (o *OpenServiceWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *OpenServiceWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*OpenServiceWResponse) UnmarshalNDR

func (o *OpenServiceWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfig2ARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfig2AResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfig2WRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfig2WResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueryServiceConfigA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceConfigA) UnmarshalNDR

func (o *QueryServiceConfigA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *QueryServiceConfigARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceConfigARequest) UnmarshalNDR

func (o *QueryServiceConfigARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfigAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfigExRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfigExResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueryServiceConfigW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceConfigW) UnmarshalNDR

func (o *QueryServiceConfigW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *QueryServiceConfigWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceConfigWRequest) UnmarshalNDR

func (o *QueryServiceConfigWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceConfigWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueryServiceLockStatusA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceLockStatusA) UnmarshalNDR

func (o *QueryServiceLockStatusA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *QueryServiceLockStatusW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceLockStatusW) UnmarshalNDR

func (o *QueryServiceLockStatusW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func (o *QueryServiceStatusExRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (o *QueryServiceStatusExResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueryServiceStatusRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceStatusRequest) UnmarshalNDR

func (o *QueryServiceStatusRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *QueryServiceStatusResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*QueryServiceStatusResponse) UnmarshalNDR

func (o *QueryServiceStatusResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *RequiredPrivilegesInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*RequiredPrivilegesInfo) UnmarshalNDR

func (o *RequiredPrivilegesInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceControlInParamsA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ServiceControlInParamsA) NDRSwitchValue

func (o *ServiceControlInParamsA) NDRSwitchValue(sw uint32) uint32

func (*ServiceControlInParamsA) UnmarshalUnionNDR

func (o *ServiceControlInParamsA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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 (o *ServiceControlInParamsW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ServiceControlInParamsW) NDRSwitchValue

func (o *ServiceControlInParamsW) NDRSwitchValue(sw uint32) uint32

func (*ServiceControlInParamsW) UnmarshalUnionNDR

func (o *ServiceControlInParamsW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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 (o *ServiceControlOutParamsA) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ServiceControlOutParamsA) NDRSwitchValue

func (o *ServiceControlOutParamsA) NDRSwitchValue(sw uint32) uint32

func (*ServiceControlOutParamsA) UnmarshalUnionNDR

func (o *ServiceControlOutParamsA) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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 (o *ServiceControlOutParamsW) MarshalUnionNDR(ctx context.Context, w ndr.Writer, sw uint32) error

func (*ServiceControlOutParamsW) NDRSwitchValue

func (o *ServiceControlOutParamsW) NDRSwitchValue(sw uint32) uint32

func (*ServiceControlOutParamsW) UnmarshalUnionNDR

func (o *ServiceControlOutParamsW) UnmarshalUnionNDR(ctx context.Context, w ndr.Reader, sw uint32) error

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

func (o *ServiceDelayedAutoStartInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceDescriptionA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceDescriptionA) UnmarshalNDR

func (o *ServiceDescriptionA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceDescriptionW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceDescriptionW) UnmarshalNDR

func (o *ServiceDescriptionW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceDescriptionWOW64) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceDescriptionWOW64) UnmarshalNDR

func (o *ServiceDescriptionWOW64) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceFailureActionsA) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceFailureActionsA) UnmarshalNDR

func (o *ServiceFailureActionsA) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceFailureActionsFlag) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceFailureActionsFlag) UnmarshalNDR

func (o *ServiceFailureActionsFlag) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceFailureActionsW) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceFailureActionsW) UnmarshalNDR

func (o *ServiceFailureActionsW) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceFailureActionsWOW64) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceFailureActionsWOW64) UnmarshalNDR

func (o *ServiceFailureActionsWOW64) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServicePreferredNodeInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServicePreferredNodeInfo) UnmarshalNDR

func (o *ServicePreferredNodeInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServicePreshutdownInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServicePreshutdownInfo) UnmarshalNDR

func (o *ServicePreshutdownInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceSIDInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceSIDInfo) UnmarshalNDR

func (o *ServiceSIDInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceStatus) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceStatus) UnmarshalNDR

func (o *ServiceStatus) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceStatusProcess) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceStatusProcess) UnmarshalNDR

func (o *ServiceStatusProcess) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceTrigger) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceTrigger) UnmarshalNDR

func (o *ServiceTrigger) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *ServiceTriggerInfo) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*ServiceTriggerInfo) UnmarshalNDR

func (o *ServiceTriggerInfo) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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 (o *SetServiceStatusRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SetServiceStatusRequest) UnmarshalNDR

func (o *SetServiceStatusRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *SetServiceStatusResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*SetServiceStatusResponse) UnmarshalNDR

func (o *SetServiceStatusResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *StartServiceARequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartServiceARequest) UnmarshalNDR

func (o *StartServiceARequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *StartServiceAResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartServiceAResponse) UnmarshalNDR

func (o *StartServiceAResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *StartServiceWRequest) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartServiceWRequest) UnmarshalNDR

func (o *StartServiceWRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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 (o *StartServiceWResponse) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*StartServiceWResponse) UnmarshalNDR

func (o *StartServiceWResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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.

func (*String) MarshalNDR

func (o *String) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*String) UnmarshalNDR

func (o *String) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func NewSvcctlClient(ctx context.Context, cc dcerpc.Conn, opts ...dcerpc.Option) (SvcctlClient, error)

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 (o *UnicodeString) MarshalNDR(ctx context.Context, w ndr.Writer) error

func (*UnicodeString) UnmarshalNDR

func (o *UnicodeString) UnmarshalNDR(ctx context.Context, w ndr.Reader) error

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

func (o *UnlockServiceDatabaseRequest) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

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

func (*UnlockServiceDatabaseResponse) MarshalNDR

func (*UnlockServiceDatabaseResponse) UnmarshalNDR

func (o *UnlockServiceDatabaseResponse) UnmarshalNDR(ctx context.Context, r ndr.Reader) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL