diff options
-rw-r--r-- | librpc/gen_ndr/ndr_svcctl.c | 72 | ||||
-rw-r--r-- | librpc/gen_ndr/ndr_svcctl.h | 2 | ||||
-rw-r--r-- | librpc/gen_ndr/svcctl.h | 37 |
3 files changed, 104 insertions, 7 deletions
diff --git a/librpc/gen_ndr/ndr_svcctl.c b/librpc/gen_ndr/ndr_svcctl.c index 54c49adef4..4cc85d49b9 100644 --- a/librpc/gen_ndr/ndr_svcctl.c +++ b/librpc/gen_ndr/ndr_svcctl.c @@ -71,13 +71,73 @@ _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *n ndr->depth--; } +static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r) +{ + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r) +{ + uint32_t v; + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); + *r = v; + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r) +{ + const char *val = NULL; + + switch (r) { + case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break; + case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break; + case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break; + case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break; + case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break; + case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break; + case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break; + case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break; + } + ndr_print_enum(ndr, name, "ENUM", val, r); +} + +static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r) +{ + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r) +{ + uint32_t v; + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); + *r = v; + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r) +{ + ndr_print_uint32(ndr, name, r); + ndr->depth++; + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NONE", SVCCTL_ACCEPT_NONE, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r); + ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r); + ndr->depth--; +} + static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->state)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->controls_accepted)); + NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state)); + NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted)); NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point)); @@ -93,8 +153,8 @@ static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_f if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->state)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->controls_accepted)); + NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state)); + NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted)); NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point)); @@ -110,8 +170,8 @@ _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, ndr_print_struct(ndr, name, "SERVICE_STATUS"); ndr->depth++; ndr_print_uint32(ndr, "type", r->type); - ndr_print_uint32(ndr, "state", r->state); - ndr_print_uint32(ndr, "controls_accepted", r->controls_accepted); + ndr_print_svcctl_ServiceStatus(ndr, "state", r->state); + ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted); ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code); ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code); ndr_print_uint32(ndr, "check_point", r->check_point); diff --git a/librpc/gen_ndr/ndr_svcctl.h b/librpc/gen_ndr/ndr_svcctl.h index 4b47161973..2d6f3ed7e8 100644 --- a/librpc/gen_ndr/ndr_svcctl.h +++ b/librpc/gen_ndr/ndr_svcctl.h @@ -101,6 +101,8 @@ extern const struct ndr_interface_table ndr_table_svcctl; #define NDR_SVCCTL_CALL_COUNT (44) void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r); +void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r); +void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r); void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r); enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r); enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r); diff --git a/librpc/gen_ndr/svcctl.h b/librpc/gen_ndr/svcctl.h index c36f578101..c3914e5671 100644 --- a/librpc/gen_ndr/svcctl.h +++ b/librpc/gen_ndr/svcctl.h @@ -33,9 +33,44 @@ struct SERVICE_LOCK_STATUS { uint32_t lock_duration; }; +enum svcctl_ServiceStatus +#ifndef USE_UINT_ENUMS + { + SVCCTL_STATE_UNKNOWN=0x00000000, + SVCCTL_STOPPED=0x00000001, + SVCCTL_START_PENDING=0x00000002, + SVCCTL_STOP_PENDING=0x00000003, + SVCCTL_RUNNING=0x00000004, + SVCCTL_CONTINUE_PENDING=0x00000005, + SVCCTL_PAUSE_PENDING=0x00000006, + SVCCTL_PAUSED=0x00000007 +} +#else + { __donnot_use_enum_svcctl_ServiceStatus=0x7FFFFFFF} +#define SVCCTL_STATE_UNKNOWN ( 0x00000000 ) +#define SVCCTL_STOPPED ( 0x00000001 ) +#define SVCCTL_START_PENDING ( 0x00000002 ) +#define SVCCTL_STOP_PENDING ( 0x00000003 ) +#define SVCCTL_RUNNING ( 0x00000004 ) +#define SVCCTL_CONTINUE_PENDING ( 0x00000005 ) +#define SVCCTL_PAUSE_PENDING ( 0x00000006 ) +#define SVCCTL_PAUSED ( 0x00000007 ) +#endif +; + +/* bitmap svcctl_ControlsAccepted */ +#define SVCCTL_ACCEPT_NONE ( 0x00000000 ) +#define SVCCTL_ACCEPT_STOP ( 0x00000001 ) +#define SVCCTL_ACCEPT_PAUSE_CONTINUE ( 0x00000002 ) +#define SVCCTL_ACCEPT_SHUTDOWN ( 0x00000004 ) +#define SVCCTL_ACCEPT_PARAMCHANGE ( 0x00000008 ) +#define SVCCTL_ACCEPT_NETBINDCHANGE ( 0x00000010 ) +#define SVCCTL_ACCEPT_HARDWAREPROFILECHANGE ( 0x00000020 ) +#define SVCCTL_ACCEPT_POWEREVENT ( 0x00000040 ) + struct SERVICE_STATUS { uint32_t type; - uint32_t state; + enum svcctl_ServiceStatus state; uint32_t controls_accepted; WERROR win32_exit_code; uint32_t service_exit_code; |