#include <stdint.h>
+#include "libcli/util/ntstatus.h"
+
#include "librpc/gen_ndr/misc.h"
#include "librpc/gen_ndr/security.h"
#ifndef _HEADER_svcctl
#define _HEADER_svcctl
+#define SVCCTL_ACCEPT_NONE ( 0x00000000 )
#define SERVICE_TYPE_KERNEL_DRIVER ( 0x01 )
#define SERVICE_TYPE_FS_DRIVER ( 0x02 )
#define SERVICE_TYPE_ADAPTER ( 0x04 )
#define SERVICE_TYPE_WIN32_OWN_PROCESS ( 0x10 )
#define SERVICE_TYPE_WIN32_SHARE_PROCESS ( 0x20 )
#define SERVICE_TYPE_WIN32 ( SERVICE_TYPE_WIN32_OWN_PROCESS|SERVICE_TYPE_WIN32_SHARE_PROCESS )
+#define SERVICE_TYPE_INTERACTIVE_PROCESS ( 0x100 )
#define SV_TYPE_ALL ( 0xFFFFFFFF )
#define SC_MANAGER_READ_ACCESS ( (SEC_STD_READ_CONTROL|SC_RIGHT_MGR_CONNECT|SC_RIGHT_MGR_ENUMERATE_SERVICE|SC_RIGHT_MGR_QUERY_LOCK_STATUS) )
#define SC_MANAGER_EXECUTE_ACCESS ( SC_MANAGER_READ_ACCESS )
;
/* bitmap svcctl_ControlsAccepted */
-#define SVCCTL_ACCEPT_NONE ( 0x00000000 )
#define SVCCTL_ACCEPT_STOP ( 0x00000001 )
#define SVCCTL_ACCEPT_PAUSE_CONTINUE ( 0x00000002 )
#define SVCCTL_ACCEPT_SHUTDOWN ( 0x00000004 )
struct {
struct policy_handle *service;/* [ref] */
uint32_t state;
- uint32_t buf_size;/* [range(0,0x40000)] */
+ uint32_t offered;/* [range(0,0x40000)] */
} in;
struct {
- uint8_t *service_status;/* [ref,size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref,range(0,0x40000)] */
+ uint8_t *service_status;/* [ref,size_is(offered)] */
+ uint32_t *needed;/* [ref,range(0,0x40000)] */
uint32_t *services_returned;/* [ref,range(0,0x40000)] */
WERROR result;
} out;
struct policy_handle *handle;/* [ref] */
uint32_t type;
enum svcctl_ServiceState state;
- uint32_t buf_size;/* [range(0,0x40000)] */
+ uint32_t offered;/* [range(0,0x40000)] */
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint8_t *service;/* [ref,size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref,range(0,0x40000)] */
+ uint8_t *service;/* [ref,size_is(offered)] */
+ uint32_t *needed;/* [ref,range(0,0x40000)] */
uint32_t *services_returned;/* [ref,range(0,0x40000)] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
struct svcctl_QueryServiceConfigW {
struct {
struct policy_handle *handle;/* [ref] */
- uint32_t buf_size;/* [range(0,8192)] */
+ uint32_t offered;/* [range(0,8192)] */
} in;
struct {
struct QUERY_SERVICE_CONFIG *query;/* [ref] */
- uint32_t *bytes_needed;/* [ref,range(0,8192)] */
+ uint32_t *needed;/* [ref,range(0,8192)] */
WERROR result;
} out;
struct svcctl_QueryServiceLockStatusW {
struct {
struct policy_handle *handle;/* [ref] */
- uint32_t buf_size;
+ uint32_t offered;
} in;
struct {
struct SERVICE_LOCK_STATUS *lock_status;/* [ref] */
- uint32_t *required_buf_size;/* [ref] */
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
struct {
struct policy_handle *service;/* [ref] */
uint32_t state;
- uint32_t buf_size;
+ uint32_t offered;
} in;
struct {
struct ENUM_SERVICE_STATUSA *service_status;/* [unique] */
- uint32_t *bytes_needed;/* [ref] */
+ uint32_t *needed;/* [ref] */
uint32_t *services_returned;/* [ref] */
WERROR result;
} out;
struct policy_handle *handle;/* [ref] */
uint32_t type;
enum svcctl_ServiceState state;
- uint32_t buf_size;
+ uint32_t offered;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
- uint8_t *service;/* [size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref] */
+ uint8_t *service;/* [size_is(offered)] */
+ uint32_t *needed;/* [ref] */
uint32_t *services_returned;/* [ref] */
uint32_t *resume_handle;/* [unique] */
WERROR result;
struct svcctl_QueryServiceConfigA {
struct {
struct policy_handle *handle;/* [ref] */
- uint32_t buf_size;
+ uint32_t offered;
} in;
struct {
uint8_t *query;
- uint32_t *bytes_needed;/* [ref] */
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
struct svcctl_QueryServiceLockStatusA {
struct {
struct policy_handle *handle;/* [ref] */
- uint32_t buf_size;
+ uint32_t offered;
} in;
struct {
struct SERVICE_LOCK_STATUS *lock_status;/* [ref] */
- uint32_t *required_buf_size;/* [ref] */
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
struct {
struct policy_handle *handle;/* [ref] */
enum svcctl_ConfigLevel info_level;
- uint32_t buf_size;
+ uint32_t offered;
} in;
struct {
uint8_t *buffer;
- uint32_t *bytes_needed;/* [ref] */
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
struct {
struct policy_handle *handle;/* [ref] */
enum svcctl_ConfigLevel info_level;
- uint32_t buf_size;/* [range(0,8192)] */
+ uint32_t offered;/* [range(0,8192)] */
} in;
struct {
- uint8_t *buffer;/* [ref,size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref,range(0,8192)] */
+ uint8_t *buffer;/* [ref,size_is(offered)] */
+ uint32_t *needed;/* [ref,range(0,8192)] */
WERROR result;
} out;
struct {
struct policy_handle *handle;/* [ref] */
enum svcctl_StatusLevel info_level;
- uint32_t buf_size;/* [range(0,8192)] */
+ uint32_t offered;/* [range(0,8192)] */
} in;
struct {
- uint8_t *buffer;/* [ref,size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref,range(0,8192)] */
+ uint8_t *buffer;/* [ref,size_is(offered)] */
+ uint32_t *needed;/* [ref,range(0,8192)] */
WERROR result;
} out;
uint32_t info_level;
uint32_t type;
enum svcctl_ServiceState state;
- uint32_t buf_size;
+ uint32_t offered;
uint32_t *resume_handle;/* [unique] */
} in;
struct {
uint8_t *services;
- uint32_t *bytes_needed;/* [ref] */
+ uint32_t *needed;/* [ref] */
uint32_t *service_returned;/* [ref] */
const char **group_name;/* [ref,charset(UTF16)] */
uint32_t *resume_handle;/* [unique] */
uint32_t info_level;
uint32_t type;
enum svcctl_ServiceState state;
- uint32_t buf_size;/* [range(0,0x40000)] */
+ uint32_t offered;/* [range(0,0x40000)] */
const char *group_name;/* [unique,charset(UTF16)] */
uint32_t *resume_handle;/* [unique,range(0,0x40000)] */
} in;
struct {
- uint8_t *services;/* [ref,size_is(buf_size)] */
- uint32_t *bytes_needed;/* [ref,range(0,0x40000)] */
+ uint8_t *services;/* [ref,size_is(offered)] */
+ uint32_t *needed;/* [ref,range(0,0x40000)] */
uint32_t *service_returned;/* [ref,range(0,0x40000)] */
uint32_t *resume_handle;/* [unique,range(0,0x40000)] */
WERROR result;