root/librpc/gen_ndr/ndr_svcctl.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ndr_push_SERVICE_LOCK_STATUS
  2. ndr_pull_SERVICE_LOCK_STATUS
  3. ndr_print_SERVICE_LOCK_STATUS
  4. ndr_push_svcctl_ServiceStatus
  5. ndr_pull_svcctl_ServiceStatus
  6. ndr_print_svcctl_ServiceStatus
  7. ndr_push_svcctl_ControlsAccepted
  8. ndr_pull_svcctl_ControlsAccepted
  9. ndr_print_svcctl_ControlsAccepted
  10. ndr_push_SERVICE_STATUS
  11. ndr_pull_SERVICE_STATUS
  12. ndr_print_SERVICE_STATUS
  13. ndr_push_SERVICE_STATUS_PROCESS
  14. ndr_pull_SERVICE_STATUS_PROCESS
  15. ndr_print_SERVICE_STATUS_PROCESS
  16. ndr_push_ENUM_SERVICE_STATUSW
  17. ndr_pull_ENUM_SERVICE_STATUSW
  18. ndr_print_ENUM_SERVICE_STATUSW
  19. ndr_size_ENUM_SERVICE_STATUSW
  20. ndr_push_ENUM_SERVICE_STATUSA
  21. ndr_pull_ENUM_SERVICE_STATUSA
  22. ndr_print_ENUM_SERVICE_STATUSA
  23. ndr_size_ENUM_SERVICE_STATUSA
  24. ndr_push_svcctl_ServerType
  25. ndr_pull_svcctl_ServerType
  26. ndr_print_svcctl_ServerType
  27. ndr_push_SERVICE_CONTROL
  28. ndr_pull_SERVICE_CONTROL
  29. ndr_print_SERVICE_CONTROL
  30. ndr_push_svcctl_ErrorControl
  31. ndr_pull_svcctl_ErrorControl
  32. ndr_print_svcctl_ErrorControl
  33. ndr_push_svcctl_StartType
  34. ndr_pull_svcctl_StartType
  35. ndr_print_svcctl_StartType
  36. ndr_push_svcctl_ServiceState
  37. ndr_pull_svcctl_ServiceState
  38. ndr_print_svcctl_ServiceState
  39. ndr_push_svcctl_MgrAccessMask
  40. ndr_pull_svcctl_MgrAccessMask
  41. ndr_print_svcctl_MgrAccessMask
  42. ndr_push_svcctl_ServiceAccessMask
  43. ndr_pull_svcctl_ServiceAccessMask
  44. ndr_print_svcctl_ServiceAccessMask
  45. ndr_push_QUERY_SERVICE_CONFIG
  46. ndr_pull_QUERY_SERVICE_CONFIG
  47. ndr_print_QUERY_SERVICE_CONFIG
  48. ndr_size_QUERY_SERVICE_CONFIG
  49. ndr_push_svcctl_ArgumentString
  50. ndr_pull_svcctl_ArgumentString
  51. ndr_print_svcctl_ArgumentString
  52. ndr_push_svcctl_ConfigLevel
  53. ndr_pull_svcctl_ConfigLevel
  54. ndr_print_svcctl_ConfigLevel
  55. ndr_push_SERVICE_DESCRIPTION
  56. ndr_pull_SERVICE_DESCRIPTION
  57. ndr_print_SERVICE_DESCRIPTION
  58. ndr_size_SERVICE_DESCRIPTION
  59. ndr_push_SC_ACTION_TYPE
  60. ndr_pull_SC_ACTION_TYPE
  61. ndr_print_SC_ACTION_TYPE
  62. ndr_push_SC_ACTION
  63. ndr_pull_SC_ACTION
  64. ndr_print_SC_ACTION
  65. ndr_push_SERVICE_FAILURE_ACTIONS
  66. ndr_pull_SERVICE_FAILURE_ACTIONS
  67. ndr_print_SERVICE_FAILURE_ACTIONS
  68. ndr_size_SERVICE_FAILURE_ACTIONS
  69. ndr_push_svcctl_StatusLevel
  70. ndr_pull_svcctl_StatusLevel
  71. ndr_print_svcctl_StatusLevel
  72. ndr_push_svcctl_CloseServiceHandle
  73. ndr_pull_svcctl_CloseServiceHandle
  74. ndr_print_svcctl_CloseServiceHandle
  75. ndr_push_svcctl_ControlService
  76. ndr_pull_svcctl_ControlService
  77. ndr_print_svcctl_ControlService
  78. ndr_push_svcctl_DeleteService
  79. ndr_pull_svcctl_DeleteService
  80. ndr_print_svcctl_DeleteService
  81. ndr_push_svcctl_LockServiceDatabase
  82. ndr_pull_svcctl_LockServiceDatabase
  83. ndr_print_svcctl_LockServiceDatabase
  84. ndr_push_svcctl_QueryServiceObjectSecurity
  85. ndr_pull_svcctl_QueryServiceObjectSecurity
  86. ndr_print_svcctl_QueryServiceObjectSecurity
  87. ndr_push_svcctl_SetServiceObjectSecurity
  88. ndr_pull_svcctl_SetServiceObjectSecurity
  89. ndr_print_svcctl_SetServiceObjectSecurity
  90. ndr_push_svcctl_QueryServiceStatus
  91. ndr_pull_svcctl_QueryServiceStatus
  92. ndr_print_svcctl_QueryServiceStatus
  93. ndr_push_svcctl_SetServiceStatus
  94. ndr_pull_svcctl_SetServiceStatus
  95. ndr_print_svcctl_SetServiceStatus
  96. ndr_push_svcctl_UnlockServiceDatabase
  97. ndr_pull_svcctl_UnlockServiceDatabase
  98. ndr_print_svcctl_UnlockServiceDatabase
  99. ndr_push_svcctl_NotifyBootConfigStatus
  100. ndr_pull_svcctl_NotifyBootConfigStatus
  101. ndr_print_svcctl_NotifyBootConfigStatus
  102. ndr_push_svcctl_SCSetServiceBitsW
  103. ndr_pull_svcctl_SCSetServiceBitsW
  104. ndr_print_svcctl_SCSetServiceBitsW
  105. ndr_push_svcctl_ChangeServiceConfigW
  106. ndr_pull_svcctl_ChangeServiceConfigW
  107. ndr_print_svcctl_ChangeServiceConfigW
  108. ndr_push_svcctl_CreateServiceW
  109. ndr_pull_svcctl_CreateServiceW
  110. ndr_print_svcctl_CreateServiceW
  111. ndr_push_svcctl_EnumDependentServicesW
  112. ndr_pull_svcctl_EnumDependentServicesW
  113. ndr_print_svcctl_EnumDependentServicesW
  114. ndr_push_svcctl_EnumServicesStatusW
  115. ndr_pull_svcctl_EnumServicesStatusW
  116. ndr_print_svcctl_EnumServicesStatusW
  117. ndr_push_svcctl_OpenSCManagerW
  118. ndr_pull_svcctl_OpenSCManagerW
  119. ndr_print_svcctl_OpenSCManagerW
  120. ndr_push_svcctl_OpenServiceW
  121. ndr_pull_svcctl_OpenServiceW
  122. ndr_print_svcctl_OpenServiceW
  123. ndr_push_svcctl_QueryServiceConfigW
  124. ndr_pull_svcctl_QueryServiceConfigW
  125. ndr_print_svcctl_QueryServiceConfigW
  126. ndr_push_svcctl_QueryServiceLockStatusW
  127. ndr_pull_svcctl_QueryServiceLockStatusW
  128. ndr_print_svcctl_QueryServiceLockStatusW
  129. ndr_push_svcctl_StartServiceW
  130. ndr_pull_svcctl_StartServiceW
  131. ndr_print_svcctl_StartServiceW
  132. ndr_push_svcctl_GetServiceDisplayNameW
  133. ndr_pull_svcctl_GetServiceDisplayNameW
  134. ndr_print_svcctl_GetServiceDisplayNameW
  135. ndr_push_svcctl_GetServiceKeyNameW
  136. ndr_pull_svcctl_GetServiceKeyNameW
  137. ndr_print_svcctl_GetServiceKeyNameW
  138. ndr_push_svcctl_SCSetServiceBitsA
  139. ndr_pull_svcctl_SCSetServiceBitsA
  140. ndr_print_svcctl_SCSetServiceBitsA
  141. ndr_push_svcctl_ChangeServiceConfigA
  142. ndr_pull_svcctl_ChangeServiceConfigA
  143. ndr_print_svcctl_ChangeServiceConfigA
  144. ndr_push_svcctl_CreateServiceA
  145. ndr_pull_svcctl_CreateServiceA
  146. ndr_print_svcctl_CreateServiceA
  147. ndr_push_svcctl_EnumDependentServicesA
  148. ndr_pull_svcctl_EnumDependentServicesA
  149. ndr_print_svcctl_EnumDependentServicesA
  150. ndr_push_svcctl_EnumServicesStatusA
  151. ndr_pull_svcctl_EnumServicesStatusA
  152. ndr_print_svcctl_EnumServicesStatusA
  153. ndr_push_svcctl_OpenSCManagerA
  154. ndr_pull_svcctl_OpenSCManagerA
  155. ndr_print_svcctl_OpenSCManagerA
  156. ndr_push_svcctl_OpenServiceA
  157. ndr_pull_svcctl_OpenServiceA
  158. ndr_print_svcctl_OpenServiceA
  159. ndr_push_svcctl_QueryServiceConfigA
  160. ndr_pull_svcctl_QueryServiceConfigA
  161. ndr_print_svcctl_QueryServiceConfigA
  162. ndr_push_svcctl_QueryServiceLockStatusA
  163. ndr_pull_svcctl_QueryServiceLockStatusA
  164. ndr_print_svcctl_QueryServiceLockStatusA
  165. ndr_push_svcctl_StartServiceA
  166. ndr_pull_svcctl_StartServiceA
  167. ndr_print_svcctl_StartServiceA
  168. ndr_push_svcctl_GetServiceDisplayNameA
  169. ndr_pull_svcctl_GetServiceDisplayNameA
  170. ndr_print_svcctl_GetServiceDisplayNameA
  171. ndr_push_svcctl_GetServiceKeyNameA
  172. ndr_pull_svcctl_GetServiceKeyNameA
  173. ndr_print_svcctl_GetServiceKeyNameA
  174. ndr_push_svcctl_GetCurrentGroupeStateW
  175. ndr_pull_svcctl_GetCurrentGroupeStateW
  176. ndr_print_svcctl_GetCurrentGroupeStateW
  177. ndr_push_svcctl_EnumServiceGroupW
  178. ndr_pull_svcctl_EnumServiceGroupW
  179. ndr_print_svcctl_EnumServiceGroupW
  180. ndr_push_svcctl_ChangeServiceConfig2A
  181. ndr_pull_svcctl_ChangeServiceConfig2A
  182. ndr_print_svcctl_ChangeServiceConfig2A
  183. ndr_push_svcctl_ChangeServiceConfig2W
  184. ndr_pull_svcctl_ChangeServiceConfig2W
  185. ndr_print_svcctl_ChangeServiceConfig2W
  186. ndr_push_svcctl_QueryServiceConfig2A
  187. ndr_pull_svcctl_QueryServiceConfig2A
  188. ndr_print_svcctl_QueryServiceConfig2A
  189. ndr_push_svcctl_QueryServiceConfig2W
  190. ndr_pull_svcctl_QueryServiceConfig2W
  191. ndr_print_svcctl_QueryServiceConfig2W
  192. ndr_push_svcctl_QueryServiceStatusEx
  193. ndr_pull_svcctl_QueryServiceStatusEx
  194. ndr_print_svcctl_QueryServiceStatusEx
  195. ndr_push_EnumServicesStatusExA
  196. ndr_pull_EnumServicesStatusExA
  197. ndr_print_EnumServicesStatusExA
  198. ndr_push_EnumServicesStatusExW
  199. ndr_pull_EnumServicesStatusExW
  200. ndr_print_EnumServicesStatusExW
  201. ndr_push_svcctl_SCSendTSMessage
  202. ndr_pull_svcctl_SCSendTSMessage
  203. ndr_print_svcctl_SCSendTSMessage

   1 /* parser auto-generated by pidl */
   2 
   3 #include "includes.h"
   4 #include "../librpc/gen_ndr/ndr_svcctl.h"
   5 
   6 #include "librpc/gen_ndr/ndr_misc.h"
   7 #include "librpc/gen_ndr/ndr_security.h"
   8 static enum ndr_err_code ndr_push_SERVICE_LOCK_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_LOCK_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
   9 {
  10         if (ndr_flags & NDR_SCALARS) {
  11                 NDR_CHECK(ndr_push_align(ndr, 4));
  12                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->is_locked));
  13                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lock_owner));
  14                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lock_duration));
  15         }
  16         if (ndr_flags & NDR_BUFFERS) {
  17                 if (r->lock_owner) {
  18                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
  19                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
  20                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->lock_owner, CH_UTF16)));
  21                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->lock_owner, ndr_charset_length(r->lock_owner, CH_UTF16), sizeof(uint16_t), CH_UTF16));
  22                 }
  23         }
  24         return NDR_ERR_SUCCESS;
  25 }
  26 
  27 static enum ndr_err_code ndr_pull_SERVICE_LOCK_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_LOCK_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
  28 {
  29         uint32_t _ptr_lock_owner;
  30         TALLOC_CTX *_mem_save_lock_owner_0;
  31         if (ndr_flags & NDR_SCALARS) {
  32                 NDR_CHECK(ndr_pull_align(ndr, 4));
  33                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->is_locked));
  34                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lock_owner));
  35                 if (_ptr_lock_owner) {
  36                         NDR_PULL_ALLOC(ndr, r->lock_owner);
  37                 } else {
  38                         r->lock_owner = NULL;
  39                 }
  40                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lock_duration));
  41         }
  42         if (ndr_flags & NDR_BUFFERS) {
  43                 if (r->lock_owner) {
  44                         _mem_save_lock_owner_0 = NDR_PULL_GET_MEM_CTX(ndr);
  45                         NDR_PULL_SET_MEM_CTX(ndr, r->lock_owner, 0);
  46                         NDR_CHECK(ndr_pull_array_size(ndr, &r->lock_owner));
  47                         NDR_CHECK(ndr_pull_array_length(ndr, &r->lock_owner));
  48                         if (ndr_get_array_length(ndr, &r->lock_owner) > ndr_get_array_size(ndr, &r->lock_owner)) {
  49                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->lock_owner), ndr_get_array_length(ndr, &r->lock_owner));
  50                         }
  51                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t)));
  52                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->lock_owner, ndr_get_array_length(ndr, &r->lock_owner), sizeof(uint16_t), CH_UTF16));
  53                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_owner_0, 0);
  54                 }
  55         }
  56         return NDR_ERR_SUCCESS;
  57 }
  58 
  59 _PUBLIC_ void ndr_print_SERVICE_LOCK_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_LOCK_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
  60 {
  61         ndr_print_struct(ndr, name, "SERVICE_LOCK_STATUS");
  62         ndr->depth++;
  63         ndr_print_uint32(ndr, "is_locked", r->is_locked);
  64         ndr_print_ptr(ndr, "lock_owner", r->lock_owner);
  65         ndr->depth++;
  66         if (r->lock_owner) {
  67                 ndr_print_string(ndr, "lock_owner", r->lock_owner);
  68         }
  69         ndr->depth--;
  70         ndr_print_uint32(ndr, "lock_duration", r->lock_duration);
  71         ndr->depth--;
  72 }
  73 
  74 static enum ndr_err_code ndr_push_svcctl_ServiceStatus(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceStatus r)
     /* [<][>][^][v][top][bottom][index][help] */
  75 {
  76         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
  77         return NDR_ERR_SUCCESS;
  78 }
  79 
  80 static enum ndr_err_code ndr_pull_svcctl_ServiceStatus(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
  81 {
  82         uint32_t v;
  83         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
  84         *r = v;
  85         return NDR_ERR_SUCCESS;
  86 }
  87 
  88 _PUBLIC_ void ndr_print_svcctl_ServiceStatus(struct ndr_print *ndr, const char *name, enum svcctl_ServiceStatus r)
     /* [<][>][^][v][top][bottom][index][help] */
  89 {
  90         const char *val = NULL;
  91 
  92         switch (r) {
  93                 case SVCCTL_STATE_UNKNOWN: val = "SVCCTL_STATE_UNKNOWN"; break;
  94                 case SVCCTL_STOPPED: val = "SVCCTL_STOPPED"; break;
  95                 case SVCCTL_START_PENDING: val = "SVCCTL_START_PENDING"; break;
  96                 case SVCCTL_STOP_PENDING: val = "SVCCTL_STOP_PENDING"; break;
  97                 case SVCCTL_RUNNING: val = "SVCCTL_RUNNING"; break;
  98                 case SVCCTL_CONTINUE_PENDING: val = "SVCCTL_CONTINUE_PENDING"; break;
  99                 case SVCCTL_PAUSE_PENDING: val = "SVCCTL_PAUSE_PENDING"; break;
 100                 case SVCCTL_PAUSED: val = "SVCCTL_PAUSED"; break;
 101         }
 102         ndr_print_enum(ndr, name, "ENUM", val, r);
 103 }
 104 
 105 static enum ndr_err_code ndr_push_svcctl_ControlsAccepted(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 106 {
 107         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 108         return NDR_ERR_SUCCESS;
 109 }
 110 
 111 static enum ndr_err_code ndr_pull_svcctl_ControlsAccepted(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
 112 {
 113         uint32_t v;
 114         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 115         *r = v;
 116         return NDR_ERR_SUCCESS;
 117 }
 118 
 119 _PUBLIC_ void ndr_print_svcctl_ControlsAccepted(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 120 {
 121         ndr_print_uint32(ndr, name, r);
 122         ndr->depth++;
 123         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_STOP", SVCCTL_ACCEPT_STOP, r);
 124         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PAUSE_CONTINUE", SVCCTL_ACCEPT_PAUSE_CONTINUE, r);
 125         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_SHUTDOWN", SVCCTL_ACCEPT_SHUTDOWN, r);
 126         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_PARAMCHANGE", SVCCTL_ACCEPT_PARAMCHANGE, r);
 127         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_NETBINDCHANGE", SVCCTL_ACCEPT_NETBINDCHANGE, r);
 128         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_HARDWAREPROFILECHANGE", SVCCTL_ACCEPT_HARDWAREPROFILECHANGE, r);
 129         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SVCCTL_ACCEPT_POWEREVENT", SVCCTL_ACCEPT_POWEREVENT, r);
 130         ndr->depth--;
 131 }
 132 
 133 static enum ndr_err_code ndr_push_SERVICE_STATUS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 134 {
 135         if (ndr_flags & NDR_SCALARS) {
 136                 NDR_CHECK(ndr_push_align(ndr, 4));
 137                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->type));
 138                 NDR_CHECK(ndr_push_svcctl_ServiceStatus(ndr, NDR_SCALARS, r->state));
 139                 NDR_CHECK(ndr_push_svcctl_ControlsAccepted(ndr, NDR_SCALARS, r->controls_accepted));
 140                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->win32_exit_code));
 141                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_exit_code));
 142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->check_point));
 143                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->wait_hint));
 144         }
 145         if (ndr_flags & NDR_BUFFERS) {
 146         }
 147         return NDR_ERR_SUCCESS;
 148 }
 149 
 150 static enum ndr_err_code ndr_pull_SERVICE_STATUS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 151 {
 152         if (ndr_flags & NDR_SCALARS) {
 153                 NDR_CHECK(ndr_pull_align(ndr, 4));
 154                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type));
 155                 NDR_CHECK(ndr_pull_svcctl_ServiceStatus(ndr, NDR_SCALARS, &r->state));
 156                 NDR_CHECK(ndr_pull_svcctl_ControlsAccepted(ndr, NDR_SCALARS, &r->controls_accepted));
 157                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->win32_exit_code));
 158                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_exit_code));
 159                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->check_point));
 160                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->wait_hint));
 161         }
 162         if (ndr_flags & NDR_BUFFERS) {
 163         }
 164         return NDR_ERR_SUCCESS;
 165 }
 166 
 167 _PUBLIC_ void ndr_print_SERVICE_STATUS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 168 {
 169         ndr_print_struct(ndr, name, "SERVICE_STATUS");
 170         ndr->depth++;
 171         ndr_print_uint32(ndr, "type", r->type);
 172         ndr_print_svcctl_ServiceStatus(ndr, "state", r->state);
 173         ndr_print_svcctl_ControlsAccepted(ndr, "controls_accepted", r->controls_accepted);
 174         ndr_print_WERROR(ndr, "win32_exit_code", r->win32_exit_code);
 175         ndr_print_uint32(ndr, "service_exit_code", r->service_exit_code);
 176         ndr_print_uint32(ndr, "check_point", r->check_point);
 177         ndr_print_uint32(ndr, "wait_hint", r->wait_hint);
 178         ndr->depth--;
 179 }
 180 
 181 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_STATUS_PROCESS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_STATUS_PROCESS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 182 {
 183         if (ndr_flags & NDR_SCALARS) {
 184                 NDR_CHECK(ndr_push_align(ndr, 4));
 185                 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 186                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->process_id));
 187                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_flags));
 188         }
 189         if (ndr_flags & NDR_BUFFERS) {
 190         }
 191         return NDR_ERR_SUCCESS;
 192 }
 193 
 194 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_STATUS_PROCESS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_STATUS_PROCESS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 195 {
 196         if (ndr_flags & NDR_SCALARS) {
 197                 NDR_CHECK(ndr_pull_align(ndr, 4));
 198                 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 199                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->process_id));
 200                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_flags));
 201         }
 202         if (ndr_flags & NDR_BUFFERS) {
 203         }
 204         return NDR_ERR_SUCCESS;
 205 }
 206 
 207 _PUBLIC_ void ndr_print_SERVICE_STATUS_PROCESS(struct ndr_print *ndr, const char *name, const struct SERVICE_STATUS_PROCESS *r)
     /* [<][>][^][v][top][bottom][index][help] */
 208 {
 209         ndr_print_struct(ndr, name, "SERVICE_STATUS_PROCESS");
 210         ndr->depth++;
 211         ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
 212         ndr_print_uint32(ndr, "process_id", r->process_id);
 213         ndr_print_uint32(ndr, "service_flags", r->service_flags);
 214         ndr->depth--;
 215 }
 216 
 217 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSW(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSW *r)
     /* [<][>][^][v][top][bottom][index][help] */
 218 {
 219         if (ndr_flags & NDR_SCALARS) {
 220                 NDR_CHECK(ndr_push_align(ndr, 4));
 221                 {
 222                         uint32_t _flags_save_string = ndr->flags;
 223                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 224                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
 225                         ndr->flags = _flags_save_string;
 226                 }
 227                 {
 228                         uint32_t _flags_save_string = ndr->flags;
 229                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 230                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
 231                         ndr->flags = _flags_save_string;
 232                 }
 233                 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 234         }
 235         if (ndr_flags & NDR_BUFFERS) {
 236                 {
 237                         uint32_t _flags_save_string = ndr->flags;
 238                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 239                         if (r->service_name) {
 240                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
 241                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
 242                         }
 243                         ndr->flags = _flags_save_string;
 244                 }
 245                 {
 246                         uint32_t _flags_save_string = ndr->flags;
 247                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 248                         if (r->display_name) {
 249                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
 250                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
 251                         }
 252                         ndr->flags = _flags_save_string;
 253                 }
 254         }
 255         return NDR_ERR_SUCCESS;
 256 }
 257 
 258 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSW(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSW *r)
     /* [<][>][^][v][top][bottom][index][help] */
 259 {
 260         uint32_t _ptr_service_name;
 261         TALLOC_CTX *_mem_save_service_name_0;
 262         uint32_t _ptr_display_name;
 263         TALLOC_CTX *_mem_save_display_name_0;
 264         if (ndr_flags & NDR_SCALARS) {
 265                 NDR_CHECK(ndr_pull_align(ndr, 4));
 266                 {
 267                         uint32_t _flags_save_string = ndr->flags;
 268                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 269                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
 270                         if (_ptr_service_name) {
 271                                 NDR_PULL_ALLOC(ndr, r->service_name);
 272                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
 273                         } else {
 274                                 r->service_name = NULL;
 275                         }
 276                         ndr->flags = _flags_save_string;
 277                 }
 278                 {
 279                         uint32_t _flags_save_string = ndr->flags;
 280                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 281                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
 282                         if (_ptr_display_name) {
 283                                 NDR_PULL_ALLOC(ndr, r->display_name);
 284                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
 285                         } else {
 286                                 r->display_name = NULL;
 287                         }
 288                         ndr->flags = _flags_save_string;
 289                 }
 290                 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 291         }
 292         if (ndr_flags & NDR_BUFFERS) {
 293                 {
 294                         uint32_t _flags_save_string = ndr->flags;
 295                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 296                         if (r->service_name) {
 297                                 uint32_t _relative_save_offset;
 298                                 _relative_save_offset = ndr->offset;
 299                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
 300                                 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 301                                 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
 302                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
 303                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
 304                                 ndr->offset = _relative_save_offset;
 305                         }
 306                         ndr->flags = _flags_save_string;
 307                 }
 308                 {
 309                         uint32_t _flags_save_string = ndr->flags;
 310                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
 311                         if (r->display_name) {
 312                                 uint32_t _relative_save_offset;
 313                                 _relative_save_offset = ndr->offset;
 314                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
 315                                 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 316                                 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
 317                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 318                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 319                                 ndr->offset = _relative_save_offset;
 320                         }
 321                         ndr->flags = _flags_save_string;
 322                 }
 323         }
 324         return NDR_ERR_SUCCESS;
 325 }
 326 
 327 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSW(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSW *r)
     /* [<][>][^][v][top][bottom][index][help] */
 328 {
 329         ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSW");
 330         ndr->depth++;
 331         ndr_print_ptr(ndr, "service_name", r->service_name);
 332         ndr->depth++;
 333         if (r->service_name) {
 334                 ndr_print_string(ndr, "service_name", r->service_name);
 335         }
 336         ndr->depth--;
 337         ndr_print_ptr(ndr, "display_name", r->display_name);
 338         ndr->depth++;
 339         if (r->display_name) {
 340                 ndr_print_string(ndr, "display_name", r->display_name);
 341         }
 342         ndr->depth--;
 343         ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
 344         ndr->depth--;
 345 }
 346 
 347 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSW(const struct ENUM_SERVICE_STATUSW *r, struct smb_iconv_convenience *ic, int flags)
     /* [<][>][^][v][top][bottom][index][help] */
 348 {
 349         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSW, ic);
 350 }
 351 
 352 _PUBLIC_ enum ndr_err_code ndr_push_ENUM_SERVICE_STATUSA(struct ndr_push *ndr, int ndr_flags, const struct ENUM_SERVICE_STATUSA *r)
     /* [<][>][^][v][top][bottom][index][help] */
 353 {
 354         if (ndr_flags & NDR_SCALARS) {
 355                 NDR_CHECK(ndr_push_align(ndr, 4));
 356                 {
 357                         uint32_t _flags_save_string = ndr->flags;
 358                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 359                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->service_name));
 360                         ndr->flags = _flags_save_string;
 361                 }
 362                 {
 363                         uint32_t _flags_save_string = ndr->flags;
 364                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 365                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->display_name));
 366                         ndr->flags = _flags_save_string;
 367                 }
 368                 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 369         }
 370         if (ndr_flags & NDR_BUFFERS) {
 371                 {
 372                         uint32_t _flags_save_string = ndr->flags;
 373                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 374                         if (r->service_name) {
 375                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->service_name));
 376                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->service_name));
 377                         }
 378                         ndr->flags = _flags_save_string;
 379                 }
 380                 {
 381                         uint32_t _flags_save_string = ndr->flags;
 382                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 383                         if (r->display_name) {
 384                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->display_name));
 385                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->display_name));
 386                         }
 387                         ndr->flags = _flags_save_string;
 388                 }
 389         }
 390         return NDR_ERR_SUCCESS;
 391 }
 392 
 393 _PUBLIC_ enum ndr_err_code ndr_pull_ENUM_SERVICE_STATUSA(struct ndr_pull *ndr, int ndr_flags, struct ENUM_SERVICE_STATUSA *r)
     /* [<][>][^][v][top][bottom][index][help] */
 394 {
 395         uint32_t _ptr_service_name;
 396         TALLOC_CTX *_mem_save_service_name_0;
 397         uint32_t _ptr_display_name;
 398         TALLOC_CTX *_mem_save_display_name_0;
 399         if (ndr_flags & NDR_SCALARS) {
 400                 NDR_CHECK(ndr_pull_align(ndr, 4));
 401                 {
 402                         uint32_t _flags_save_string = ndr->flags;
 403                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 404                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
 405                         if (_ptr_service_name) {
 406                                 NDR_PULL_ALLOC(ndr, r->service_name);
 407                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->service_name, _ptr_service_name));
 408                         } else {
 409                                 r->service_name = NULL;
 410                         }
 411                         ndr->flags = _flags_save_string;
 412                 }
 413                 {
 414                         uint32_t _flags_save_string = ndr->flags;
 415                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 416                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
 417                         if (_ptr_display_name) {
 418                                 NDR_PULL_ALLOC(ndr, r->display_name);
 419                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->display_name, _ptr_display_name));
 420                         } else {
 421                                 r->display_name = NULL;
 422                         }
 423                         ndr->flags = _flags_save_string;
 424                 }
 425                 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, &r->status));
 426         }
 427         if (ndr_flags & NDR_BUFFERS) {
 428                 {
 429                         uint32_t _flags_save_string = ndr->flags;
 430                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 431                         if (r->service_name) {
 432                                 uint32_t _relative_save_offset;
 433                                 _relative_save_offset = ndr->offset;
 434                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->service_name));
 435                                 _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 436                                 NDR_PULL_SET_MEM_CTX(ndr, r->service_name, 0);
 437                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->service_name));
 438                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
 439                                 ndr->offset = _relative_save_offset;
 440                         }
 441                         ndr->flags = _flags_save_string;
 442                 }
 443                 {
 444                         uint32_t _flags_save_string = ndr->flags;
 445                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
 446                         if (r->display_name) {
 447                                 uint32_t _relative_save_offset;
 448                                 _relative_save_offset = ndr->offset;
 449                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->display_name));
 450                                 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
 451                                 NDR_PULL_SET_MEM_CTX(ndr, r->display_name, 0);
 452                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->display_name));
 453                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
 454                                 ndr->offset = _relative_save_offset;
 455                         }
 456                         ndr->flags = _flags_save_string;
 457                 }
 458         }
 459         return NDR_ERR_SUCCESS;
 460 }
 461 
 462 _PUBLIC_ void ndr_print_ENUM_SERVICE_STATUSA(struct ndr_print *ndr, const char *name, const struct ENUM_SERVICE_STATUSA *r)
     /* [<][>][^][v][top][bottom][index][help] */
 463 {
 464         ndr_print_struct(ndr, name, "ENUM_SERVICE_STATUSA");
 465         ndr->depth++;
 466         ndr_print_ptr(ndr, "service_name", r->service_name);
 467         ndr->depth++;
 468         if (r->service_name) {
 469                 ndr_print_string(ndr, "service_name", r->service_name);
 470         }
 471         ndr->depth--;
 472         ndr_print_ptr(ndr, "display_name", r->display_name);
 473         ndr->depth++;
 474         if (r->display_name) {
 475                 ndr_print_string(ndr, "display_name", r->display_name);
 476         }
 477         ndr->depth--;
 478         ndr_print_SERVICE_STATUS(ndr, "status", &r->status);
 479         ndr->depth--;
 480 }
 481 
 482 _PUBLIC_ size_t ndr_size_ENUM_SERVICE_STATUSA(const struct ENUM_SERVICE_STATUSA *r, struct smb_iconv_convenience *ic, int flags)
     /* [<][>][^][v][top][bottom][index][help] */
 483 {
 484         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_ENUM_SERVICE_STATUSA, ic);
 485 }
 486 
 487 _PUBLIC_ enum ndr_err_code ndr_push_svcctl_ServerType(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 488 {
 489         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 490         return NDR_ERR_SUCCESS;
 491 }
 492 
 493 _PUBLIC_ enum ndr_err_code ndr_pull_svcctl_ServerType(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
 494 {
 495         uint32_t v;
 496         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 497         *r = v;
 498         return NDR_ERR_SUCCESS;
 499 }
 500 
 501 _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 502 {
 503         ndr_print_uint32(ndr, name, r);
 504         ndr->depth++;
 505         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WORKSTATION", SV_TYPE_WORKSTATION, r);
 506         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER", SV_TYPE_SERVER, r);
 507         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SQLSERVER", SV_TYPE_SQLSERVER, r);
 508         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_CTRL", SV_TYPE_DOMAIN_CTRL, r);
 509         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_BAKCTRL", SV_TYPE_DOMAIN_BAKCTRL, r);
 510         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_TIME_SOURCE", SV_TYPE_TIME_SOURCE, r);
 511         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_AFP", SV_TYPE_AFP, r);
 512         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NOVELL", SV_TYPE_NOVELL, r);
 513         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MEMBER", SV_TYPE_DOMAIN_MEMBER, r);
 514         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_PRINTQ_SERVER", SV_TYPE_PRINTQ_SERVER, r);
 515         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DIALIN_SERVER", SV_TYPE_DIALIN_SERVER, r);
 516         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_UNIX", SV_TYPE_SERVER_UNIX, r);
 517         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_NT", SV_TYPE_NT, r);
 518         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WFW", SV_TYPE_WFW, r);
 519         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_MFPN", SV_TYPE_SERVER_MFPN, r);
 520         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_NT", SV_TYPE_SERVER_NT, r);
 521         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_POTENTIAL_BROWSER", SV_TYPE_POTENTIAL_BROWSER, r);
 522         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_BACKUP_BROWSER", SV_TYPE_BACKUP_BROWSER, r);
 523         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_MASTER_BROWSER", SV_TYPE_MASTER_BROWSER, r);
 524         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_MASTER", SV_TYPE_DOMAIN_MASTER, r);
 525         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_OSF", SV_TYPE_SERVER_OSF, r);
 526         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_SERVER_VMS", SV_TYPE_SERVER_VMS, r);
 527         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_WIN95_PLUS", SV_TYPE_WIN95_PLUS, r);
 528         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DFS_SERVER", SV_TYPE_DFS_SERVER, r);
 529         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_ALTERNATE_XPORT", SV_TYPE_ALTERNATE_XPORT, r);
 530         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_LOCAL_LIST_ONLY", SV_TYPE_LOCAL_LIST_ONLY, r);
 531         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SV_TYPE_DOMAIN_ENUM", SV_TYPE_DOMAIN_ENUM, r);
 532         ndr->depth--;
 533 }
 534 
 535 static enum ndr_err_code ndr_push_SERVICE_CONTROL(struct ndr_push *ndr, int ndr_flags, enum SERVICE_CONTROL r)
     /* [<][>][^][v][top][bottom][index][help] */
 536 {
 537         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 538         return NDR_ERR_SUCCESS;
 539 }
 540 
 541 static enum ndr_err_code ndr_pull_SERVICE_CONTROL(struct ndr_pull *ndr, int ndr_flags, enum SERVICE_CONTROL *r)
     /* [<][>][^][v][top][bottom][index][help] */
 542 {
 543         uint32_t v;
 544         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 545         *r = v;
 546         return NDR_ERR_SUCCESS;
 547 }
 548 
 549 _PUBLIC_ void ndr_print_SERVICE_CONTROL(struct ndr_print *ndr, const char *name, enum SERVICE_CONTROL r)
     /* [<][>][^][v][top][bottom][index][help] */
 550 {
 551         const char *val = NULL;
 552 
 553         switch (r) {
 554                 case SVCCTL_CONTROL_STOP: val = "SVCCTL_CONTROL_STOP"; break;
 555                 case SVCCTL_CONTROL_PAUSE: val = "SVCCTL_CONTROL_PAUSE"; break;
 556                 case SVCCTL_CONTROL_CONTINUE: val = "SVCCTL_CONTROL_CONTINUE"; break;
 557                 case SVCCTL_CONTROL_INTERROGATE: val = "SVCCTL_CONTROL_INTERROGATE"; break;
 558                 case SVCCTL_CONTROL_SHUTDOWN: val = "SVCCTL_CONTROL_SHUTDOWN"; break;
 559         }
 560         ndr_print_enum(ndr, name, "ENUM", val, r);
 561 }
 562 
 563 static enum ndr_err_code ndr_push_svcctl_ErrorControl(struct ndr_push *ndr, int ndr_flags, enum svcctl_ErrorControl r)
     /* [<][>][^][v][top][bottom][index][help] */
 564 {
 565         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 566         return NDR_ERR_SUCCESS;
 567 }
 568 
 569 static enum ndr_err_code ndr_pull_svcctl_ErrorControl(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ErrorControl *r)
     /* [<][>][^][v][top][bottom][index][help] */
 570 {
 571         uint32_t v;
 572         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 573         *r = v;
 574         return NDR_ERR_SUCCESS;
 575 }
 576 
 577 _PUBLIC_ void ndr_print_svcctl_ErrorControl(struct ndr_print *ndr, const char *name, enum svcctl_ErrorControl r)
     /* [<][>][^][v][top][bottom][index][help] */
 578 {
 579         const char *val = NULL;
 580 
 581         switch (r) {
 582                 case SVCCTL_SVC_ERROR_IGNORE: val = "SVCCTL_SVC_ERROR_IGNORE"; break;
 583                 case SVCCTL_SVC_ERROR_NORMAL: val = "SVCCTL_SVC_ERROR_NORMAL"; break;
 584                 case SVCCTL_SVC_ERROR_CRITICAL: val = "SVCCTL_SVC_ERROR_CRITICAL"; break;
 585                 case SVCCTL_SVC_ERROR_SEVERE: val = "SVCCTL_SVC_ERROR_SEVERE"; break;
 586         }
 587         ndr_print_enum(ndr, name, "ENUM", val, r);
 588 }
 589 
 590 static enum ndr_err_code ndr_push_svcctl_StartType(struct ndr_push *ndr, int ndr_flags, enum svcctl_StartType r)
     /* [<][>][^][v][top][bottom][index][help] */
 591 {
 592         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 593         return NDR_ERR_SUCCESS;
 594 }
 595 
 596 static enum ndr_err_code ndr_pull_svcctl_StartType(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StartType *r)
     /* [<][>][^][v][top][bottom][index][help] */
 597 {
 598         uint32_t v;
 599         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 600         *r = v;
 601         return NDR_ERR_SUCCESS;
 602 }
 603 
 604 _PUBLIC_ void ndr_print_svcctl_StartType(struct ndr_print *ndr, const char *name, enum svcctl_StartType r)
     /* [<][>][^][v][top][bottom][index][help] */
 605 {
 606         const char *val = NULL;
 607 
 608         switch (r) {
 609                 case SVCCTL_BOOT_START: val = "SVCCTL_BOOT_START"; break;
 610                 case SVCCTL_SYSTEM_START: val = "SVCCTL_SYSTEM_START"; break;
 611                 case SVCCTL_AUTO_START: val = "SVCCTL_AUTO_START"; break;
 612                 case SVCCTL_DEMAND_START: val = "SVCCTL_DEMAND_START"; break;
 613                 case SVCCTL_DISABLED: val = "SVCCTL_DISABLED"; break;
 614         }
 615         ndr_print_enum(ndr, name, "ENUM", val, r);
 616 }
 617 
 618 static enum ndr_err_code ndr_push_svcctl_ServiceState(struct ndr_push *ndr, int ndr_flags, enum svcctl_ServiceState r)
     /* [<][>][^][v][top][bottom][index][help] */
 619 {
 620         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 621         return NDR_ERR_SUCCESS;
 622 }
 623 
 624 static enum ndr_err_code ndr_pull_svcctl_ServiceState(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ServiceState *r)
     /* [<][>][^][v][top][bottom][index][help] */
 625 {
 626         uint32_t v;
 627         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 628         *r = v;
 629         return NDR_ERR_SUCCESS;
 630 }
 631 
 632 _PUBLIC_ void ndr_print_svcctl_ServiceState(struct ndr_print *ndr, const char *name, enum svcctl_ServiceState r)
     /* [<][>][^][v][top][bottom][index][help] */
 633 {
 634         const char *val = NULL;
 635 
 636         switch (r) {
 637                 case SERVICE_STATE_ACTIVE: val = "SERVICE_STATE_ACTIVE"; break;
 638                 case SERVICE_STATE_INACTIVE: val = "SERVICE_STATE_INACTIVE"; break;
 639                 case SERVICE_STATE_ALL: val = "SERVICE_STATE_ALL"; break;
 640         }
 641         ndr_print_enum(ndr, name, "ENUM", val, r);
 642 }
 643 
 644 static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 645 {
 646         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 647         return NDR_ERR_SUCCESS;
 648 }
 649 
 650 static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
 651 {
 652         uint32_t v;
 653         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 654         *r = v;
 655         return NDR_ERR_SUCCESS;
 656 }
 657 
 658 _PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 659 {
 660         ndr_print_uint32(ndr, name, r);
 661         ndr->depth++;
 662         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
 663         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
 664         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
 665         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
 666         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
 667         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
 668         ndr->depth--;
 669 }
 670 
 671 static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 672 {
 673         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 674         return NDR_ERR_SUCCESS;
 675 }
 676 
 677 static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
     /* [<][>][^][v][top][bottom][index][help] */
 678 {
 679         uint32_t v;
 680         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 681         *r = v;
 682         return NDR_ERR_SUCCESS;
 683 }
 684 
 685 _PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
     /* [<][>][^][v][top][bottom][index][help] */
 686 {
 687         ndr_print_uint32(ndr, name, r);
 688         ndr->depth++;
 689         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
 690         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
 691         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
 692         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
 693         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
 694         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
 695         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
 696         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
 697         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
 698         ndr->depth--;
 699 }
 700 
 701 _PUBLIC_ enum ndr_err_code ndr_push_QUERY_SERVICE_CONFIG(struct ndr_push *ndr, int ndr_flags, const struct QUERY_SERVICE_CONFIG *r)
     /* [<][>][^][v][top][bottom][index][help] */
 702 {
 703         if (ndr_flags & NDR_SCALARS) {
 704                 NDR_CHECK(ndr_push_align(ndr, 4));
 705                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->service_type));
 706                 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->start_type));
 707                 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->error_control));
 708                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->executablepath));
 709                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->loadordergroup));
 710                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tag_id));
 711                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dependencies));
 712                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->startname));
 713                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->displayname));
 714         }
 715         if (ndr_flags & NDR_BUFFERS) {
 716                 if (r->executablepath) {
 717                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
 718                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 719                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->executablepath, CH_UTF16)));
 720                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->executablepath, ndr_charset_length(r->executablepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 721                 }
 722                 if (r->loadordergroup) {
 723                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
 724                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 725                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->loadordergroup, CH_UTF16)));
 726                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->loadordergroup, ndr_charset_length(r->loadordergroup, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 727                 }
 728                 if (r->dependencies) {
 729                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
 730                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 731                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dependencies, CH_UTF16)));
 732                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dependencies, ndr_charset_length(r->dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 733                 }
 734                 if (r->startname) {
 735                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
 736                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 737                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->startname, CH_UTF16)));
 738                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->startname, ndr_charset_length(r->startname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 739                 }
 740                 if (r->displayname) {
 741                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
 742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 743                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->displayname, CH_UTF16)));
 744                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->displayname, ndr_charset_length(r->displayname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 745                 }
 746         }
 747         return NDR_ERR_SUCCESS;
 748 }
 749 
 750 _PUBLIC_ enum ndr_err_code ndr_pull_QUERY_SERVICE_CONFIG(struct ndr_pull *ndr, int ndr_flags, struct QUERY_SERVICE_CONFIG *r)
     /* [<][>][^][v][top][bottom][index][help] */
 751 {
 752         uint32_t _ptr_executablepath;
 753         TALLOC_CTX *_mem_save_executablepath_0;
 754         uint32_t _ptr_loadordergroup;
 755         TALLOC_CTX *_mem_save_loadordergroup_0;
 756         uint32_t _ptr_dependencies;
 757         TALLOC_CTX *_mem_save_dependencies_0;
 758         uint32_t _ptr_startname;
 759         TALLOC_CTX *_mem_save_startname_0;
 760         uint32_t _ptr_displayname;
 761         TALLOC_CTX *_mem_save_displayname_0;
 762         if (ndr_flags & NDR_SCALARS) {
 763                 NDR_CHECK(ndr_pull_align(ndr, 4));
 764                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->service_type));
 765                 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->start_type));
 766                 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->error_control));
 767                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_executablepath));
 768                 if (_ptr_executablepath) {
 769                         NDR_PULL_ALLOC(ndr, r->executablepath);
 770                 } else {
 771                         r->executablepath = NULL;
 772                 }
 773                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_loadordergroup));
 774                 if (_ptr_loadordergroup) {
 775                         NDR_PULL_ALLOC(ndr, r->loadordergroup);
 776                 } else {
 777                         r->loadordergroup = NULL;
 778                 }
 779                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tag_id));
 780                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
 781                 if (_ptr_dependencies) {
 782                         NDR_PULL_ALLOC(ndr, r->dependencies);
 783                 } else {
 784                         r->dependencies = NULL;
 785                 }
 786                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_startname));
 787                 if (_ptr_startname) {
 788                         NDR_PULL_ALLOC(ndr, r->startname);
 789                 } else {
 790                         r->startname = NULL;
 791                 }
 792                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_displayname));
 793                 if (_ptr_displayname) {
 794                         NDR_PULL_ALLOC(ndr, r->displayname);
 795                 } else {
 796                         r->displayname = NULL;
 797                 }
 798         }
 799         if (ndr_flags & NDR_BUFFERS) {
 800                 if (r->executablepath) {
 801                         _mem_save_executablepath_0 = NDR_PULL_GET_MEM_CTX(ndr);
 802                         NDR_PULL_SET_MEM_CTX(ndr, r->executablepath, 0);
 803                         NDR_CHECK(ndr_pull_array_size(ndr, &r->executablepath));
 804                         NDR_CHECK(ndr_pull_array_length(ndr, &r->executablepath));
 805                         if (ndr_get_array_length(ndr, &r->executablepath) > ndr_get_array_size(ndr, &r->executablepath)) {
 806                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->executablepath), ndr_get_array_length(ndr, &r->executablepath));
 807                         }
 808                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t)));
 809                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->executablepath, ndr_get_array_length(ndr, &r->executablepath), sizeof(uint16_t), CH_UTF16));
 810                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_executablepath_0, 0);
 811                 }
 812                 if (r->loadordergroup) {
 813                         _mem_save_loadordergroup_0 = NDR_PULL_GET_MEM_CTX(ndr);
 814                         NDR_PULL_SET_MEM_CTX(ndr, r->loadordergroup, 0);
 815                         NDR_CHECK(ndr_pull_array_size(ndr, &r->loadordergroup));
 816                         NDR_CHECK(ndr_pull_array_length(ndr, &r->loadordergroup));
 817                         if (ndr_get_array_length(ndr, &r->loadordergroup) > ndr_get_array_size(ndr, &r->loadordergroup)) {
 818                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->loadordergroup), ndr_get_array_length(ndr, &r->loadordergroup));
 819                         }
 820                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t)));
 821                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->loadordergroup, ndr_get_array_length(ndr, &r->loadordergroup), sizeof(uint16_t), CH_UTF16));
 822                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_loadordergroup_0, 0);
 823                 }
 824                 if (r->dependencies) {
 825                         _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
 826                         NDR_PULL_SET_MEM_CTX(ndr, r->dependencies, 0);
 827                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dependencies));
 828                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dependencies));
 829                         if (ndr_get_array_length(ndr, &r->dependencies) > ndr_get_array_size(ndr, &r->dependencies)) {
 830                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dependencies), ndr_get_array_length(ndr, &r->dependencies));
 831                         }
 832                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t)));
 833                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dependencies, ndr_get_array_length(ndr, &r->dependencies), sizeof(uint16_t), CH_UTF16));
 834                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
 835                 }
 836                 if (r->startname) {
 837                         _mem_save_startname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 838                         NDR_PULL_SET_MEM_CTX(ndr, r->startname, 0);
 839                         NDR_CHECK(ndr_pull_array_size(ndr, &r->startname));
 840                         NDR_CHECK(ndr_pull_array_length(ndr, &r->startname));
 841                         if (ndr_get_array_length(ndr, &r->startname) > ndr_get_array_size(ndr, &r->startname)) {
 842                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->startname), ndr_get_array_length(ndr, &r->startname));
 843                         }
 844                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t)));
 845                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->startname, ndr_get_array_length(ndr, &r->startname), sizeof(uint16_t), CH_UTF16));
 846                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_startname_0, 0);
 847                 }
 848                 if (r->displayname) {
 849                         _mem_save_displayname_0 = NDR_PULL_GET_MEM_CTX(ndr);
 850                         NDR_PULL_SET_MEM_CTX(ndr, r->displayname, 0);
 851                         NDR_CHECK(ndr_pull_array_size(ndr, &r->displayname));
 852                         NDR_CHECK(ndr_pull_array_length(ndr, &r->displayname));
 853                         if (ndr_get_array_length(ndr, &r->displayname) > ndr_get_array_size(ndr, &r->displayname)) {
 854                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->displayname), ndr_get_array_length(ndr, &r->displayname));
 855                         }
 856                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t)));
 857                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->displayname, ndr_get_array_length(ndr, &r->displayname), sizeof(uint16_t), CH_UTF16));
 858                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_displayname_0, 0);
 859                 }
 860         }
 861         return NDR_ERR_SUCCESS;
 862 }
 863 
 864 _PUBLIC_ void ndr_print_QUERY_SERVICE_CONFIG(struct ndr_print *ndr, const char *name, const struct QUERY_SERVICE_CONFIG *r)
     /* [<][>][^][v][top][bottom][index][help] */
 865 {
 866         ndr_print_struct(ndr, name, "QUERY_SERVICE_CONFIG");
 867         ndr->depth++;
 868         ndr_print_uint32(ndr, "service_type", r->service_type);
 869         ndr_print_svcctl_StartType(ndr, "start_type", r->start_type);
 870         ndr_print_svcctl_ErrorControl(ndr, "error_control", r->error_control);
 871         ndr_print_ptr(ndr, "executablepath", r->executablepath);
 872         ndr->depth++;
 873         if (r->executablepath) {
 874                 ndr_print_string(ndr, "executablepath", r->executablepath);
 875         }
 876         ndr->depth--;
 877         ndr_print_ptr(ndr, "loadordergroup", r->loadordergroup);
 878         ndr->depth++;
 879         if (r->loadordergroup) {
 880                 ndr_print_string(ndr, "loadordergroup", r->loadordergroup);
 881         }
 882         ndr->depth--;
 883         ndr_print_uint32(ndr, "tag_id", r->tag_id);
 884         ndr_print_ptr(ndr, "dependencies", r->dependencies);
 885         ndr->depth++;
 886         if (r->dependencies) {
 887                 ndr_print_string(ndr, "dependencies", r->dependencies);
 888         }
 889         ndr->depth--;
 890         ndr_print_ptr(ndr, "startname", r->startname);
 891         ndr->depth++;
 892         if (r->startname) {
 893                 ndr_print_string(ndr, "startname", r->startname);
 894         }
 895         ndr->depth--;
 896         ndr_print_ptr(ndr, "displayname", r->displayname);
 897         ndr->depth++;
 898         if (r->displayname) {
 899                 ndr_print_string(ndr, "displayname", r->displayname);
 900         }
 901         ndr->depth--;
 902         ndr->depth--;
 903 }
 904 
 905 _PUBLIC_ size_t ndr_size_QUERY_SERVICE_CONFIG(const struct QUERY_SERVICE_CONFIG *r, struct smb_iconv_convenience *ic, int flags)
     /* [<][>][^][v][top][bottom][index][help] */
 906 {
 907         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_QUERY_SERVICE_CONFIG, ic);
 908 }
 909 
 910 static enum ndr_err_code ndr_push_svcctl_ArgumentString(struct ndr_push *ndr, int ndr_flags, const struct svcctl_ArgumentString *r)
     /* [<][>][^][v][top][bottom][index][help] */
 911 {
 912         if (ndr_flags & NDR_SCALARS) {
 913                 NDR_CHECK(ndr_push_align(ndr, 4));
 914                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->string));
 915         }
 916         if (ndr_flags & NDR_BUFFERS) {
 917                 if (r->string) {
 918                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
 919                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
 920                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->string, CH_UTF16)));
 921                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, ndr_charset_length(r->string, CH_UTF16), sizeof(uint16_t), CH_UTF16));
 922                 }
 923         }
 924         return NDR_ERR_SUCCESS;
 925 }
 926 
 927 static enum ndr_err_code ndr_pull_svcctl_ArgumentString(struct ndr_pull *ndr, int ndr_flags, struct svcctl_ArgumentString *r)
     /* [<][>][^][v][top][bottom][index][help] */
 928 {
 929         uint32_t _ptr_string;
 930         TALLOC_CTX *_mem_save_string_0;
 931         if (ndr_flags & NDR_SCALARS) {
 932                 NDR_CHECK(ndr_pull_align(ndr, 4));
 933                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string));
 934                 if (_ptr_string) {
 935                         NDR_PULL_ALLOC(ndr, r->string);
 936                 } else {
 937                         r->string = NULL;
 938                 }
 939         }
 940         if (ndr_flags & NDR_BUFFERS) {
 941                 if (r->string) {
 942                         _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr);
 943                         NDR_PULL_SET_MEM_CTX(ndr, r->string, 0);
 944                         NDR_CHECK(ndr_pull_array_size(ndr, &r->string));
 945                         NDR_CHECK(ndr_pull_array_length(ndr, &r->string));
 946                         if (ndr_get_array_length(ndr, &r->string) > ndr_get_array_size(ndr, &r->string)) {
 947                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->string), ndr_get_array_length(ndr, &r->string));
 948                         }
 949                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t)));
 950                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_length(ndr, &r->string), sizeof(uint16_t), CH_UTF16));
 951                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0);
 952                 }
 953         }
 954         return NDR_ERR_SUCCESS;
 955 }
 956 
 957 _PUBLIC_ void ndr_print_svcctl_ArgumentString(struct ndr_print *ndr, const char *name, const struct svcctl_ArgumentString *r)
     /* [<][>][^][v][top][bottom][index][help] */
 958 {
 959         ndr_print_struct(ndr, name, "svcctl_ArgumentString");
 960         ndr->depth++;
 961         ndr_print_ptr(ndr, "string", r->string);
 962         ndr->depth++;
 963         if (r->string) {
 964                 ndr_print_string(ndr, "string", r->string);
 965         }
 966         ndr->depth--;
 967         ndr->depth--;
 968 }
 969 
 970 static enum ndr_err_code ndr_push_svcctl_ConfigLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_ConfigLevel r)
     /* [<][>][^][v][top][bottom][index][help] */
 971 {
 972         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
 973         return NDR_ERR_SUCCESS;
 974 }
 975 
 976 static enum ndr_err_code ndr_pull_svcctl_ConfigLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_ConfigLevel *r)
     /* [<][>][^][v][top][bottom][index][help] */
 977 {
 978         uint32_t v;
 979         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
 980         *r = v;
 981         return NDR_ERR_SUCCESS;
 982 }
 983 
 984 _PUBLIC_ void ndr_print_svcctl_ConfigLevel(struct ndr_print *ndr, const char *name, enum svcctl_ConfigLevel r)
     /* [<][>][^][v][top][bottom][index][help] */
 985 {
 986         const char *val = NULL;
 987 
 988         switch (r) {
 989                 case SERVICE_CONFIG_DESCRIPTION: val = "SERVICE_CONFIG_DESCRIPTION"; break;
 990                 case SERVICE_CONFIG_FAILURE_ACTIONS: val = "SERVICE_CONFIG_FAILURE_ACTIONS"; break;
 991         }
 992         ndr_print_enum(ndr, name, "ENUM", val, r);
 993 }
 994 
 995 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_DESCRIPTION(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_DESCRIPTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
 996 {
 997         if (ndr_flags & NDR_SCALARS) {
 998                 NDR_CHECK(ndr_push_align(ndr, 4));
 999                 {
1000                         uint32_t _flags_save_string = ndr->flags;
1001                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1002                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->description));
1003                         ndr->flags = _flags_save_string;
1004                 }
1005         }
1006         if (ndr_flags & NDR_BUFFERS) {
1007                 {
1008                         uint32_t _flags_save_string = ndr->flags;
1009                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1010                         if (r->description) {
1011                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->description));
1012                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->description));
1013                         }
1014                         ndr->flags = _flags_save_string;
1015                 }
1016         }
1017         return NDR_ERR_SUCCESS;
1018 }
1019 
1020 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_DESCRIPTION(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_DESCRIPTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
1021 {
1022         uint32_t _ptr_description;
1023         TALLOC_CTX *_mem_save_description_0;
1024         if (ndr_flags & NDR_SCALARS) {
1025                 NDR_CHECK(ndr_pull_align(ndr, 4));
1026                 {
1027                         uint32_t _flags_save_string = ndr->flags;
1028                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1029                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_description));
1030                         if (_ptr_description) {
1031                                 NDR_PULL_ALLOC(ndr, r->description);
1032                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->description, _ptr_description));
1033                         } else {
1034                                 r->description = NULL;
1035                         }
1036                         ndr->flags = _flags_save_string;
1037                 }
1038         }
1039         if (ndr_flags & NDR_BUFFERS) {
1040                 {
1041                         uint32_t _flags_save_string = ndr->flags;
1042                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1043                         if (r->description) {
1044                                 uint32_t _relative_save_offset;
1045                                 _relative_save_offset = ndr->offset;
1046                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->description));
1047                                 _mem_save_description_0 = NDR_PULL_GET_MEM_CTX(ndr);
1048                                 NDR_PULL_SET_MEM_CTX(ndr, r->description, 0);
1049                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->description));
1050                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_description_0, 0);
1051                                 ndr->offset = _relative_save_offset;
1052                         }
1053                         ndr->flags = _flags_save_string;
1054                 }
1055         }
1056         return NDR_ERR_SUCCESS;
1057 }
1058 
1059 _PUBLIC_ void ndr_print_SERVICE_DESCRIPTION(struct ndr_print *ndr, const char *name, const struct SERVICE_DESCRIPTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
1060 {
1061         ndr_print_struct(ndr, name, "SERVICE_DESCRIPTION");
1062         ndr->depth++;
1063         ndr_print_ptr(ndr, "description", r->description);
1064         ndr->depth++;
1065         if (r->description) {
1066                 ndr_print_string(ndr, "description", r->description);
1067         }
1068         ndr->depth--;
1069         ndr->depth--;
1070 }
1071 
1072 _PUBLIC_ size_t ndr_size_SERVICE_DESCRIPTION(const struct SERVICE_DESCRIPTION *r, struct smb_iconv_convenience *ic, int flags)
     /* [<][>][^][v][top][bottom][index][help] */
1073 {
1074         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_DESCRIPTION, ic);
1075 }
1076 
1077 static enum ndr_err_code ndr_push_SC_ACTION_TYPE(struct ndr_push *ndr, int ndr_flags, enum SC_ACTION_TYPE r)
     /* [<][>][^][v][top][bottom][index][help] */
1078 {
1079         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1080         return NDR_ERR_SUCCESS;
1081 }
1082 
1083 static enum ndr_err_code ndr_pull_SC_ACTION_TYPE(struct ndr_pull *ndr, int ndr_flags, enum SC_ACTION_TYPE *r)
     /* [<][>][^][v][top][bottom][index][help] */
1084 {
1085         uint32_t v;
1086         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1087         *r = v;
1088         return NDR_ERR_SUCCESS;
1089 }
1090 
1091 _PUBLIC_ void ndr_print_SC_ACTION_TYPE(struct ndr_print *ndr, const char *name, enum SC_ACTION_TYPE r)
     /* [<][>][^][v][top][bottom][index][help] */
1092 {
1093         const char *val = NULL;
1094 
1095         switch (r) {
1096                 case SC_ACTION_NONE: val = "SC_ACTION_NONE"; break;
1097                 case SC_ACTION_RESTART: val = "SC_ACTION_RESTART"; break;
1098                 case SC_ACTION_REBOOT: val = "SC_ACTION_REBOOT"; break;
1099                 case SC_ACTION_RUN_COMMAND: val = "SC_ACTION_RUN_COMMAND"; break;
1100         }
1101         ndr_print_enum(ndr, name, "ENUM", val, r);
1102 }
1103 
1104 static enum ndr_err_code ndr_push_SC_ACTION(struct ndr_push *ndr, int ndr_flags, const struct SC_ACTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
1105 {
1106         if (ndr_flags & NDR_SCALARS) {
1107                 NDR_CHECK(ndr_push_align(ndr, 4));
1108                 NDR_CHECK(ndr_push_SC_ACTION_TYPE(ndr, NDR_SCALARS, r->type));
1109                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->delay));
1110         }
1111         if (ndr_flags & NDR_BUFFERS) {
1112         }
1113         return NDR_ERR_SUCCESS;
1114 }
1115 
1116 static enum ndr_err_code ndr_pull_SC_ACTION(struct ndr_pull *ndr, int ndr_flags, struct SC_ACTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
1117 {
1118         if (ndr_flags & NDR_SCALARS) {
1119                 NDR_CHECK(ndr_pull_align(ndr, 4));
1120                 NDR_CHECK(ndr_pull_SC_ACTION_TYPE(ndr, NDR_SCALARS, &r->type));
1121                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->delay));
1122         }
1123         if (ndr_flags & NDR_BUFFERS) {
1124         }
1125         return NDR_ERR_SUCCESS;
1126 }
1127 
1128 _PUBLIC_ void ndr_print_SC_ACTION(struct ndr_print *ndr, const char *name, const struct SC_ACTION *r)
     /* [<][>][^][v][top][bottom][index][help] */
1129 {
1130         ndr_print_struct(ndr, name, "SC_ACTION");
1131         ndr->depth++;
1132         ndr_print_SC_ACTION_TYPE(ndr, "type", r->type);
1133         ndr_print_uint32(ndr, "delay", r->delay);
1134         ndr->depth--;
1135 }
1136 
1137 _PUBLIC_ enum ndr_err_code ndr_push_SERVICE_FAILURE_ACTIONS(struct ndr_push *ndr, int ndr_flags, const struct SERVICE_FAILURE_ACTIONS *r)
     /* [<][>][^][v][top][bottom][index][help] */
1138 {
1139         uint32_t cntr_actions_1;
1140         if (ndr_flags & NDR_SCALARS) {
1141                 NDR_CHECK(ndr_push_align(ndr, 4));
1142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->reset_period));
1143                 {
1144                         uint32_t _flags_save_string = ndr->flags;
1145                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1146                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->rebootmsg));
1147                         ndr->flags = _flags_save_string;
1148                 }
1149                 {
1150                         uint32_t _flags_save_string = ndr->flags;
1151                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1152                         NDR_CHECK(ndr_push_relative_ptr1(ndr, r->command));
1153                         ndr->flags = _flags_save_string;
1154                 }
1155                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1156                 NDR_CHECK(ndr_push_relative_ptr1(ndr, r->actions));
1157         }
1158         if (ndr_flags & NDR_BUFFERS) {
1159                 {
1160                         uint32_t _flags_save_string = ndr->flags;
1161                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1162                         if (r->rebootmsg) {
1163                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->rebootmsg));
1164                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->rebootmsg));
1165                         }
1166                         ndr->flags = _flags_save_string;
1167                 }
1168                 {
1169                         uint32_t _flags_save_string = ndr->flags;
1170                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1171                         if (r->command) {
1172                                 NDR_CHECK(ndr_push_relative_ptr2(ndr, r->command));
1173                                 NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->command));
1174                         }
1175                         ndr->flags = _flags_save_string;
1176                 }
1177                 if (r->actions) {
1178                         NDR_CHECK(ndr_push_relative_ptr2(ndr, r->actions));
1179                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_actions));
1180                         for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1181                                 NDR_CHECK(ndr_push_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1182                         }
1183                 }
1184         }
1185         return NDR_ERR_SUCCESS;
1186 }
1187 
1188 _PUBLIC_ enum ndr_err_code ndr_pull_SERVICE_FAILURE_ACTIONS(struct ndr_pull *ndr, int ndr_flags, struct SERVICE_FAILURE_ACTIONS *r)
     /* [<][>][^][v][top][bottom][index][help] */
1189 {
1190         uint32_t _ptr_rebootmsg;
1191         TALLOC_CTX *_mem_save_rebootmsg_0;
1192         uint32_t _ptr_command;
1193         TALLOC_CTX *_mem_save_command_0;
1194         uint32_t _ptr_actions;
1195         uint32_t cntr_actions_1;
1196         TALLOC_CTX *_mem_save_actions_0;
1197         TALLOC_CTX *_mem_save_actions_1;
1198         if (ndr_flags & NDR_SCALARS) {
1199                 NDR_CHECK(ndr_pull_align(ndr, 4));
1200                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->reset_period));
1201                 {
1202                         uint32_t _flags_save_string = ndr->flags;
1203                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1204                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rebootmsg));
1205                         if (_ptr_rebootmsg) {
1206                                 NDR_PULL_ALLOC(ndr, r->rebootmsg);
1207                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->rebootmsg, _ptr_rebootmsg));
1208                         } else {
1209                                 r->rebootmsg = NULL;
1210                         }
1211                         ndr->flags = _flags_save_string;
1212                 }
1213                 {
1214                         uint32_t _flags_save_string = ndr->flags;
1215                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1216                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_command));
1217                         if (_ptr_command) {
1218                                 NDR_PULL_ALLOC(ndr, r->command);
1219                                 NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->command, _ptr_command));
1220                         } else {
1221                                 r->command = NULL;
1222                         }
1223                         ndr->flags = _flags_save_string;
1224                 }
1225                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_actions));
1226                 if (r->num_actions > 1024) {
1227                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1228                 }
1229                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_actions));
1230                 if (_ptr_actions) {
1231                         NDR_PULL_ALLOC(ndr, r->actions);
1232                         NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->actions, _ptr_actions));
1233                 } else {
1234                         r->actions = NULL;
1235                 }
1236         }
1237         if (ndr_flags & NDR_BUFFERS) {
1238                 {
1239                         uint32_t _flags_save_string = ndr->flags;
1240                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1241                         if (r->rebootmsg) {
1242                                 uint32_t _relative_save_offset;
1243                                 _relative_save_offset = ndr->offset;
1244                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->rebootmsg));
1245                                 _mem_save_rebootmsg_0 = NDR_PULL_GET_MEM_CTX(ndr);
1246                                 NDR_PULL_SET_MEM_CTX(ndr, r->rebootmsg, 0);
1247                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->rebootmsg));
1248                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rebootmsg_0, 0);
1249                                 ndr->offset = _relative_save_offset;
1250                         }
1251                         ndr->flags = _flags_save_string;
1252                 }
1253                 {
1254                         uint32_t _flags_save_string = ndr->flags;
1255                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
1256                         if (r->command) {
1257                                 uint32_t _relative_save_offset;
1258                                 _relative_save_offset = ndr->offset;
1259                                 NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->command));
1260                                 _mem_save_command_0 = NDR_PULL_GET_MEM_CTX(ndr);
1261                                 NDR_PULL_SET_MEM_CTX(ndr, r->command, 0);
1262                                 NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->command));
1263                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_command_0, 0);
1264                                 ndr->offset = _relative_save_offset;
1265                         }
1266                         ndr->flags = _flags_save_string;
1267                 }
1268                 if (r->actions) {
1269                         uint32_t _relative_save_offset;
1270                         _relative_save_offset = ndr->offset;
1271                         NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->actions));
1272                         _mem_save_actions_0 = NDR_PULL_GET_MEM_CTX(ndr);
1273                         NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1274                         NDR_CHECK(ndr_pull_array_size(ndr, &r->actions));
1275                         NDR_PULL_ALLOC_N(ndr, r->actions, ndr_get_array_size(ndr, &r->actions));
1276                         _mem_save_actions_1 = NDR_PULL_GET_MEM_CTX(ndr);
1277                         NDR_PULL_SET_MEM_CTX(ndr, r->actions, 0);
1278                         for (cntr_actions_1 = 0; cntr_actions_1 < r->num_actions; cntr_actions_1++) {
1279                                 NDR_CHECK(ndr_pull_SC_ACTION(ndr, NDR_SCALARS, &r->actions[cntr_actions_1]));
1280                         }
1281                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_1, 0);
1282                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_actions_0, 0);
1283                         ndr->offset = _relative_save_offset;
1284                 }
1285                 if (r->actions) {
1286                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->actions, r->num_actions));
1287                 }
1288         }
1289         return NDR_ERR_SUCCESS;
1290 }
1291 
1292 _PUBLIC_ void ndr_print_SERVICE_FAILURE_ACTIONS(struct ndr_print *ndr, const char *name, const struct SERVICE_FAILURE_ACTIONS *r)
     /* [<][>][^][v][top][bottom][index][help] */
1293 {
1294         uint32_t cntr_actions_1;
1295         ndr_print_struct(ndr, name, "SERVICE_FAILURE_ACTIONS");
1296         ndr->depth++;
1297         ndr_print_uint32(ndr, "reset_period", r->reset_period);
1298         ndr_print_ptr(ndr, "rebootmsg", r->rebootmsg);
1299         ndr->depth++;
1300         if (r->rebootmsg) {
1301                 ndr_print_string(ndr, "rebootmsg", r->rebootmsg);
1302         }
1303         ndr->depth--;
1304         ndr_print_ptr(ndr, "command", r->command);
1305         ndr->depth++;
1306         if (r->command) {
1307                 ndr_print_string(ndr, "command", r->command);
1308         }
1309         ndr->depth--;
1310         ndr_print_uint32(ndr, "num_actions", r->num_actions);
1311         ndr_print_ptr(ndr, "actions", r->actions);
1312         ndr->depth++;
1313         if (r->actions) {
1314                 ndr->print(ndr, "%s: ARRAY(%d)", "actions", (int)r->num_actions);
1315                 ndr->depth++;
1316                 for (cntr_actions_1=0;cntr_actions_1<r->num_actions;cntr_actions_1++) {
1317                         char *idx_1=NULL;
1318                         if (asprintf(&idx_1, "[%d]", cntr_actions_1) != -1) {
1319                                 ndr_print_SC_ACTION(ndr, "actions", &r->actions[cntr_actions_1]);
1320                                 free(idx_1);
1321                         }
1322                 }
1323                 ndr->depth--;
1324         }
1325         ndr->depth--;
1326         ndr->depth--;
1327 }
1328 
1329 _PUBLIC_ size_t ndr_size_SERVICE_FAILURE_ACTIONS(const struct SERVICE_FAILURE_ACTIONS *r, struct smb_iconv_convenience *ic, int flags)
     /* [<][>][^][v][top][bottom][index][help] */
1330 {
1331         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_SERVICE_FAILURE_ACTIONS, ic);
1332 }
1333 
1334 static enum ndr_err_code ndr_push_svcctl_StatusLevel(struct ndr_push *ndr, int ndr_flags, enum svcctl_StatusLevel r)
     /* [<][>][^][v][top][bottom][index][help] */
1335 {
1336         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1337         return NDR_ERR_SUCCESS;
1338 }
1339 
1340 static enum ndr_err_code ndr_pull_svcctl_StatusLevel(struct ndr_pull *ndr, int ndr_flags, enum svcctl_StatusLevel *r)
     /* [<][>][^][v][top][bottom][index][help] */
1341 {
1342         uint32_t v;
1343         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1344         *r = v;
1345         return NDR_ERR_SUCCESS;
1346 }
1347 
1348 _PUBLIC_ void ndr_print_svcctl_StatusLevel(struct ndr_print *ndr, const char *name, enum svcctl_StatusLevel r)
     /* [<][>][^][v][top][bottom][index][help] */
1349 {
1350         const char *val = NULL;
1351 
1352         switch (r) {
1353                 case SVC_STATUS_PROCESS_INFO: val = "SVC_STATUS_PROCESS_INFO"; break;
1354         }
1355         ndr_print_enum(ndr, name, "ENUM", val, r);
1356 }
1357 
1358 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
     /* [<][>][^][v][top][bottom][index][help] */
1359 {
1360         if (flags & NDR_IN) {
1361                 if (r->in.handle == NULL) {
1362                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1363                 }
1364                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1365         }
1366         if (flags & NDR_OUT) {
1367                 if (r->out.handle == NULL) {
1368                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1369                 }
1370                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1371                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1372         }
1373         return NDR_ERR_SUCCESS;
1374 }
1375 
1376 static enum ndr_err_code ndr_pull_svcctl_CloseServiceHandle(struct ndr_pull *ndr, int flags, struct svcctl_CloseServiceHandle *r)
     /* [<][>][^][v][top][bottom][index][help] */
1377 {
1378         TALLOC_CTX *_mem_save_handle_0;
1379         if (flags & NDR_IN) {
1380                 ZERO_STRUCT(r->out);
1381 
1382                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1383                         NDR_PULL_ALLOC(ndr, r->in.handle);
1384                 }
1385                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1386                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1387                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1388                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1389                 NDR_PULL_ALLOC(ndr, r->out.handle);
1390                 *r->out.handle = *r->in.handle;
1391         }
1392         if (flags & NDR_OUT) {
1393                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1394                         NDR_PULL_ALLOC(ndr, r->out.handle);
1395                 }
1396                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1397                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
1398                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
1399                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1400                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1401         }
1402         return NDR_ERR_SUCCESS;
1403 }
1404 
1405 _PUBLIC_ void ndr_print_svcctl_CloseServiceHandle(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CloseServiceHandle *r)
     /* [<][>][^][v][top][bottom][index][help] */
1406 {
1407         ndr_print_struct(ndr, name, "svcctl_CloseServiceHandle");
1408         ndr->depth++;
1409         if (flags & NDR_SET_VALUES) {
1410                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1411         }
1412         if (flags & NDR_IN) {
1413                 ndr_print_struct(ndr, "in", "svcctl_CloseServiceHandle");
1414                 ndr->depth++;
1415                 ndr_print_ptr(ndr, "handle", r->in.handle);
1416                 ndr->depth++;
1417                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1418                 ndr->depth--;
1419                 ndr->depth--;
1420         }
1421         if (flags & NDR_OUT) {
1422                 ndr_print_struct(ndr, "out", "svcctl_CloseServiceHandle");
1423                 ndr->depth++;
1424                 ndr_print_ptr(ndr, "handle", r->out.handle);
1425                 ndr->depth++;
1426                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
1427                 ndr->depth--;
1428                 ndr_print_WERROR(ndr, "result", r->out.result);
1429                 ndr->depth--;
1430         }
1431         ndr->depth--;
1432 }
1433 
1434 static enum ndr_err_code ndr_push_svcctl_ControlService(struct ndr_push *ndr, int flags, const struct svcctl_ControlService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1435 {
1436         if (flags & NDR_IN) {
1437                 if (r->in.handle == NULL) {
1438                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1439                 }
1440                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1441                 NDR_CHECK(ndr_push_SERVICE_CONTROL(ndr, NDR_SCALARS, r->in.control));
1442         }
1443         if (flags & NDR_OUT) {
1444                 if (r->out.service_status == NULL) {
1445                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1446                 }
1447                 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1448                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1449         }
1450         return NDR_ERR_SUCCESS;
1451 }
1452 
1453 static enum ndr_err_code ndr_pull_svcctl_ControlService(struct ndr_pull *ndr, int flags, struct svcctl_ControlService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1454 {
1455         TALLOC_CTX *_mem_save_handle_0;
1456         TALLOC_CTX *_mem_save_service_status_0;
1457         if (flags & NDR_IN) {
1458                 ZERO_STRUCT(r->out);
1459 
1460                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1461                         NDR_PULL_ALLOC(ndr, r->in.handle);
1462                 }
1463                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1464                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1465                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1466                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1467                 NDR_CHECK(ndr_pull_SERVICE_CONTROL(ndr, NDR_SCALARS, &r->in.control));
1468                 NDR_PULL_ALLOC(ndr, r->out.service_status);
1469                 ZERO_STRUCTP(r->out.service_status);
1470         }
1471         if (flags & NDR_OUT) {
1472                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1473                         NDR_PULL_ALLOC(ndr, r->out.service_status);
1474                 }
1475                 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1476                 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1477                 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1478                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1479                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1480         }
1481         return NDR_ERR_SUCCESS;
1482 }
1483 
1484 _PUBLIC_ void ndr_print_svcctl_ControlService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ControlService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1485 {
1486         ndr_print_struct(ndr, name, "svcctl_ControlService");
1487         ndr->depth++;
1488         if (flags & NDR_SET_VALUES) {
1489                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1490         }
1491         if (flags & NDR_IN) {
1492                 ndr_print_struct(ndr, "in", "svcctl_ControlService");
1493                 ndr->depth++;
1494                 ndr_print_ptr(ndr, "handle", r->in.handle);
1495                 ndr->depth++;
1496                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1497                 ndr->depth--;
1498                 ndr_print_SERVICE_CONTROL(ndr, "control", r->in.control);
1499                 ndr->depth--;
1500         }
1501         if (flags & NDR_OUT) {
1502                 ndr_print_struct(ndr, "out", "svcctl_ControlService");
1503                 ndr->depth++;
1504                 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1505                 ndr->depth++;
1506                 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1507                 ndr->depth--;
1508                 ndr_print_WERROR(ndr, "result", r->out.result);
1509                 ndr->depth--;
1510         }
1511         ndr->depth--;
1512 }
1513 
1514 static enum ndr_err_code ndr_push_svcctl_DeleteService(struct ndr_push *ndr, int flags, const struct svcctl_DeleteService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1515 {
1516         if (flags & NDR_IN) {
1517                 if (r->in.handle == NULL) {
1518                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1519                 }
1520                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1521         }
1522         if (flags & NDR_OUT) {
1523                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1524         }
1525         return NDR_ERR_SUCCESS;
1526 }
1527 
1528 static enum ndr_err_code ndr_pull_svcctl_DeleteService(struct ndr_pull *ndr, int flags, struct svcctl_DeleteService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1529 {
1530         TALLOC_CTX *_mem_save_handle_0;
1531         if (flags & NDR_IN) {
1532                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1533                         NDR_PULL_ALLOC(ndr, r->in.handle);
1534                 }
1535                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1536                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1537                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1538                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1539         }
1540         if (flags & NDR_OUT) {
1541                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1542         }
1543         return NDR_ERR_SUCCESS;
1544 }
1545 
1546 _PUBLIC_ void ndr_print_svcctl_DeleteService(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_DeleteService *r)
     /* [<][>][^][v][top][bottom][index][help] */
1547 {
1548         ndr_print_struct(ndr, name, "svcctl_DeleteService");
1549         ndr->depth++;
1550         if (flags & NDR_SET_VALUES) {
1551                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1552         }
1553         if (flags & NDR_IN) {
1554                 ndr_print_struct(ndr, "in", "svcctl_DeleteService");
1555                 ndr->depth++;
1556                 ndr_print_ptr(ndr, "handle", r->in.handle);
1557                 ndr->depth++;
1558                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1559                 ndr->depth--;
1560                 ndr->depth--;
1561         }
1562         if (flags & NDR_OUT) {
1563                 ndr_print_struct(ndr, "out", "svcctl_DeleteService");
1564                 ndr->depth++;
1565                 ndr_print_WERROR(ndr, "result", r->out.result);
1566                 ndr->depth--;
1567         }
1568         ndr->depth--;
1569 }
1570 
1571 static enum ndr_err_code ndr_push_svcctl_LockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_LockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
1572 {
1573         if (flags & NDR_IN) {
1574                 if (r->in.handle == NULL) {
1575                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1576                 }
1577                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1578         }
1579         if (flags & NDR_OUT) {
1580                 if (r->out.lock == NULL) {
1581                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1582                 }
1583                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1584                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1585         }
1586         return NDR_ERR_SUCCESS;
1587 }
1588 
1589 static enum ndr_err_code ndr_pull_svcctl_LockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_LockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
1590 {
1591         TALLOC_CTX *_mem_save_handle_0;
1592         TALLOC_CTX *_mem_save_lock_0;
1593         if (flags & NDR_IN) {
1594                 ZERO_STRUCT(r->out);
1595 
1596                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1597                         NDR_PULL_ALLOC(ndr, r->in.handle);
1598                 }
1599                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1600                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1601                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1602                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1603                 NDR_PULL_ALLOC(ndr, r->out.lock);
1604                 ZERO_STRUCTP(r->out.lock);
1605         }
1606         if (flags & NDR_OUT) {
1607                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1608                         NDR_PULL_ALLOC(ndr, r->out.lock);
1609                 }
1610                 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1611                 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1612                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1613                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1614                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1615         }
1616         return NDR_ERR_SUCCESS;
1617 }
1618 
1619 _PUBLIC_ void ndr_print_svcctl_LockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_LockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
1620 {
1621         ndr_print_struct(ndr, name, "svcctl_LockServiceDatabase");
1622         ndr->depth++;
1623         if (flags & NDR_SET_VALUES) {
1624                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1625         }
1626         if (flags & NDR_IN) {
1627                 ndr_print_struct(ndr, "in", "svcctl_LockServiceDatabase");
1628                 ndr->depth++;
1629                 ndr_print_ptr(ndr, "handle", r->in.handle);
1630                 ndr->depth++;
1631                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1632                 ndr->depth--;
1633                 ndr->depth--;
1634         }
1635         if (flags & NDR_OUT) {
1636                 ndr_print_struct(ndr, "out", "svcctl_LockServiceDatabase");
1637                 ndr->depth++;
1638                 ndr_print_ptr(ndr, "lock", r->out.lock);
1639                 ndr->depth++;
1640                 ndr_print_policy_handle(ndr, "lock", r->out.lock);
1641                 ndr->depth--;
1642                 ndr_print_WERROR(ndr, "result", r->out.result);
1643                 ndr->depth--;
1644         }
1645         ndr->depth--;
1646 }
1647 
1648 static enum ndr_err_code ndr_push_svcctl_QueryServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1649 {
1650         if (flags & NDR_IN) {
1651                 if (r->in.handle == NULL) {
1652                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1653                 }
1654                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1655                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1656                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1657         }
1658         if (flags & NDR_OUT) {
1659                 if (r->out.buffer == NULL) {
1660                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1661                 }
1662                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1663                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
1664                 if (r->out.needed == NULL) {
1665                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1666                 }
1667                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
1668                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1669         }
1670         return NDR_ERR_SUCCESS;
1671 }
1672 
1673 static enum ndr_err_code ndr_pull_svcctl_QueryServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1674 {
1675         TALLOC_CTX *_mem_save_handle_0;
1676         TALLOC_CTX *_mem_save_needed_0;
1677         if (flags & NDR_IN) {
1678                 ZERO_STRUCT(r->out);
1679 
1680                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1681                         NDR_PULL_ALLOC(ndr, r->in.handle);
1682                 }
1683                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1684                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1685                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1686                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1687                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1688                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1689                 if (r->in.offered > 0x40000) {
1690                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1691                 }
1692                 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
1693                 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
1694                 NDR_PULL_ALLOC(ndr, r->out.needed);
1695                 ZERO_STRUCTP(r->out.needed);
1696         }
1697         if (flags & NDR_OUT) {
1698                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
1699                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1700                         NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
1701                 }
1702                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
1703                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1704                         NDR_PULL_ALLOC(ndr, r->out.needed);
1705                 }
1706                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
1707                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
1708                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
1709                 if (*r->out.needed > 0x40000) {
1710                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
1711                 }
1712                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
1713                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1714                 if (r->out.buffer) {
1715                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
1716                 }
1717         }
1718         return NDR_ERR_SUCCESS;
1719 }
1720 
1721 _PUBLIC_ void ndr_print_svcctl_QueryServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1722 {
1723         ndr_print_struct(ndr, name, "svcctl_QueryServiceObjectSecurity");
1724         ndr->depth++;
1725         if (flags & NDR_SET_VALUES) {
1726                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1727         }
1728         if (flags & NDR_IN) {
1729                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceObjectSecurity");
1730                 ndr->depth++;
1731                 ndr_print_ptr(ndr, "handle", r->in.handle);
1732                 ndr->depth++;
1733                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1734                 ndr->depth--;
1735                 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1736                 ndr_print_uint32(ndr, "offered", r->in.offered);
1737                 ndr->depth--;
1738         }
1739         if (flags & NDR_OUT) {
1740                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceObjectSecurity");
1741                 ndr->depth++;
1742                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
1743                 ndr->depth++;
1744                 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
1745                 ndr->depth--;
1746                 ndr_print_ptr(ndr, "needed", r->out.needed);
1747                 ndr->depth++;
1748                 ndr_print_uint32(ndr, "needed", *r->out.needed);
1749                 ndr->depth--;
1750                 ndr_print_WERROR(ndr, "result", r->out.result);
1751                 ndr->depth--;
1752         }
1753         ndr->depth--;
1754 }
1755 
1756 static enum ndr_err_code ndr_push_svcctl_SetServiceObjectSecurity(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1757 {
1758         if (flags & NDR_IN) {
1759                 if (r->in.handle == NULL) {
1760                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1761                 }
1762                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1763                 NDR_CHECK(ndr_push_security_secinfo(ndr, NDR_SCALARS, r->in.security_flags));
1764                 if (r->in.buffer == NULL) {
1765                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1766                 }
1767                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1768                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.buffer, r->in.offered));
1769                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
1770         }
1771         if (flags & NDR_OUT) {
1772                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1773         }
1774         return NDR_ERR_SUCCESS;
1775 }
1776 
1777 static enum ndr_err_code ndr_pull_svcctl_SetServiceObjectSecurity(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1778 {
1779         TALLOC_CTX *_mem_save_handle_0;
1780         if (flags & NDR_IN) {
1781                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1782                         NDR_PULL_ALLOC(ndr, r->in.handle);
1783                 }
1784                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1785                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1786                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1787                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1788                 NDR_CHECK(ndr_pull_security_secinfo(ndr, NDR_SCALARS, &r->in.security_flags));
1789                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.buffer));
1790                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1791                         NDR_PULL_ALLOC_N(ndr, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer));
1792                 }
1793                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.buffer, ndr_get_array_size(ndr, &r->in.buffer)));
1794                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
1795                 if (r->in.buffer) {
1796                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.buffer, r->in.offered));
1797                 }
1798         }
1799         if (flags & NDR_OUT) {
1800                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1801         }
1802         return NDR_ERR_SUCCESS;
1803 }
1804 
1805 _PUBLIC_ void ndr_print_svcctl_SetServiceObjectSecurity(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceObjectSecurity *r)
     /* [<][>][^][v][top][bottom][index][help] */
1806 {
1807         ndr_print_struct(ndr, name, "svcctl_SetServiceObjectSecurity");
1808         ndr->depth++;
1809         if (flags & NDR_SET_VALUES) {
1810                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1811         }
1812         if (flags & NDR_IN) {
1813                 ndr_print_struct(ndr, "in", "svcctl_SetServiceObjectSecurity");
1814                 ndr->depth++;
1815                 ndr_print_ptr(ndr, "handle", r->in.handle);
1816                 ndr->depth++;
1817                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1818                 ndr->depth--;
1819                 ndr_print_security_secinfo(ndr, "security_flags", r->in.security_flags);
1820                 ndr_print_ptr(ndr, "buffer", r->in.buffer);
1821                 ndr->depth++;
1822                 ndr_print_array_uint8(ndr, "buffer", r->in.buffer, r->in.offered);
1823                 ndr->depth--;
1824                 ndr_print_uint32(ndr, "offered", r->in.offered);
1825                 ndr->depth--;
1826         }
1827         if (flags & NDR_OUT) {
1828                 ndr_print_struct(ndr, "out", "svcctl_SetServiceObjectSecurity");
1829                 ndr->depth++;
1830                 ndr_print_WERROR(ndr, "result", r->out.result);
1831                 ndr->depth--;
1832         }
1833         ndr->depth--;
1834 }
1835 
1836 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1837 {
1838         if (flags & NDR_IN) {
1839                 if (r->in.handle == NULL) {
1840                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1841                 }
1842                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1843         }
1844         if (flags & NDR_OUT) {
1845                 if (r->out.service_status == NULL) {
1846                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1847                 }
1848                 NDR_CHECK(ndr_push_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1849                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1850         }
1851         return NDR_ERR_SUCCESS;
1852 }
1853 
1854 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1855 {
1856         TALLOC_CTX *_mem_save_handle_0;
1857         TALLOC_CTX *_mem_save_service_status_0;
1858         if (flags & NDR_IN) {
1859                 ZERO_STRUCT(r->out);
1860 
1861                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1862                         NDR_PULL_ALLOC(ndr, r->in.handle);
1863                 }
1864                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
1865                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
1866                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
1867                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
1868                 NDR_PULL_ALLOC(ndr, r->out.service_status);
1869                 ZERO_STRUCTP(r->out.service_status);
1870         }
1871         if (flags & NDR_OUT) {
1872                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1873                         NDR_PULL_ALLOC(ndr, r->out.service_status);
1874                 }
1875                 _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
1876                 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, LIBNDR_FLAG_REF_ALLOC);
1877                 NDR_CHECK(ndr_pull_SERVICE_STATUS(ndr, NDR_SCALARS, r->out.service_status));
1878                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, LIBNDR_FLAG_REF_ALLOC);
1879                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1880         }
1881         return NDR_ERR_SUCCESS;
1882 }
1883 
1884 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1885 {
1886         ndr_print_struct(ndr, name, "svcctl_QueryServiceStatus");
1887         ndr->depth++;
1888         if (flags & NDR_SET_VALUES) {
1889                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1890         }
1891         if (flags & NDR_IN) {
1892                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatus");
1893                 ndr->depth++;
1894                 ndr_print_ptr(ndr, "handle", r->in.handle);
1895                 ndr->depth++;
1896                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
1897                 ndr->depth--;
1898                 ndr->depth--;
1899         }
1900         if (flags & NDR_OUT) {
1901                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatus");
1902                 ndr->depth++;
1903                 ndr_print_ptr(ndr, "service_status", r->out.service_status);
1904                 ndr->depth++;
1905                 ndr_print_SERVICE_STATUS(ndr, "service_status", r->out.service_status);
1906                 ndr->depth--;
1907                 ndr_print_WERROR(ndr, "result", r->out.result);
1908                 ndr->depth--;
1909         }
1910         ndr->depth--;
1911 }
1912 
1913 static enum ndr_err_code ndr_push_svcctl_SetServiceStatus(struct ndr_push *ndr, int flags, const struct svcctl_SetServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1914 {
1915         if (flags & NDR_IN) {
1916         }
1917         if (flags & NDR_OUT) {
1918                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1919         }
1920         return NDR_ERR_SUCCESS;
1921 }
1922 
1923 static enum ndr_err_code ndr_pull_svcctl_SetServiceStatus(struct ndr_pull *ndr, int flags, struct svcctl_SetServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1924 {
1925         if (flags & NDR_IN) {
1926         }
1927         if (flags & NDR_OUT) {
1928                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1929         }
1930         return NDR_ERR_SUCCESS;
1931 }
1932 
1933 _PUBLIC_ void ndr_print_svcctl_SetServiceStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SetServiceStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
1934 {
1935         ndr_print_struct(ndr, name, "svcctl_SetServiceStatus");
1936         ndr->depth++;
1937         if (flags & NDR_SET_VALUES) {
1938                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
1939         }
1940         if (flags & NDR_IN) {
1941                 ndr_print_struct(ndr, "in", "svcctl_SetServiceStatus");
1942                 ndr->depth++;
1943                 ndr->depth--;
1944         }
1945         if (flags & NDR_OUT) {
1946                 ndr_print_struct(ndr, "out", "svcctl_SetServiceStatus");
1947                 ndr->depth++;
1948                 ndr_print_WERROR(ndr, "result", r->out.result);
1949                 ndr->depth--;
1950         }
1951         ndr->depth--;
1952 }
1953 
1954 static enum ndr_err_code ndr_push_svcctl_UnlockServiceDatabase(struct ndr_push *ndr, int flags, const struct svcctl_UnlockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
1955 {
1956         if (flags & NDR_IN) {
1957                 if (r->in.lock == NULL) {
1958                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1959                 }
1960                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1961         }
1962         if (flags & NDR_OUT) {
1963                 if (r->out.lock == NULL) {
1964                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
1965                 }
1966                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1967                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
1968         }
1969         return NDR_ERR_SUCCESS;
1970 }
1971 
1972 static enum ndr_err_code ndr_pull_svcctl_UnlockServiceDatabase(struct ndr_pull *ndr, int flags, struct svcctl_UnlockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
1973 {
1974         TALLOC_CTX *_mem_save_lock_0;
1975         if (flags & NDR_IN) {
1976                 ZERO_STRUCT(r->out);
1977 
1978                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1979                         NDR_PULL_ALLOC(ndr, r->in.lock);
1980                 }
1981                 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1982                 NDR_PULL_SET_MEM_CTX(ndr, r->in.lock, LIBNDR_FLAG_REF_ALLOC);
1983                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.lock));
1984                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1985                 NDR_PULL_ALLOC(ndr, r->out.lock);
1986                 *r->out.lock = *r->in.lock;
1987         }
1988         if (flags & NDR_OUT) {
1989                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
1990                         NDR_PULL_ALLOC(ndr, r->out.lock);
1991                 }
1992                 _mem_save_lock_0 = NDR_PULL_GET_MEM_CTX(ndr);
1993                 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock, LIBNDR_FLAG_REF_ALLOC);
1994                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.lock));
1995                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_0, LIBNDR_FLAG_REF_ALLOC);
1996                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
1997         }
1998         return NDR_ERR_SUCCESS;
1999 }
2000 
2001 _PUBLIC_ void ndr_print_svcctl_UnlockServiceDatabase(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_UnlockServiceDatabase *r)
     /* [<][>][^][v][top][bottom][index][help] */
2002 {
2003         ndr_print_struct(ndr, name, "svcctl_UnlockServiceDatabase");
2004         ndr->depth++;
2005         if (flags & NDR_SET_VALUES) {
2006                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2007         }
2008         if (flags & NDR_IN) {
2009                 ndr_print_struct(ndr, "in", "svcctl_UnlockServiceDatabase");
2010                 ndr->depth++;
2011                 ndr_print_ptr(ndr, "lock", r->in.lock);
2012                 ndr->depth++;
2013                 ndr_print_policy_handle(ndr, "lock", r->in.lock);
2014                 ndr->depth--;
2015                 ndr->depth--;
2016         }
2017         if (flags & NDR_OUT) {
2018                 ndr_print_struct(ndr, "out", "svcctl_UnlockServiceDatabase");
2019                 ndr->depth++;
2020                 ndr_print_ptr(ndr, "lock", r->out.lock);
2021                 ndr->depth++;
2022                 ndr_print_policy_handle(ndr, "lock", r->out.lock);
2023                 ndr->depth--;
2024                 ndr_print_WERROR(ndr, "result", r->out.result);
2025                 ndr->depth--;
2026         }
2027         ndr->depth--;
2028 }
2029 
2030 static enum ndr_err_code ndr_push_svcctl_NotifyBootConfigStatus(struct ndr_push *ndr, int flags, const struct svcctl_NotifyBootConfigStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
2031 {
2032         if (flags & NDR_IN) {
2033         }
2034         if (flags & NDR_OUT) {
2035                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2036         }
2037         return NDR_ERR_SUCCESS;
2038 }
2039 
2040 static enum ndr_err_code ndr_pull_svcctl_NotifyBootConfigStatus(struct ndr_pull *ndr, int flags, struct svcctl_NotifyBootConfigStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
2041 {
2042         if (flags & NDR_IN) {
2043         }
2044         if (flags & NDR_OUT) {
2045                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2046         }
2047         return NDR_ERR_SUCCESS;
2048 }
2049 
2050 _PUBLIC_ void ndr_print_svcctl_NotifyBootConfigStatus(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_NotifyBootConfigStatus *r)
     /* [<][>][^][v][top][bottom][index][help] */
2051 {
2052         ndr_print_struct(ndr, name, "svcctl_NotifyBootConfigStatus");
2053         ndr->depth++;
2054         if (flags & NDR_SET_VALUES) {
2055                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2056         }
2057         if (flags & NDR_IN) {
2058                 ndr_print_struct(ndr, "in", "svcctl_NotifyBootConfigStatus");
2059                 ndr->depth++;
2060                 ndr->depth--;
2061         }
2062         if (flags & NDR_OUT) {
2063                 ndr_print_struct(ndr, "out", "svcctl_NotifyBootConfigStatus");
2064                 ndr->depth++;
2065                 ndr_print_WERROR(ndr, "result", r->out.result);
2066                 ndr->depth--;
2067         }
2068         ndr->depth--;
2069 }
2070 
2071 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsW(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2072 {
2073         if (flags & NDR_IN) {
2074                 if (r->in.handle == NULL) {
2075                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2076                 }
2077                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2078                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
2079                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
2080                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
2081         }
2082         if (flags & NDR_OUT) {
2083                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2084         }
2085         return NDR_ERR_SUCCESS;
2086 }
2087 
2088 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsW(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2089 {
2090         TALLOC_CTX *_mem_save_handle_0;
2091         if (flags & NDR_IN) {
2092                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2093                         NDR_PULL_ALLOC(ndr, r->in.handle);
2094                 }
2095                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2096                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2097                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2098                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2099                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
2100                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
2101                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
2102         }
2103         if (flags & NDR_OUT) {
2104                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2105         }
2106         return NDR_ERR_SUCCESS;
2107 }
2108 
2109 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2110 {
2111         ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsW");
2112         ndr->depth++;
2113         if (flags & NDR_SET_VALUES) {
2114                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2115         }
2116         if (flags & NDR_IN) {
2117                 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsW");
2118                 ndr->depth++;
2119                 ndr_print_ptr(ndr, "handle", r->in.handle);
2120                 ndr->depth++;
2121                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2122                 ndr->depth--;
2123                 ndr_print_uint32(ndr, "bits", r->in.bits);
2124                 ndr_print_uint32(ndr, "bitson", r->in.bitson);
2125                 ndr_print_uint32(ndr, "immediate", r->in.immediate);
2126                 ndr->depth--;
2127         }
2128         if (flags & NDR_OUT) {
2129                 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsW");
2130                 ndr->depth++;
2131                 ndr_print_WERROR(ndr, "result", r->out.result);
2132                 ndr->depth--;
2133         }
2134         ndr->depth--;
2135 }
2136 
2137 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2138 {
2139         if (flags & NDR_IN) {
2140                 if (r->in.handle == NULL) {
2141                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2142                 }
2143                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2144                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2145                 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2146                 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2147                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
2148                 if (r->in.binary_path) {
2149                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2150                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2151                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2152                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2153                 }
2154                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
2155                 if (r->in.load_order_group) {
2156                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2157                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2158                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
2159                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2160                 }
2161                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2162                 if (r->in.dependencies) {
2163                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2164                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2165                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
2166                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2167                 }
2168                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2169                 if (r->in.service_start_name) {
2170                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2171                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2172                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2173                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2174                 }
2175                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2176                 if (r->in.password) {
2177                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2178                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2179                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
2180                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2181                 }
2182                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
2183                 if (r->in.display_name) {
2184                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2185                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2186                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
2187                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2188                 }
2189         }
2190         if (flags & NDR_OUT) {
2191                 if (r->out.tag_id == NULL) {
2192                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2193                 }
2194                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
2195                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2196         }
2197         return NDR_ERR_SUCCESS;
2198 }
2199 
2200 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2201 {
2202         uint32_t _ptr_binary_path;
2203         uint32_t _ptr_load_order_group;
2204         uint32_t _ptr_dependencies;
2205         uint32_t _ptr_service_start_name;
2206         uint32_t _ptr_password;
2207         uint32_t _ptr_display_name;
2208         TALLOC_CTX *_mem_save_handle_0;
2209         TALLOC_CTX *_mem_save_binary_path_0;
2210         TALLOC_CTX *_mem_save_load_order_group_0;
2211         TALLOC_CTX *_mem_save_tag_id_0;
2212         TALLOC_CTX *_mem_save_dependencies_0;
2213         TALLOC_CTX *_mem_save_service_start_name_0;
2214         TALLOC_CTX *_mem_save_password_0;
2215         TALLOC_CTX *_mem_save_display_name_0;
2216         if (flags & NDR_IN) {
2217                 ZERO_STRUCT(r->out);
2218 
2219                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2220                         NDR_PULL_ALLOC(ndr, r->in.handle);
2221                 }
2222                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2223                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2224                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2225                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2226                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2227                 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2228                 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2229                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
2230                 if (_ptr_binary_path) {
2231                         NDR_PULL_ALLOC(ndr, r->in.binary_path);
2232                 } else {
2233                         r->in.binary_path = NULL;
2234                 }
2235                 if (r->in.binary_path) {
2236                         _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
2237                         NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
2238                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2239                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2240                         if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2241                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
2242                         }
2243                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2244                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
2245                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
2246                 }
2247                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
2248                 if (_ptr_load_order_group) {
2249                         NDR_PULL_ALLOC(ndr, r->in.load_order_group);
2250                 } else {
2251                         r->in.load_order_group = NULL;
2252                 }
2253                 if (r->in.load_order_group) {
2254                         _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
2255                         NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
2256                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
2257                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
2258                         if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
2259                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
2260                         }
2261                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
2262                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
2263                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
2264                 }
2265                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2266                 if (_ptr_dependencies) {
2267                         NDR_PULL_ALLOC(ndr, r->in.dependencies);
2268                 } else {
2269                         r->in.dependencies = NULL;
2270                 }
2271                 if (r->in.dependencies) {
2272                         _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2273                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2274                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2275                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
2276                         if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
2277                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
2278                         }
2279                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
2280                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
2281                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2282                 }
2283                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2284                 if (_ptr_service_start_name) {
2285                         NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2286                 } else {
2287                         r->in.service_start_name = NULL;
2288                 }
2289                 if (r->in.service_start_name) {
2290                         _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2291                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2292                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2293                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2294                         if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2295                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
2296                         }
2297                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2298                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
2299                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2300                 }
2301                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2302                 if (_ptr_password) {
2303                         NDR_PULL_ALLOC(ndr, r->in.password);
2304                 } else {
2305                         r->in.password = NULL;
2306                 }
2307                 if (r->in.password) {
2308                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2309                         NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2310                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2311                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
2312                         if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
2313                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
2314                         }
2315                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
2316                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
2317                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2318                 }
2319                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
2320                 if (_ptr_display_name) {
2321                         NDR_PULL_ALLOC(ndr, r->in.display_name);
2322                 } else {
2323                         r->in.display_name = NULL;
2324                 }
2325                 if (r->in.display_name) {
2326                         _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2327                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
2328                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
2329                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
2330                         if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
2331                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
2332                         }
2333                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
2334                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
2335                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
2336                 }
2337                 NDR_PULL_ALLOC(ndr, r->out.tag_id);
2338                 ZERO_STRUCTP(r->out.tag_id);
2339         }
2340         if (flags & NDR_OUT) {
2341                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2342                         NDR_PULL_ALLOC(ndr, r->out.tag_id);
2343                 }
2344                 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
2345                 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
2346                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
2347                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
2348                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2349         }
2350         return NDR_ERR_SUCCESS;
2351 }
2352 
2353 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2354 {
2355         ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigW");
2356         ndr->depth++;
2357         if (flags & NDR_SET_VALUES) {
2358                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2359         }
2360         if (flags & NDR_IN) {
2361                 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigW");
2362                 ndr->depth++;
2363                 ndr_print_ptr(ndr, "handle", r->in.handle);
2364                 ndr->depth++;
2365                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
2366                 ndr->depth--;
2367                 ndr_print_uint32(ndr, "type", r->in.type);
2368                 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2369                 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2370                 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
2371                 ndr->depth++;
2372                 if (r->in.binary_path) {
2373                         ndr_print_string(ndr, "binary_path", r->in.binary_path);
2374                 }
2375                 ndr->depth--;
2376                 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
2377                 ndr->depth++;
2378                 if (r->in.load_order_group) {
2379                         ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
2380                 }
2381                 ndr->depth--;
2382                 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2383                 ndr->depth++;
2384                 if (r->in.dependencies) {
2385                         ndr_print_string(ndr, "dependencies", r->in.dependencies);
2386                 }
2387                 ndr->depth--;
2388                 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2389                 ndr->depth++;
2390                 if (r->in.service_start_name) {
2391                         ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2392                 }
2393                 ndr->depth--;
2394                 ndr_print_ptr(ndr, "password", r->in.password);
2395                 ndr->depth++;
2396                 if (r->in.password) {
2397                         ndr_print_string(ndr, "password", r->in.password);
2398                 }
2399                 ndr->depth--;
2400                 ndr_print_ptr(ndr, "display_name", r->in.display_name);
2401                 ndr->depth++;
2402                 if (r->in.display_name) {
2403                         ndr_print_string(ndr, "display_name", r->in.display_name);
2404                 }
2405                 ndr->depth--;
2406                 ndr->depth--;
2407         }
2408         if (flags & NDR_OUT) {
2409                 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigW");
2410                 ndr->depth++;
2411                 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
2412                 ndr->depth++;
2413                 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
2414                 ndr->depth--;
2415                 ndr_print_WERROR(ndr, "result", r->out.result);
2416                 ndr->depth--;
2417         }
2418         ndr->depth--;
2419 }
2420 
2421 static enum ndr_err_code ndr_push_svcctl_CreateServiceW(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2422 {
2423         if (flags & NDR_IN) {
2424                 if (r->in.scmanager_handle == NULL) {
2425                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2426                 }
2427                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2428                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2429                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2430                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
2431                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2432                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
2433                 if (r->in.DisplayName) {
2434                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2435                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2436                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
2437                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2438                 }
2439                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
2440                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2441                 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
2442                 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
2443                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2444                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2445                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
2446                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2447                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
2448                 if (r->in.LoadOrderGroupKey) {
2449                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2450                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2451                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
2452                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2453                 }
2454                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.TagId));
2455                 if (r->in.TagId) {
2456                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.TagId));
2457                 }
2458                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
2459                 if (r->in.dependencies) {
2460                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2461                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, r->in.dependencies_size));
2462                 }
2463                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.dependencies_size));
2464                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
2465                 if (r->in.service_start_name) {
2466                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2467                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2468                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
2469                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2470                 }
2471                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
2472                 if (r->in.password) {
2473                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2474                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.password, r->in.password_size));
2475                 }
2476                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.password_size));
2477         }
2478         if (flags & NDR_OUT) {
2479                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
2480                 if (r->out.TagId) {
2481                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
2482                 }
2483                 if (r->out.handle == NULL) {
2484                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2485                 }
2486                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2487                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2488         }
2489         return NDR_ERR_SUCCESS;
2490 }
2491 
2492 static enum ndr_err_code ndr_pull_svcctl_CreateServiceW(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2493 {
2494         uint32_t _ptr_DisplayName;
2495         uint32_t _ptr_LoadOrderGroupKey;
2496         uint32_t _ptr_TagId;
2497         uint32_t _ptr_dependencies;
2498         uint32_t _ptr_service_start_name;
2499         uint32_t _ptr_password;
2500         TALLOC_CTX *_mem_save_scmanager_handle_0;
2501         TALLOC_CTX *_mem_save_DisplayName_0;
2502         TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
2503         TALLOC_CTX *_mem_save_TagId_0;
2504         TALLOC_CTX *_mem_save_dependencies_0;
2505         TALLOC_CTX *_mem_save_service_start_name_0;
2506         TALLOC_CTX *_mem_save_password_0;
2507         TALLOC_CTX *_mem_save_handle_0;
2508         if (flags & NDR_IN) {
2509                 ZERO_STRUCT(r->out);
2510 
2511                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2512                         NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
2513                 }
2514                 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2515                 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
2516                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
2517                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
2518                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
2519                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
2520                 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
2521                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
2522                 }
2523                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
2524                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
2525                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
2526                 if (_ptr_DisplayName) {
2527                         NDR_PULL_ALLOC(ndr, r->in.DisplayName);
2528                 } else {
2529                         r->in.DisplayName = NULL;
2530                 }
2531                 if (r->in.DisplayName) {
2532                         _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
2533                         NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
2534                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
2535                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
2536                         if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
2537                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
2538                         }
2539                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
2540                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
2541                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
2542                 }
2543                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
2544                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2545                 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
2546                 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
2547                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
2548                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
2549                 if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
2550                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
2551                 }
2552                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
2553                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
2554                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
2555                 if (_ptr_LoadOrderGroupKey) {
2556                         NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
2557                 } else {
2558                         r->in.LoadOrderGroupKey = NULL;
2559                 }
2560                 if (r->in.LoadOrderGroupKey) {
2561                         _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
2562                         NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
2563                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
2564                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
2565                         if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
2566                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
2567                         }
2568                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
2569                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
2570                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
2571                 }
2572                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2573                 if (_ptr_TagId) {
2574                         NDR_PULL_ALLOC(ndr, r->in.TagId);
2575                 } else {
2576                         r->in.TagId = NULL;
2577                 }
2578                 if (r->in.TagId) {
2579                         _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2580                         NDR_PULL_SET_MEM_CTX(ndr, r->in.TagId, 0);
2581                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.TagId));
2582                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2583                 }
2584                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
2585                 if (_ptr_dependencies) {
2586                         NDR_PULL_ALLOC(ndr, r->in.dependencies);
2587                 } else {
2588                         r->in.dependencies = NULL;
2589                 }
2590                 if (r->in.dependencies) {
2591                         _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
2592                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
2593                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
2594                         NDR_PULL_ALLOC_N(ndr, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies));
2595                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.dependencies, ndr_get_array_size(ndr, &r->in.dependencies)));
2596                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
2597                 }
2598                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.dependencies_size));
2599                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
2600                 if (_ptr_service_start_name) {
2601                         NDR_PULL_ALLOC(ndr, r->in.service_start_name);
2602                 } else {
2603                         r->in.service_start_name = NULL;
2604                 }
2605                 if (r->in.service_start_name) {
2606                         _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2607                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
2608                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
2609                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
2610                         if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
2611                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
2612                         }
2613                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
2614                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
2615                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
2616                 }
2617                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
2618                 if (_ptr_password) {
2619                         NDR_PULL_ALLOC(ndr, r->in.password);
2620                 } else {
2621                         r->in.password = NULL;
2622                 }
2623                 if (r->in.password) {
2624                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
2625                         NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
2626                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
2627                         NDR_PULL_ALLOC_N(ndr, r->in.password, ndr_get_array_size(ndr, &r->in.password));
2628                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.password, ndr_get_array_size(ndr, &r->in.password)));
2629                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
2630                 }
2631                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.password_size));
2632                 NDR_PULL_ALLOC(ndr, r->out.handle);
2633                 ZERO_STRUCTP(r->out.handle);
2634                 if (r->in.dependencies) {
2635                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.dependencies, r->in.dependencies_size));
2636                 }
2637                 if (r->in.password) {
2638                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.password, r->in.password_size));
2639                 }
2640         }
2641         if (flags & NDR_OUT) {
2642                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
2643                 if (_ptr_TagId) {
2644                         NDR_PULL_ALLOC(ndr, r->out.TagId);
2645                 } else {
2646                         r->out.TagId = NULL;
2647                 }
2648                 if (r->out.TagId) {
2649                         _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
2650                         NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
2651                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
2652                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
2653                 }
2654                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2655                         NDR_PULL_ALLOC(ndr, r->out.handle);
2656                 }
2657                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2658                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
2659                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
2660                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2661                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2662         }
2663         return NDR_ERR_SUCCESS;
2664 }
2665 
2666 _PUBLIC_ void ndr_print_svcctl_CreateServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2667 {
2668         ndr_print_struct(ndr, name, "svcctl_CreateServiceW");
2669         ndr->depth++;
2670         if (flags & NDR_SET_VALUES) {
2671                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2672         }
2673         if (flags & NDR_IN) {
2674                 ndr_print_struct(ndr, "in", "svcctl_CreateServiceW");
2675                 ndr->depth++;
2676                 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
2677                 ndr->depth++;
2678                 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
2679                 ndr->depth--;
2680                 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
2681                 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
2682                 ndr->depth++;
2683                 if (r->in.DisplayName) {
2684                         ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
2685                 }
2686                 ndr->depth--;
2687                 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
2688                 ndr_print_uint32(ndr, "type", r->in.type);
2689                 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
2690                 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
2691                 ndr_print_string(ndr, "binary_path", r->in.binary_path);
2692                 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2693                 ndr->depth++;
2694                 if (r->in.LoadOrderGroupKey) {
2695                         ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
2696                 }
2697                 ndr->depth--;
2698                 ndr_print_ptr(ndr, "TagId", r->in.TagId);
2699                 ndr->depth++;
2700                 if (r->in.TagId) {
2701                         ndr_print_uint32(ndr, "TagId", *r->in.TagId);
2702                 }
2703                 ndr->depth--;
2704                 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
2705                 ndr->depth++;
2706                 if (r->in.dependencies) {
2707                         ndr_print_array_uint8(ndr, "dependencies", r->in.dependencies, r->in.dependencies_size);
2708                 }
2709                 ndr->depth--;
2710                 ndr_print_uint32(ndr, "dependencies_size", r->in.dependencies_size);
2711                 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
2712                 ndr->depth++;
2713                 if (r->in.service_start_name) {
2714                         ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
2715                 }
2716                 ndr->depth--;
2717                 ndr_print_ptr(ndr, "password", r->in.password);
2718                 ndr->depth++;
2719                 if (r->in.password) {
2720                         ndr_print_array_uint8(ndr, "password", r->in.password, r->in.password_size);
2721                 }
2722                 ndr->depth--;
2723                 ndr_print_uint32(ndr, "password_size", r->in.password_size);
2724                 ndr->depth--;
2725         }
2726         if (flags & NDR_OUT) {
2727                 ndr_print_struct(ndr, "out", "svcctl_CreateServiceW");
2728                 ndr->depth++;
2729                 ndr_print_ptr(ndr, "TagId", r->out.TagId);
2730                 ndr->depth++;
2731                 if (r->out.TagId) {
2732                         ndr_print_uint32(ndr, "TagId", *r->out.TagId);
2733                 }
2734                 ndr->depth--;
2735                 ndr_print_ptr(ndr, "handle", r->out.handle);
2736                 ndr->depth++;
2737                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
2738                 ndr->depth--;
2739                 ndr_print_WERROR(ndr, "result", r->out.result);
2740                 ndr->depth--;
2741         }
2742         ndr->depth--;
2743 }
2744 
2745 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2746 {
2747         if (flags & NDR_IN) {
2748                 if (r->in.service == NULL) {
2749                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2750                 }
2751                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
2752                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2753                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2754         }
2755         if (flags & NDR_OUT) {
2756                 if (r->out.service_status == NULL) {
2757                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2758                 }
2759                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2760                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.offered));
2761                 if (r->out.needed == NULL) {
2762                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2763                 }
2764                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
2765                 if (r->out.services_returned == NULL) {
2766                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2767                 }
2768                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2769                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2770         }
2771         return NDR_ERR_SUCCESS;
2772 }
2773 
2774 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2775 {
2776         TALLOC_CTX *_mem_save_service_0;
2777         TALLOC_CTX *_mem_save_needed_0;
2778         TALLOC_CTX *_mem_save_services_returned_0;
2779         if (flags & NDR_IN) {
2780                 ZERO_STRUCT(r->out);
2781 
2782                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2783                         NDR_PULL_ALLOC(ndr, r->in.service);
2784                 }
2785                 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
2786                 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
2787                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
2788                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
2789                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2790                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
2791                 if (r->in.offered > 0x40000) {
2792                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2793                 }
2794                 NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.offered);
2795                 memset(r->out.service_status, 0, (r->in.offered) * sizeof(*r->out.service_status));
2796                 NDR_PULL_ALLOC(ndr, r->out.needed);
2797                 ZERO_STRUCTP(r->out.needed);
2798                 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2799                 ZERO_STRUCTP(r->out.services_returned);
2800         }
2801         if (flags & NDR_OUT) {
2802                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
2803                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2804                         NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
2805                 }
2806                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status)));
2807                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2808                         NDR_PULL_ALLOC(ndr, r->out.needed);
2809                 }
2810                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2811                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
2812                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
2813                 if (*r->out.needed > 0x40000) {
2814                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2815                 }
2816                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
2817                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2818                         NDR_PULL_ALLOC(ndr, r->out.services_returned);
2819                 }
2820                 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2821                 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2822                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2823                 if (*r->out.services_returned > 0x40000) {
2824                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2825                 }
2826                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2827                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2828                 if (r->out.service_status) {
2829                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service_status, r->in.offered));
2830                 }
2831         }
2832         return NDR_ERR_SUCCESS;
2833 }
2834 
2835 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2836 {
2837         ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesW");
2838         ndr->depth++;
2839         if (flags & NDR_SET_VALUES) {
2840                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
2841         }
2842         if (flags & NDR_IN) {
2843                 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesW");
2844                 ndr->depth++;
2845                 ndr_print_ptr(ndr, "service", r->in.service);
2846                 ndr->depth++;
2847                 ndr_print_policy_handle(ndr, "service", r->in.service);
2848                 ndr->depth--;
2849                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
2850                 ndr_print_uint32(ndr, "offered", r->in.offered);
2851                 ndr->depth--;
2852         }
2853         if (flags & NDR_OUT) {
2854                 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesW");
2855                 ndr->depth++;
2856                 ndr_print_ptr(ndr, "service_status", r->out.service_status);
2857                 ndr->depth++;
2858                 ndr_print_array_uint8(ndr, "service_status", r->out.service_status, r->in.offered);
2859                 ndr->depth--;
2860                 ndr_print_ptr(ndr, "needed", r->out.needed);
2861                 ndr->depth++;
2862                 ndr_print_uint32(ndr, "needed", *r->out.needed);
2863                 ndr->depth--;
2864                 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
2865                 ndr->depth++;
2866                 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
2867                 ndr->depth--;
2868                 ndr_print_WERROR(ndr, "result", r->out.result);
2869                 ndr->depth--;
2870         }
2871         ndr->depth--;
2872 }
2873 
2874 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2875 {
2876         if (flags & NDR_IN) {
2877                 if (r->in.handle == NULL) {
2878                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2879                 }
2880                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2881                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
2882                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
2883                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2884                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
2885                 if (r->in.resume_handle) {
2886                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
2887                 }
2888         }
2889         if (flags & NDR_OUT) {
2890                 if (r->out.service == NULL) {
2891                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2892                 }
2893                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
2894                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
2895                 if (r->out.needed == NULL) {
2896                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2897                 }
2898                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
2899                 if (r->out.services_returned == NULL) {
2900                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
2901                 }
2902                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
2903                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
2904                 if (r->out.resume_handle) {
2905                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
2906                 }
2907                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
2908         }
2909         return NDR_ERR_SUCCESS;
2910 }
2911 
2912 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
2913 {
2914         uint32_t _ptr_resume_handle;
2915         TALLOC_CTX *_mem_save_handle_0;
2916         TALLOC_CTX *_mem_save_needed_0;
2917         TALLOC_CTX *_mem_save_services_returned_0;
2918         TALLOC_CTX *_mem_save_resume_handle_0;
2919         if (flags & NDR_IN) {
2920                 ZERO_STRUCT(r->out);
2921 
2922                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2923                         NDR_PULL_ALLOC(ndr, r->in.handle);
2924                 }
2925                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2926                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
2927                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
2928                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
2929                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
2930                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
2931                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
2932                 if (r->in.offered > 0x40000) {
2933                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2934                 }
2935                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2936                 if (_ptr_resume_handle) {
2937                         NDR_PULL_ALLOC(ndr, r->in.resume_handle);
2938                 } else {
2939                         r->in.resume_handle = NULL;
2940                 }
2941                 if (r->in.resume_handle) {
2942                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2943                         NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
2944                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
2945                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2946                 }
2947                 NDR_PULL_ALLOC_N(ndr, r->out.service, r->in.offered);
2948                 memset(r->out.service, 0, (r->in.offered) * sizeof(*r->out.service));
2949                 NDR_PULL_ALLOC(ndr, r->out.needed);
2950                 ZERO_STRUCTP(r->out.needed);
2951                 NDR_PULL_ALLOC(ndr, r->out.services_returned);
2952                 ZERO_STRUCTP(r->out.services_returned);
2953         }
2954         if (flags & NDR_OUT) {
2955                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
2956                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2957                         NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
2958                 }
2959                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
2960                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2961                         NDR_PULL_ALLOC(ndr, r->out.needed);
2962                 }
2963                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
2964                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
2965                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
2966                 if (*r->out.needed > 0x40000) {
2967                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2968                 }
2969                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
2970                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
2971                         NDR_PULL_ALLOC(ndr, r->out.services_returned);
2972                 }
2973                 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
2974                 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
2975                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
2976                 if (*r->out.services_returned > 0x40000) {
2977                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
2978                 }
2979                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
2980                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
2981                 if (_ptr_resume_handle) {
2982                         NDR_PULL_ALLOC(ndr, r->out.resume_handle);
2983                 } else {
2984                         r->out.resume_handle = NULL;
2985                 }
2986                 if (r->out.resume_handle) {
2987                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
2988                         NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
2989                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
2990                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
2991                 }
2992                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
2993                 if (r->out.service) {
2994                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
2995                 }
2996         }
2997         return NDR_ERR_SUCCESS;
2998 }
2999 
3000 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3001 {
3002         ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusW");
3003         ndr->depth++;
3004         if (flags & NDR_SET_VALUES) {
3005                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3006         }
3007         if (flags & NDR_IN) {
3008                 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusW");
3009                 ndr->depth++;
3010                 ndr_print_ptr(ndr, "handle", r->in.handle);
3011                 ndr->depth++;
3012                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3013                 ndr->depth--;
3014                 ndr_print_uint32(ndr, "type", r->in.type);
3015                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
3016                 ndr_print_uint32(ndr, "offered", r->in.offered);
3017                 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
3018                 ndr->depth++;
3019                 if (r->in.resume_handle) {
3020                         ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
3021                 }
3022                 ndr->depth--;
3023                 ndr->depth--;
3024         }
3025         if (flags & NDR_OUT) {
3026                 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusW");
3027                 ndr->depth++;
3028                 ndr_print_ptr(ndr, "service", r->out.service);
3029                 ndr->depth++;
3030                 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
3031                 ndr->depth--;
3032                 ndr_print_ptr(ndr, "needed", r->out.needed);
3033                 ndr->depth++;
3034                 ndr_print_uint32(ndr, "needed", *r->out.needed);
3035                 ndr->depth--;
3036                 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
3037                 ndr->depth++;
3038                 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
3039                 ndr->depth--;
3040                 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
3041                 ndr->depth++;
3042                 if (r->out.resume_handle) {
3043                         ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
3044                 }
3045                 ndr->depth--;
3046                 ndr_print_WERROR(ndr, "result", r->out.result);
3047                 ndr->depth--;
3048         }
3049         ndr->depth--;
3050 }
3051 
3052 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerW(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3053 {
3054         if (flags & NDR_IN) {
3055                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
3056                 if (r->in.MachineName) {
3057                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3058                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3059                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
3060                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3061                 }
3062                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
3063                 if (r->in.DatabaseName) {
3064                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3065                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3066                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
3067                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3068                 }
3069                 NDR_CHECK(ndr_push_svcctl_MgrAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3070         }
3071         if (flags & NDR_OUT) {
3072                 if (r->out.handle == NULL) {
3073                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3074                 }
3075                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3076                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3077         }
3078         return NDR_ERR_SUCCESS;
3079 }
3080 
3081 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerW(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3082 {
3083         uint32_t _ptr_MachineName;
3084         uint32_t _ptr_DatabaseName;
3085         TALLOC_CTX *_mem_save_MachineName_0;
3086         TALLOC_CTX *_mem_save_DatabaseName_0;
3087         TALLOC_CTX *_mem_save_handle_0;
3088         if (flags & NDR_IN) {
3089                 ZERO_STRUCT(r->out);
3090 
3091                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
3092                 if (_ptr_MachineName) {
3093                         NDR_PULL_ALLOC(ndr, r->in.MachineName);
3094                 } else {
3095                         r->in.MachineName = NULL;
3096                 }
3097                 if (r->in.MachineName) {
3098                         _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3099                         NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
3100                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
3101                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
3102                         if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
3103                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
3104                         }
3105                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
3106                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
3107                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
3108                 }
3109                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
3110                 if (_ptr_DatabaseName) {
3111                         NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
3112                 } else {
3113                         r->in.DatabaseName = NULL;
3114                 }
3115                 if (r->in.DatabaseName) {
3116                         _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
3117                         NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
3118                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
3119                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
3120                         if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
3121                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
3122                         }
3123                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
3124                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
3125                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
3126                 }
3127                 NDR_CHECK(ndr_pull_svcctl_MgrAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3128                 NDR_PULL_ALLOC(ndr, r->out.handle);
3129                 ZERO_STRUCTP(r->out.handle);
3130         }
3131         if (flags & NDR_OUT) {
3132                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3133                         NDR_PULL_ALLOC(ndr, r->out.handle);
3134                 }
3135                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3136                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3137                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3138                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3139                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3140         }
3141         return NDR_ERR_SUCCESS;
3142 }
3143 
3144 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3145 {
3146         ndr_print_struct(ndr, name, "svcctl_OpenSCManagerW");
3147         ndr->depth++;
3148         if (flags & NDR_SET_VALUES) {
3149                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3150         }
3151         if (flags & NDR_IN) {
3152                 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerW");
3153                 ndr->depth++;
3154                 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
3155                 ndr->depth++;
3156                 if (r->in.MachineName) {
3157                         ndr_print_string(ndr, "MachineName", r->in.MachineName);
3158                 }
3159                 ndr->depth--;
3160                 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
3161                 ndr->depth++;
3162                 if (r->in.DatabaseName) {
3163                         ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
3164                 }
3165                 ndr->depth--;
3166                 ndr_print_svcctl_MgrAccessMask(ndr, "access_mask", r->in.access_mask);
3167                 ndr->depth--;
3168         }
3169         if (flags & NDR_OUT) {
3170                 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerW");
3171                 ndr->depth++;
3172                 ndr_print_ptr(ndr, "handle", r->out.handle);
3173                 ndr->depth++;
3174                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3175                 ndr->depth--;
3176                 ndr_print_WERROR(ndr, "result", r->out.result);
3177                 ndr->depth--;
3178         }
3179         ndr->depth--;
3180 }
3181 
3182 static enum ndr_err_code ndr_push_svcctl_OpenServiceW(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3183 {
3184         if (flags & NDR_IN) {
3185                 if (r->in.scmanager_handle == NULL) {
3186                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3187                 }
3188                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3189                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3190                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3191                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
3192                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3193                 NDR_CHECK(ndr_push_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, r->in.access_mask));
3194         }
3195         if (flags & NDR_OUT) {
3196                 if (r->out.handle == NULL) {
3197                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3198                 }
3199                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3200                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3201         }
3202         return NDR_ERR_SUCCESS;
3203 }
3204 
3205 static enum ndr_err_code ndr_pull_svcctl_OpenServiceW(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3206 {
3207         TALLOC_CTX *_mem_save_scmanager_handle_0;
3208         TALLOC_CTX *_mem_save_handle_0;
3209         if (flags & NDR_IN) {
3210                 ZERO_STRUCT(r->out);
3211 
3212                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3213                         NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
3214                 }
3215                 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3216                 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
3217                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
3218                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
3219                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
3220                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
3221                 if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
3222                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
3223                 }
3224                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
3225                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
3226                 NDR_CHECK(ndr_pull_svcctl_ServiceAccessMask(ndr, NDR_SCALARS, &r->in.access_mask));
3227                 NDR_PULL_ALLOC(ndr, r->out.handle);
3228                 ZERO_STRUCTP(r->out.handle);
3229         }
3230         if (flags & NDR_OUT) {
3231                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3232                         NDR_PULL_ALLOC(ndr, r->out.handle);
3233                 }
3234                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3235                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
3236                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
3237                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3238                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3239         }
3240         return NDR_ERR_SUCCESS;
3241 }
3242 
3243 _PUBLIC_ void ndr_print_svcctl_OpenServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3244 {
3245         ndr_print_struct(ndr, name, "svcctl_OpenServiceW");
3246         ndr->depth++;
3247         if (flags & NDR_SET_VALUES) {
3248                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3249         }
3250         if (flags & NDR_IN) {
3251                 ndr_print_struct(ndr, "in", "svcctl_OpenServiceW");
3252                 ndr->depth++;
3253                 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
3254                 ndr->depth++;
3255                 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
3256                 ndr->depth--;
3257                 ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
3258                 ndr_print_svcctl_ServiceAccessMask(ndr, "access_mask", r->in.access_mask);
3259                 ndr->depth--;
3260         }
3261         if (flags & NDR_OUT) {
3262                 ndr_print_struct(ndr, "out", "svcctl_OpenServiceW");
3263                 ndr->depth++;
3264                 ndr_print_ptr(ndr, "handle", r->out.handle);
3265                 ndr->depth++;
3266                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
3267                 ndr->depth--;
3268                 ndr_print_WERROR(ndr, "result", r->out.result);
3269                 ndr->depth--;
3270         }
3271         ndr->depth--;
3272 }
3273 
3274 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3275 {
3276         if (flags & NDR_IN) {
3277                 if (r->in.handle == NULL) {
3278                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3279                 }
3280                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3281                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3282         }
3283         if (flags & NDR_OUT) {
3284                 if (r->out.query == NULL) {
3285                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3286                 }
3287                 NDR_CHECK(ndr_push_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3288                 if (r->out.needed == NULL) {
3289                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3290                 }
3291                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3292                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3293         }
3294         return NDR_ERR_SUCCESS;
3295 }
3296 
3297 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3298 {
3299         TALLOC_CTX *_mem_save_handle_0;
3300         TALLOC_CTX *_mem_save_query_0;
3301         TALLOC_CTX *_mem_save_needed_0;
3302         if (flags & NDR_IN) {
3303                 ZERO_STRUCT(r->out);
3304 
3305                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3306                         NDR_PULL_ALLOC(ndr, r->in.handle);
3307                 }
3308                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3309                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3310                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3311                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3312                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3313                 if (r->in.offered > 8192) {
3314                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3315                 }
3316                 NDR_PULL_ALLOC(ndr, r->out.query);
3317                 ZERO_STRUCTP(r->out.query);
3318                 NDR_PULL_ALLOC(ndr, r->out.needed);
3319                 ZERO_STRUCTP(r->out.needed);
3320         }
3321         if (flags & NDR_OUT) {
3322                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3323                         NDR_PULL_ALLOC(ndr, r->out.query);
3324                 }
3325                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
3326                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
3327                 NDR_CHECK(ndr_pull_QUERY_SERVICE_CONFIG(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
3328                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
3329                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3330                         NDR_PULL_ALLOC(ndr, r->out.needed);
3331                 }
3332                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3333                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3334                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3335                 if (*r->out.needed > 8192) {
3336                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3337                 }
3338                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3339                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3340         }
3341         return NDR_ERR_SUCCESS;
3342 }
3343 
3344 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3345 {
3346         ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigW");
3347         ndr->depth++;
3348         if (flags & NDR_SET_VALUES) {
3349                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3350         }
3351         if (flags & NDR_IN) {
3352                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigW");
3353                 ndr->depth++;
3354                 ndr_print_ptr(ndr, "handle", r->in.handle);
3355                 ndr->depth++;
3356                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3357                 ndr->depth--;
3358                 ndr_print_uint32(ndr, "offered", r->in.offered);
3359                 ndr->depth--;
3360         }
3361         if (flags & NDR_OUT) {
3362                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigW");
3363                 ndr->depth++;
3364                 ndr_print_ptr(ndr, "query", r->out.query);
3365                 ndr->depth++;
3366                 ndr_print_QUERY_SERVICE_CONFIG(ndr, "query", r->out.query);
3367                 ndr->depth--;
3368                 ndr_print_ptr(ndr, "needed", r->out.needed);
3369                 ndr->depth++;
3370                 ndr_print_uint32(ndr, "needed", *r->out.needed);
3371                 ndr->depth--;
3372                 ndr_print_WERROR(ndr, "result", r->out.result);
3373                 ndr->depth--;
3374         }
3375         ndr->depth--;
3376 }
3377 
3378 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusW(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3379 {
3380         if (flags & NDR_IN) {
3381                 if (r->in.handle == NULL) {
3382                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3383                 }
3384                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3385                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
3386         }
3387         if (flags & NDR_OUT) {
3388                 if (r->out.lock_status == NULL) {
3389                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3390                 }
3391                 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3392                 if (r->out.needed == NULL) {
3393                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3394                 }
3395                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
3396                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3397         }
3398         return NDR_ERR_SUCCESS;
3399 }
3400 
3401 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusW(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3402 {
3403         TALLOC_CTX *_mem_save_handle_0;
3404         TALLOC_CTX *_mem_save_lock_status_0;
3405         TALLOC_CTX *_mem_save_needed_0;
3406         if (flags & NDR_IN) {
3407                 ZERO_STRUCT(r->out);
3408 
3409                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3410                         NDR_PULL_ALLOC(ndr, r->in.handle);
3411                 }
3412                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3413                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3414                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3415                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3416                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
3417                 NDR_PULL_ALLOC(ndr, r->out.lock_status);
3418                 ZERO_STRUCTP(r->out.lock_status);
3419                 NDR_PULL_ALLOC(ndr, r->out.needed);
3420                 ZERO_STRUCTP(r->out.needed);
3421         }
3422         if (flags & NDR_OUT) {
3423                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3424                         NDR_PULL_ALLOC(ndr, r->out.lock_status);
3425                 }
3426                 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
3427                 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
3428                 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
3429                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
3430                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3431                         NDR_PULL_ALLOC(ndr, r->out.needed);
3432                 }
3433                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
3434                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
3435                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
3436                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
3437                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3438         }
3439         return NDR_ERR_SUCCESS;
3440 }
3441 
3442 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3443 {
3444         ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusW");
3445         ndr->depth++;
3446         if (flags & NDR_SET_VALUES) {
3447                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3448         }
3449         if (flags & NDR_IN) {
3450                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusW");
3451                 ndr->depth++;
3452                 ndr_print_ptr(ndr, "handle", r->in.handle);
3453                 ndr->depth++;
3454                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3455                 ndr->depth--;
3456                 ndr_print_uint32(ndr, "offered", r->in.offered);
3457                 ndr->depth--;
3458         }
3459         if (flags & NDR_OUT) {
3460                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusW");
3461                 ndr->depth++;
3462                 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
3463                 ndr->depth++;
3464                 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
3465                 ndr->depth--;
3466                 ndr_print_ptr(ndr, "needed", r->out.needed);
3467                 ndr->depth++;
3468                 ndr_print_uint32(ndr, "needed", *r->out.needed);
3469                 ndr->depth--;
3470                 ndr_print_WERROR(ndr, "result", r->out.result);
3471                 ndr->depth--;
3472         }
3473         ndr->depth--;
3474 }
3475 
3476 static enum ndr_err_code ndr_push_svcctl_StartServiceW(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3477 {
3478         uint32_t cntr_Arguments_1;
3479         if (flags & NDR_IN) {
3480                 if (r->in.handle == NULL) {
3481                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3482                 }
3483                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3484                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3485                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
3486                 if (r->in.Arguments) {
3487                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
3488                         for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3489                                 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3490                         }
3491                         for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3492                                 NDR_CHECK(ndr_push_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3493                         }
3494                 }
3495         }
3496         if (flags & NDR_OUT) {
3497                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3498         }
3499         return NDR_ERR_SUCCESS;
3500 }
3501 
3502 static enum ndr_err_code ndr_pull_svcctl_StartServiceW(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3503 {
3504         uint32_t _ptr_Arguments;
3505         uint32_t cntr_Arguments_1;
3506         TALLOC_CTX *_mem_save_handle_0;
3507         TALLOC_CTX *_mem_save_Arguments_0;
3508         TALLOC_CTX *_mem_save_Arguments_1;
3509         if (flags & NDR_IN) {
3510                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3511                         NDR_PULL_ALLOC(ndr, r->in.handle);
3512                 }
3513                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3514                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3515                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3516                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3517                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
3518                 if (r->in.NumArgs > SC_MAX_ARGUMENTS) {
3519                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
3520                 }
3521                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
3522                 if (_ptr_Arguments) {
3523                         NDR_PULL_ALLOC(ndr, r->in.Arguments);
3524                 } else {
3525                         r->in.Arguments = NULL;
3526                 }
3527                 if (r->in.Arguments) {
3528                         _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
3529                         NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3530                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
3531                         NDR_PULL_ALLOC_N(ndr, r->in.Arguments, ndr_get_array_size(ndr, &r->in.Arguments));
3532                         _mem_save_Arguments_1 = NDR_PULL_GET_MEM_CTX(ndr);
3533                         NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
3534                         for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3535                                 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_SCALARS, &r->in.Arguments[cntr_Arguments_1]));
3536                         }
3537                         for (cntr_Arguments_1 = 0; cntr_Arguments_1 < r->in.NumArgs; cntr_Arguments_1++) {
3538                                 NDR_CHECK(ndr_pull_svcctl_ArgumentString(ndr, NDR_BUFFERS, &r->in.Arguments[cntr_Arguments_1]));
3539                         }
3540                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_1, 0);
3541                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
3542                 }
3543                 if (r->in.Arguments) {
3544                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.Arguments, r->in.NumArgs));
3545                 }
3546         }
3547         if (flags & NDR_OUT) {
3548                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3549         }
3550         return NDR_ERR_SUCCESS;
3551 }
3552 
3553 _PUBLIC_ void ndr_print_svcctl_StartServiceW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3554 {
3555         uint32_t cntr_Arguments_1;
3556         ndr_print_struct(ndr, name, "svcctl_StartServiceW");
3557         ndr->depth++;
3558         if (flags & NDR_SET_VALUES) {
3559                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3560         }
3561         if (flags & NDR_IN) {
3562                 ndr_print_struct(ndr, "in", "svcctl_StartServiceW");
3563                 ndr->depth++;
3564                 ndr_print_ptr(ndr, "handle", r->in.handle);
3565                 ndr->depth++;
3566                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3567                 ndr->depth--;
3568                 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
3569                 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
3570                 ndr->depth++;
3571                 if (r->in.Arguments) {
3572                         ndr->print(ndr, "%s: ARRAY(%d)", "Arguments", (int)r->in.NumArgs);
3573                         ndr->depth++;
3574                         for (cntr_Arguments_1=0;cntr_Arguments_1<r->in.NumArgs;cntr_Arguments_1++) {
3575                                 char *idx_1=NULL;
3576                                 if (asprintf(&idx_1, "[%d]", cntr_Arguments_1) != -1) {
3577                                         ndr_print_svcctl_ArgumentString(ndr, "Arguments", &r->in.Arguments[cntr_Arguments_1]);
3578                                         free(idx_1);
3579                                 }
3580                         }
3581                         ndr->depth--;
3582                 }
3583                 ndr->depth--;
3584                 ndr->depth--;
3585         }
3586         if (flags & NDR_OUT) {
3587                 ndr_print_struct(ndr, "out", "svcctl_StartServiceW");
3588                 ndr->depth++;
3589                 ndr_print_WERROR(ndr, "result", r->out.result);
3590                 ndr->depth--;
3591         }
3592         ndr->depth--;
3593 }
3594 
3595 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3596 {
3597         if (flags & NDR_IN) {
3598                 if (r->in.handle == NULL) {
3599                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3600                 }
3601                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3602                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3603                 if (r->in.service_name) {
3604                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3605                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3606                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3607                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3608                 }
3609                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3610                 if (r->in.display_name_length) {
3611                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3612                 }
3613         }
3614         if (flags & NDR_OUT) {
3615                 if (r->out.display_name == NULL) {
3616                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3617                 }
3618                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
3619                 if (*r->out.display_name) {
3620                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3621                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3622                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
3623                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3624                 }
3625                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3626                 if (r->out.display_name_length) {
3627                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3628                 }
3629                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3630         }
3631         return NDR_ERR_SUCCESS;
3632 }
3633 
3634 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3635 {
3636         uint32_t _ptr_service_name;
3637         uint32_t _ptr_display_name;
3638         uint32_t _ptr_display_name_length;
3639         TALLOC_CTX *_mem_save_handle_0;
3640         TALLOC_CTX *_mem_save_service_name_0;
3641         TALLOC_CTX *_mem_save_display_name_0;
3642         TALLOC_CTX *_mem_save_display_name_1;
3643         TALLOC_CTX *_mem_save_display_name_length_0;
3644         if (flags & NDR_IN) {
3645                 ZERO_STRUCT(r->out);
3646 
3647                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3648                         NDR_PULL_ALLOC(ndr, r->in.handle);
3649                 }
3650                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3651                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3652                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3653                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3654                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3655                 if (_ptr_service_name) {
3656                         NDR_PULL_ALLOC(ndr, r->in.service_name);
3657                 } else {
3658                         r->in.service_name = NULL;
3659                 }
3660                 if (r->in.service_name) {
3661                         _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3662                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3663                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3664                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3665                         if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3666                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
3667                         }
3668                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3669                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
3670                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3671                 }
3672                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3673                 if (_ptr_display_name_length) {
3674                         NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3675                 } else {
3676                         r->in.display_name_length = NULL;
3677                 }
3678                 if (r->in.display_name_length) {
3679                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3680                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3681                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3682                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3683                 }
3684                 NDR_PULL_ALLOC(ndr, r->out.display_name);
3685                 ZERO_STRUCTP(r->out.display_name);
3686         }
3687         if (flags & NDR_OUT) {
3688                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3689                         NDR_PULL_ALLOC(ndr, r->out.display_name);
3690                 }
3691                 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3692                 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
3693                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
3694                 if (_ptr_display_name) {
3695                         NDR_PULL_ALLOC(ndr, *r->out.display_name);
3696                 } else {
3697                         *r->out.display_name = NULL;
3698                 }
3699                 if (*r->out.display_name) {
3700                         _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3701                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
3702                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
3703                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
3704                         if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
3705                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
3706                         }
3707                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
3708                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
3709                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
3710                 }
3711                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
3712                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3713                 if (_ptr_display_name_length) {
3714                         NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3715                 } else {
3716                         r->out.display_name_length = NULL;
3717                 }
3718                 if (r->out.display_name_length) {
3719                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3720                         NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3721                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3722                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3723                 }
3724                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3725         }
3726         return NDR_ERR_SUCCESS;
3727 }
3728 
3729 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3730 {
3731         ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameW");
3732         ndr->depth++;
3733         if (flags & NDR_SET_VALUES) {
3734                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3735         }
3736         if (flags & NDR_IN) {
3737                 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameW");
3738                 ndr->depth++;
3739                 ndr_print_ptr(ndr, "handle", r->in.handle);
3740                 ndr->depth++;
3741                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3742                 ndr->depth--;
3743                 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3744                 ndr->depth++;
3745                 if (r->in.service_name) {
3746                         ndr_print_string(ndr, "service_name", r->in.service_name);
3747                 }
3748                 ndr->depth--;
3749                 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3750                 ndr->depth++;
3751                 if (r->in.display_name_length) {
3752                         ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3753                 }
3754                 ndr->depth--;
3755                 ndr->depth--;
3756         }
3757         if (flags & NDR_OUT) {
3758                 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameW");
3759                 ndr->depth++;
3760                 ndr_print_ptr(ndr, "display_name", r->out.display_name);
3761                 ndr->depth++;
3762                 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
3763                 ndr->depth++;
3764                 if (*r->out.display_name) {
3765                         ndr_print_string(ndr, "display_name", *r->out.display_name);
3766                 }
3767                 ndr->depth--;
3768                 ndr->depth--;
3769                 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3770                 ndr->depth++;
3771                 if (r->out.display_name_length) {
3772                         ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3773                 }
3774                 ndr->depth--;
3775                 ndr_print_WERROR(ndr, "result", r->out.result);
3776                 ndr->depth--;
3777         }
3778         ndr->depth--;
3779 }
3780 
3781 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameW(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3782 {
3783         if (flags & NDR_IN) {
3784                 if (r->in.handle == NULL) {
3785                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3786                 }
3787                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3788                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
3789                 if (r->in.service_name) {
3790                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3791                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3792                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
3793                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3794                 }
3795                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
3796                 if (r->in.display_name_length) {
3797                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
3798                 }
3799         }
3800         if (flags & NDR_OUT) {
3801                 if (r->out.key_name == NULL) {
3802                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3803                 }
3804                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
3805                 if (*r->out.key_name) {
3806                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3807                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3808                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
3809                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
3810                 }
3811                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
3812                 if (r->out.display_name_length) {
3813                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
3814                 }
3815                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3816         }
3817         return NDR_ERR_SUCCESS;
3818 }
3819 
3820 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameW(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3821 {
3822         uint32_t _ptr_service_name;
3823         uint32_t _ptr_key_name;
3824         uint32_t _ptr_display_name_length;
3825         TALLOC_CTX *_mem_save_handle_0;
3826         TALLOC_CTX *_mem_save_service_name_0;
3827         TALLOC_CTX *_mem_save_key_name_0;
3828         TALLOC_CTX *_mem_save_key_name_1;
3829         TALLOC_CTX *_mem_save_display_name_length_0;
3830         if (flags & NDR_IN) {
3831                 ZERO_STRUCT(r->out);
3832 
3833                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3834                         NDR_PULL_ALLOC(ndr, r->in.handle);
3835                 }
3836                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3837                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3838                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3839                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3840                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
3841                 if (_ptr_service_name) {
3842                         NDR_PULL_ALLOC(ndr, r->in.service_name);
3843                 } else {
3844                         r->in.service_name = NULL;
3845                 }
3846                 if (r->in.service_name) {
3847                         _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3848                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
3849                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
3850                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
3851                         if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
3852                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
3853                         }
3854                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
3855                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
3856                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
3857                 }
3858                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3859                 if (_ptr_display_name_length) {
3860                         NDR_PULL_ALLOC(ndr, r->in.display_name_length);
3861                 } else {
3862                         r->in.display_name_length = NULL;
3863                 }
3864                 if (r->in.display_name_length) {
3865                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3866                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
3867                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
3868                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3869                 }
3870                 NDR_PULL_ALLOC(ndr, r->out.key_name);
3871                 ZERO_STRUCTP(r->out.key_name);
3872         }
3873         if (flags & NDR_OUT) {
3874                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3875                         NDR_PULL_ALLOC(ndr, r->out.key_name);
3876                 }
3877                 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3878                 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
3879                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
3880                 if (_ptr_key_name) {
3881                         NDR_PULL_ALLOC(ndr, *r->out.key_name);
3882                 } else {
3883                         *r->out.key_name = NULL;
3884                 }
3885                 if (*r->out.key_name) {
3886                         _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3887                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
3888                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
3889                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
3890                         if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
3891                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
3892                         }
3893                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
3894                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
3895                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
3896                 }
3897                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
3898                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
3899                 if (_ptr_display_name_length) {
3900                         NDR_PULL_ALLOC(ndr, r->out.display_name_length);
3901                 } else {
3902                         r->out.display_name_length = NULL;
3903                 }
3904                 if (r->out.display_name_length) {
3905                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
3906                         NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
3907                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
3908                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
3909                 }
3910                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
3911         }
3912         return NDR_ERR_SUCCESS;
3913 }
3914 
3915 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameW *r)
     /* [<][>][^][v][top][bottom][index][help] */
3916 {
3917         ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameW");
3918         ndr->depth++;
3919         if (flags & NDR_SET_VALUES) {
3920                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
3921         }
3922         if (flags & NDR_IN) {
3923                 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameW");
3924                 ndr->depth++;
3925                 ndr_print_ptr(ndr, "handle", r->in.handle);
3926                 ndr->depth++;
3927                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
3928                 ndr->depth--;
3929                 ndr_print_ptr(ndr, "service_name", r->in.service_name);
3930                 ndr->depth++;
3931                 if (r->in.service_name) {
3932                         ndr_print_string(ndr, "service_name", r->in.service_name);
3933                 }
3934                 ndr->depth--;
3935                 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
3936                 ndr->depth++;
3937                 if (r->in.display_name_length) {
3938                         ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
3939                 }
3940                 ndr->depth--;
3941                 ndr->depth--;
3942         }
3943         if (flags & NDR_OUT) {
3944                 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameW");
3945                 ndr->depth++;
3946                 ndr_print_ptr(ndr, "key_name", r->out.key_name);
3947                 ndr->depth++;
3948                 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
3949                 ndr->depth++;
3950                 if (*r->out.key_name) {
3951                         ndr_print_string(ndr, "key_name", *r->out.key_name);
3952                 }
3953                 ndr->depth--;
3954                 ndr->depth--;
3955                 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
3956                 ndr->depth++;
3957                 if (r->out.display_name_length) {
3958                         ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
3959                 }
3960                 ndr->depth--;
3961                 ndr_print_WERROR(ndr, "result", r->out.result);
3962                 ndr->depth--;
3963         }
3964         ndr->depth--;
3965 }
3966 
3967 static enum ndr_err_code ndr_push_svcctl_SCSetServiceBitsA(struct ndr_push *ndr, int flags, const struct svcctl_SCSetServiceBitsA *r)
     /* [<][>][^][v][top][bottom][index][help] */
3968 {
3969         if (flags & NDR_IN) {
3970                 if (r->in.handle == NULL) {
3971                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
3972                 }
3973                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3974                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bits));
3975                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.bitson));
3976                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.immediate));
3977         }
3978         if (flags & NDR_OUT) {
3979                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
3980         }
3981         return NDR_ERR_SUCCESS;
3982 }
3983 
3984 static enum ndr_err_code ndr_pull_svcctl_SCSetServiceBitsA(struct ndr_pull *ndr, int flags, struct svcctl_SCSetServiceBitsA *r)
     /* [<][>][^][v][top][bottom][index][help] */
3985 {
3986         TALLOC_CTX *_mem_save_handle_0;
3987         if (flags & NDR_IN) {
3988                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
3989                         NDR_PULL_ALLOC(ndr, r->in.handle);
3990                 }
3991                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
3992                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
3993                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
3994                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
3995                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bits));
3996                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.bitson));
3997                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.immediate));
3998         }
3999         if (flags & NDR_OUT) {
4000                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4001         }
4002         return NDR_ERR_SUCCESS;
4003 }
4004 
4005 _PUBLIC_ void ndr_print_svcctl_SCSetServiceBitsA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSetServiceBitsA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4006 {
4007         ndr_print_struct(ndr, name, "svcctl_SCSetServiceBitsA");
4008         ndr->depth++;
4009         if (flags & NDR_SET_VALUES) {
4010                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4011         }
4012         if (flags & NDR_IN) {
4013                 ndr_print_struct(ndr, "in", "svcctl_SCSetServiceBitsA");
4014                 ndr->depth++;
4015                 ndr_print_ptr(ndr, "handle", r->in.handle);
4016                 ndr->depth++;
4017                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4018                 ndr->depth--;
4019                 ndr_print_uint32(ndr, "bits", r->in.bits);
4020                 ndr_print_uint32(ndr, "bitson", r->in.bitson);
4021                 ndr_print_uint32(ndr, "immediate", r->in.immediate);
4022                 ndr->depth--;
4023         }
4024         if (flags & NDR_OUT) {
4025                 ndr_print_struct(ndr, "out", "svcctl_SCSetServiceBitsA");
4026                 ndr->depth++;
4027                 ndr_print_WERROR(ndr, "result", r->out.result);
4028                 ndr->depth--;
4029         }
4030         ndr->depth--;
4031 }
4032 
4033 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4034 {
4035         if (flags & NDR_IN) {
4036                 if (r->in.handle == NULL) {
4037                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4038                 }
4039                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4040                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4041                 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4042                 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4043                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4044                 if (r->in.binary_path) {
4045                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4046                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4047                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4048                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4049                 }
4050                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.load_order_group));
4051                 if (r->in.load_order_group) {
4052                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4053                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4054                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.load_order_group, CH_UTF16)));
4055                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.load_order_group, ndr_charset_length(r->in.load_order_group, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4056                 }
4057                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4058                 if (r->in.dependencies) {
4059                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4060                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4061                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4062                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4063                 }
4064                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4065                 if (r->in.service_start_name) {
4066                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4067                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4068                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4069                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4070                 }
4071                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4072                 if (r->in.password) {
4073                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4074                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4075                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4076                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4077                 }
4078                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name));
4079                 if (r->in.display_name) {
4080                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4081                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4082                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.display_name, CH_UTF16)));
4083                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.display_name, ndr_charset_length(r->in.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4084                 }
4085         }
4086         if (flags & NDR_OUT) {
4087                 if (r->out.tag_id == NULL) {
4088                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4089                 }
4090                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.tag_id));
4091                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4092         }
4093         return NDR_ERR_SUCCESS;
4094 }
4095 
4096 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4097 {
4098         uint32_t _ptr_binary_path;
4099         uint32_t _ptr_load_order_group;
4100         uint32_t _ptr_dependencies;
4101         uint32_t _ptr_service_start_name;
4102         uint32_t _ptr_password;
4103         uint32_t _ptr_display_name;
4104         TALLOC_CTX *_mem_save_handle_0;
4105         TALLOC_CTX *_mem_save_binary_path_0;
4106         TALLOC_CTX *_mem_save_load_order_group_0;
4107         TALLOC_CTX *_mem_save_tag_id_0;
4108         TALLOC_CTX *_mem_save_dependencies_0;
4109         TALLOC_CTX *_mem_save_service_start_name_0;
4110         TALLOC_CTX *_mem_save_password_0;
4111         TALLOC_CTX *_mem_save_display_name_0;
4112         if (flags & NDR_IN) {
4113                 ZERO_STRUCT(r->out);
4114 
4115                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4116                         NDR_PULL_ALLOC(ndr, r->in.handle);
4117                 }
4118                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4119                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4120                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4121                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4122                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4123                 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4124                 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4125                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4126                 if (_ptr_binary_path) {
4127                         NDR_PULL_ALLOC(ndr, r->in.binary_path);
4128                 } else {
4129                         r->in.binary_path = NULL;
4130                 }
4131                 if (r->in.binary_path) {
4132                         _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4133                         NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4134                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4135                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4136                         if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4137                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
4138                         }
4139                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4140                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
4141                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4142                 }
4143                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_load_order_group));
4144                 if (_ptr_load_order_group) {
4145                         NDR_PULL_ALLOC(ndr, r->in.load_order_group);
4146                 } else {
4147                         r->in.load_order_group = NULL;
4148                 }
4149                 if (r->in.load_order_group) {
4150                         _mem_save_load_order_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4151                         NDR_PULL_SET_MEM_CTX(ndr, r->in.load_order_group, 0);
4152                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.load_order_group));
4153                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.load_order_group));
4154                         if (ndr_get_array_length(ndr, &r->in.load_order_group) > ndr_get_array_size(ndr, &r->in.load_order_group)) {
4155                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.load_order_group), ndr_get_array_length(ndr, &r->in.load_order_group));
4156                         }
4157                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t)));
4158                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.load_order_group, ndr_get_array_length(ndr, &r->in.load_order_group), sizeof(uint16_t), CH_UTF16));
4159                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_load_order_group_0, 0);
4160                 }
4161                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4162                 if (_ptr_dependencies) {
4163                         NDR_PULL_ALLOC(ndr, r->in.dependencies);
4164                 } else {
4165                         r->in.dependencies = NULL;
4166                 }
4167                 if (r->in.dependencies) {
4168                         _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4169                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4170                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4171                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4172                         if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4173                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
4174                         }
4175                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4176                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4177                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4178                 }
4179                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4180                 if (_ptr_service_start_name) {
4181                         NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4182                 } else {
4183                         r->in.service_start_name = NULL;
4184                 }
4185                 if (r->in.service_start_name) {
4186                         _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4187                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4188                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4189                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4190                         if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4191                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
4192                         }
4193                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4194                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
4195                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4196                 }
4197                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4198                 if (_ptr_password) {
4199                         NDR_PULL_ALLOC(ndr, r->in.password);
4200                 } else {
4201                         r->in.password = NULL;
4202                 }
4203                 if (r->in.password) {
4204                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4205                         NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4206                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4207                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4208                         if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4209                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
4210                         }
4211                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4212                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4213                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4214                 }
4215                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
4216                 if (_ptr_display_name) {
4217                         NDR_PULL_ALLOC(ndr, r->in.display_name);
4218                 } else {
4219                         r->in.display_name = NULL;
4220                 }
4221                 if (r->in.display_name) {
4222                         _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4223                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name, 0);
4224                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.display_name));
4225                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.display_name));
4226                         if (ndr_get_array_length(ndr, &r->in.display_name) > ndr_get_array_size(ndr, &r->in.display_name)) {
4227                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.display_name), ndr_get_array_length(ndr, &r->in.display_name));
4228                         }
4229                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t)));
4230                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.display_name, ndr_get_array_length(ndr, &r->in.display_name), sizeof(uint16_t), CH_UTF16));
4231                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, 0);
4232                 }
4233                 NDR_PULL_ALLOC(ndr, r->out.tag_id);
4234                 ZERO_STRUCTP(r->out.tag_id);
4235         }
4236         if (flags & NDR_OUT) {
4237                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4238                         NDR_PULL_ALLOC(ndr, r->out.tag_id);
4239                 }
4240                 _mem_save_tag_id_0 = NDR_PULL_GET_MEM_CTX(ndr);
4241                 NDR_PULL_SET_MEM_CTX(ndr, r->out.tag_id, LIBNDR_FLAG_REF_ALLOC);
4242                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.tag_id));
4243                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_tag_id_0, LIBNDR_FLAG_REF_ALLOC);
4244                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4245         }
4246         return NDR_ERR_SUCCESS;
4247 }
4248 
4249 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4250 {
4251         ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfigA");
4252         ndr->depth++;
4253         if (flags & NDR_SET_VALUES) {
4254                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4255         }
4256         if (flags & NDR_IN) {
4257                 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfigA");
4258                 ndr->depth++;
4259                 ndr_print_ptr(ndr, "handle", r->in.handle);
4260                 ndr->depth++;
4261                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4262                 ndr->depth--;
4263                 ndr_print_uint32(ndr, "type", r->in.type);
4264                 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4265                 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4266                 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4267                 ndr->depth++;
4268                 if (r->in.binary_path) {
4269                         ndr_print_string(ndr, "binary_path", r->in.binary_path);
4270                 }
4271                 ndr->depth--;
4272                 ndr_print_ptr(ndr, "load_order_group", r->in.load_order_group);
4273                 ndr->depth++;
4274                 if (r->in.load_order_group) {
4275                         ndr_print_string(ndr, "load_order_group", r->in.load_order_group);
4276                 }
4277                 ndr->depth--;
4278                 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4279                 ndr->depth++;
4280                 if (r->in.dependencies) {
4281                         ndr_print_string(ndr, "dependencies", r->in.dependencies);
4282                 }
4283                 ndr->depth--;
4284                 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4285                 ndr->depth++;
4286                 if (r->in.service_start_name) {
4287                         ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4288                 }
4289                 ndr->depth--;
4290                 ndr_print_ptr(ndr, "password", r->in.password);
4291                 ndr->depth++;
4292                 if (r->in.password) {
4293                         ndr_print_string(ndr, "password", r->in.password);
4294                 }
4295                 ndr->depth--;
4296                 ndr_print_ptr(ndr, "display_name", r->in.display_name);
4297                 ndr->depth++;
4298                 if (r->in.display_name) {
4299                         ndr_print_string(ndr, "display_name", r->in.display_name);
4300                 }
4301                 ndr->depth--;
4302                 ndr->depth--;
4303         }
4304         if (flags & NDR_OUT) {
4305                 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfigA");
4306                 ndr->depth++;
4307                 ndr_print_ptr(ndr, "tag_id", r->out.tag_id);
4308                 ndr->depth++;
4309                 ndr_print_uint32(ndr, "tag_id", *r->out.tag_id);
4310                 ndr->depth--;
4311                 ndr_print_WERROR(ndr, "result", r->out.result);
4312                 ndr->depth--;
4313         }
4314         ndr->depth--;
4315 }
4316 
4317 static enum ndr_err_code ndr_push_svcctl_CreateServiceA(struct ndr_push *ndr, int flags, const struct svcctl_CreateServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4318 {
4319         if (flags & NDR_IN) {
4320                 if (r->in.handle == NULL) {
4321                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4322                 }
4323                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4324                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
4325                 if (r->in.ServiceName) {
4326                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4327                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4328                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
4329                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4330                 }
4331                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DisplayName));
4332                 if (r->in.DisplayName) {
4333                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4334                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4335                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DisplayName, CH_UTF16)));
4336                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DisplayName, ndr_charset_length(r->in.DisplayName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4337                 }
4338                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.desired_access));
4339                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4340                 NDR_CHECK(ndr_push_svcctl_StartType(ndr, NDR_SCALARS, r->in.start_type));
4341                 NDR_CHECK(ndr_push_svcctl_ErrorControl(ndr, NDR_SCALARS, r->in.error_control));
4342                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.binary_path));
4343                 if (r->in.binary_path) {
4344                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4345                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4346                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.binary_path, CH_UTF16)));
4347                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.binary_path, ndr_charset_length(r->in.binary_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4348                 }
4349                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.LoadOrderGroupKey));
4350                 if (r->in.LoadOrderGroupKey) {
4351                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4352                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4353                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16)));
4354                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.LoadOrderGroupKey, ndr_charset_length(r->in.LoadOrderGroupKey, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4355                 }
4356                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dependencies));
4357                 if (r->in.dependencies) {
4358                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4359                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4360                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dependencies, CH_UTF16)));
4361                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dependencies, ndr_charset_length(r->in.dependencies, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4362                 }
4363                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_start_name));
4364                 if (r->in.service_start_name) {
4365                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4366                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4367                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_start_name, CH_UTF16)));
4368                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_start_name, ndr_charset_length(r->in.service_start_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4369                 }
4370                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.password));
4371                 if (r->in.password) {
4372                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4373                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4374                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.password, CH_UTF16)));
4375                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.password, ndr_charset_length(r->in.password, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4376                 }
4377         }
4378         if (flags & NDR_OUT) {
4379                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.TagId));
4380                 if (r->out.TagId) {
4381                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.TagId));
4382                 }
4383                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4384         }
4385         return NDR_ERR_SUCCESS;
4386 }
4387 
4388 static enum ndr_err_code ndr_pull_svcctl_CreateServiceA(struct ndr_pull *ndr, int flags, struct svcctl_CreateServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4389 {
4390         uint32_t _ptr_ServiceName;
4391         uint32_t _ptr_DisplayName;
4392         uint32_t _ptr_binary_path;
4393         uint32_t _ptr_LoadOrderGroupKey;
4394         uint32_t _ptr_TagId;
4395         uint32_t _ptr_dependencies;
4396         uint32_t _ptr_service_start_name;
4397         uint32_t _ptr_password;
4398         TALLOC_CTX *_mem_save_handle_0;
4399         TALLOC_CTX *_mem_save_ServiceName_0;
4400         TALLOC_CTX *_mem_save_DisplayName_0;
4401         TALLOC_CTX *_mem_save_binary_path_0;
4402         TALLOC_CTX *_mem_save_LoadOrderGroupKey_0;
4403         TALLOC_CTX *_mem_save_TagId_0;
4404         TALLOC_CTX *_mem_save_dependencies_0;
4405         TALLOC_CTX *_mem_save_service_start_name_0;
4406         TALLOC_CTX *_mem_save_password_0;
4407         if (flags & NDR_IN) {
4408                 ZERO_STRUCT(r->out);
4409 
4410                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4411                         NDR_PULL_ALLOC(ndr, r->in.handle);
4412                 }
4413                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4414                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4415                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4416                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4417                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
4418                 if (_ptr_ServiceName) {
4419                         NDR_PULL_ALLOC(ndr, r->in.ServiceName);
4420                 } else {
4421                         r->in.ServiceName = NULL;
4422                 }
4423                 if (r->in.ServiceName) {
4424                         _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4425                         NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
4426                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
4427                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
4428                         if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
4429                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
4430                         }
4431                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
4432                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
4433                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
4434                 }
4435                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DisplayName));
4436                 if (_ptr_DisplayName) {
4437                         NDR_PULL_ALLOC(ndr, r->in.DisplayName);
4438                 } else {
4439                         r->in.DisplayName = NULL;
4440                 }
4441                 if (r->in.DisplayName) {
4442                         _mem_save_DisplayName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4443                         NDR_PULL_SET_MEM_CTX(ndr, r->in.DisplayName, 0);
4444                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DisplayName));
4445                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DisplayName));
4446                         if (ndr_get_array_length(ndr, &r->in.DisplayName) > ndr_get_array_size(ndr, &r->in.DisplayName)) {
4447                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DisplayName), ndr_get_array_length(ndr, &r->in.DisplayName));
4448                         }
4449                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t)));
4450                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DisplayName, ndr_get_array_length(ndr, &r->in.DisplayName), sizeof(uint16_t), CH_UTF16));
4451                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DisplayName_0, 0);
4452                 }
4453                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.desired_access));
4454                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4455                 NDR_CHECK(ndr_pull_svcctl_StartType(ndr, NDR_SCALARS, &r->in.start_type));
4456                 NDR_CHECK(ndr_pull_svcctl_ErrorControl(ndr, NDR_SCALARS, &r->in.error_control));
4457                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_binary_path));
4458                 if (_ptr_binary_path) {
4459                         NDR_PULL_ALLOC(ndr, r->in.binary_path);
4460                 } else {
4461                         r->in.binary_path = NULL;
4462                 }
4463                 if (r->in.binary_path) {
4464                         _mem_save_binary_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
4465                         NDR_PULL_SET_MEM_CTX(ndr, r->in.binary_path, 0);
4466                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.binary_path));
4467                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.binary_path));
4468                         if (ndr_get_array_length(ndr, &r->in.binary_path) > ndr_get_array_size(ndr, &r->in.binary_path)) {
4469                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.binary_path), ndr_get_array_length(ndr, &r->in.binary_path));
4470                         }
4471                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t)));
4472                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.binary_path, ndr_get_array_length(ndr, &r->in.binary_path), sizeof(uint16_t), CH_UTF16));
4473                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_binary_path_0, 0);
4474                 }
4475                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_LoadOrderGroupKey));
4476                 if (_ptr_LoadOrderGroupKey) {
4477                         NDR_PULL_ALLOC(ndr, r->in.LoadOrderGroupKey);
4478                 } else {
4479                         r->in.LoadOrderGroupKey = NULL;
4480                 }
4481                 if (r->in.LoadOrderGroupKey) {
4482                         _mem_save_LoadOrderGroupKey_0 = NDR_PULL_GET_MEM_CTX(ndr);
4483                         NDR_PULL_SET_MEM_CTX(ndr, r->in.LoadOrderGroupKey, 0);
4484                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.LoadOrderGroupKey));
4485                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.LoadOrderGroupKey));
4486                         if (ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey) > ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey)) {
4487                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.LoadOrderGroupKey), ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey));
4488                         }
4489                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t)));
4490                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.LoadOrderGroupKey, ndr_get_array_length(ndr, &r->in.LoadOrderGroupKey), sizeof(uint16_t), CH_UTF16));
4491                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_LoadOrderGroupKey_0, 0);
4492                 }
4493                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dependencies));
4494                 if (_ptr_dependencies) {
4495                         NDR_PULL_ALLOC(ndr, r->in.dependencies);
4496                 } else {
4497                         r->in.dependencies = NULL;
4498                 }
4499                 if (r->in.dependencies) {
4500                         _mem_save_dependencies_0 = NDR_PULL_GET_MEM_CTX(ndr);
4501                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dependencies, 0);
4502                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dependencies));
4503                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dependencies));
4504                         if (ndr_get_array_length(ndr, &r->in.dependencies) > ndr_get_array_size(ndr, &r->in.dependencies)) {
4505                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dependencies), ndr_get_array_length(ndr, &r->in.dependencies));
4506                         }
4507                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t)));
4508                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dependencies, ndr_get_array_length(ndr, &r->in.dependencies), sizeof(uint16_t), CH_UTF16));
4509                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dependencies_0, 0);
4510                 }
4511                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_start_name));
4512                 if (_ptr_service_start_name) {
4513                         NDR_PULL_ALLOC(ndr, r->in.service_start_name);
4514                 } else {
4515                         r->in.service_start_name = NULL;
4516                 }
4517                 if (r->in.service_start_name) {
4518                         _mem_save_service_start_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4519                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_start_name, 0);
4520                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_start_name));
4521                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_start_name));
4522                         if (ndr_get_array_length(ndr, &r->in.service_start_name) > ndr_get_array_size(ndr, &r->in.service_start_name)) {
4523                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_start_name), ndr_get_array_length(ndr, &r->in.service_start_name));
4524                         }
4525                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t)));
4526                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_start_name, ndr_get_array_length(ndr, &r->in.service_start_name), sizeof(uint16_t), CH_UTF16));
4527                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_start_name_0, 0);
4528                 }
4529                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
4530                 if (_ptr_password) {
4531                         NDR_PULL_ALLOC(ndr, r->in.password);
4532                 } else {
4533                         r->in.password = NULL;
4534                 }
4535                 if (r->in.password) {
4536                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
4537                         NDR_PULL_SET_MEM_CTX(ndr, r->in.password, 0);
4538                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.password));
4539                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.password));
4540                         if (ndr_get_array_length(ndr, &r->in.password) > ndr_get_array_size(ndr, &r->in.password)) {
4541                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.password), ndr_get_array_length(ndr, &r->in.password));
4542                         }
4543                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t)));
4544                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.password, ndr_get_array_length(ndr, &r->in.password), sizeof(uint16_t), CH_UTF16));
4545                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
4546                 }
4547         }
4548         if (flags & NDR_OUT) {
4549                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_TagId));
4550                 if (_ptr_TagId) {
4551                         NDR_PULL_ALLOC(ndr, r->out.TagId);
4552                 } else {
4553                         r->out.TagId = NULL;
4554                 }
4555                 if (r->out.TagId) {
4556                         _mem_save_TagId_0 = NDR_PULL_GET_MEM_CTX(ndr);
4557                         NDR_PULL_SET_MEM_CTX(ndr, r->out.TagId, 0);
4558                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.TagId));
4559                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_TagId_0, 0);
4560                 }
4561                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4562         }
4563         return NDR_ERR_SUCCESS;
4564 }
4565 
4566 _PUBLIC_ void ndr_print_svcctl_CreateServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_CreateServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4567 {
4568         ndr_print_struct(ndr, name, "svcctl_CreateServiceA");
4569         ndr->depth++;
4570         if (flags & NDR_SET_VALUES) {
4571                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4572         }
4573         if (flags & NDR_IN) {
4574                 ndr_print_struct(ndr, "in", "svcctl_CreateServiceA");
4575                 ndr->depth++;
4576                 ndr_print_ptr(ndr, "handle", r->in.handle);
4577                 ndr->depth++;
4578                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4579                 ndr->depth--;
4580                 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
4581                 ndr->depth++;
4582                 if (r->in.ServiceName) {
4583                         ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
4584                 }
4585                 ndr->depth--;
4586                 ndr_print_ptr(ndr, "DisplayName", r->in.DisplayName);
4587                 ndr->depth++;
4588                 if (r->in.DisplayName) {
4589                         ndr_print_string(ndr, "DisplayName", r->in.DisplayName);
4590                 }
4591                 ndr->depth--;
4592                 ndr_print_uint32(ndr, "desired_access", r->in.desired_access);
4593                 ndr_print_uint32(ndr, "type", r->in.type);
4594                 ndr_print_svcctl_StartType(ndr, "start_type", r->in.start_type);
4595                 ndr_print_svcctl_ErrorControl(ndr, "error_control", r->in.error_control);
4596                 ndr_print_ptr(ndr, "binary_path", r->in.binary_path);
4597                 ndr->depth++;
4598                 if (r->in.binary_path) {
4599                         ndr_print_string(ndr, "binary_path", r->in.binary_path);
4600                 }
4601                 ndr->depth--;
4602                 ndr_print_ptr(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4603                 ndr->depth++;
4604                 if (r->in.LoadOrderGroupKey) {
4605                         ndr_print_string(ndr, "LoadOrderGroupKey", r->in.LoadOrderGroupKey);
4606                 }
4607                 ndr->depth--;
4608                 ndr_print_ptr(ndr, "dependencies", r->in.dependencies);
4609                 ndr->depth++;
4610                 if (r->in.dependencies) {
4611                         ndr_print_string(ndr, "dependencies", r->in.dependencies);
4612                 }
4613                 ndr->depth--;
4614                 ndr_print_ptr(ndr, "service_start_name", r->in.service_start_name);
4615                 ndr->depth++;
4616                 if (r->in.service_start_name) {
4617                         ndr_print_string(ndr, "service_start_name", r->in.service_start_name);
4618                 }
4619                 ndr->depth--;
4620                 ndr_print_ptr(ndr, "password", r->in.password);
4621                 ndr->depth++;
4622                 if (r->in.password) {
4623                         ndr_print_string(ndr, "password", r->in.password);
4624                 }
4625                 ndr->depth--;
4626                 ndr->depth--;
4627         }
4628         if (flags & NDR_OUT) {
4629                 ndr_print_struct(ndr, "out", "svcctl_CreateServiceA");
4630                 ndr->depth++;
4631                 ndr_print_ptr(ndr, "TagId", r->out.TagId);
4632                 ndr->depth++;
4633                 if (r->out.TagId) {
4634                         ndr_print_uint32(ndr, "TagId", *r->out.TagId);
4635                 }
4636                 ndr->depth--;
4637                 ndr_print_WERROR(ndr, "result", r->out.result);
4638                 ndr->depth--;
4639         }
4640         ndr->depth--;
4641 }
4642 
4643 static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesA(struct ndr_push *ndr, int flags, const struct svcctl_EnumDependentServicesA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4644 {
4645         if (flags & NDR_IN) {
4646                 if (r->in.service == NULL) {
4647                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4648                 }
4649                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.service));
4650                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4651                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4652         }
4653         if (flags & NDR_OUT) {
4654                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
4655                 if (r->out.service_status) {
4656                         NDR_CHECK(ndr_push_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4657                 }
4658                 if (r->out.needed == NULL) {
4659                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4660                 }
4661                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
4662                 if (r->out.services_returned == NULL) {
4663                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4664                 }
4665                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4666                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4667         }
4668         return NDR_ERR_SUCCESS;
4669 }
4670 
4671 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesA(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4672 {
4673         uint32_t _ptr_service_status;
4674         TALLOC_CTX *_mem_save_service_0;
4675         TALLOC_CTX *_mem_save_service_status_0;
4676         TALLOC_CTX *_mem_save_needed_0;
4677         TALLOC_CTX *_mem_save_services_returned_0;
4678         if (flags & NDR_IN) {
4679                 ZERO_STRUCT(r->out);
4680 
4681                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4682                         NDR_PULL_ALLOC(ndr, r->in.service);
4683                 }
4684                 _mem_save_service_0 = NDR_PULL_GET_MEM_CTX(ndr);
4685                 NDR_PULL_SET_MEM_CTX(ndr, r->in.service, LIBNDR_FLAG_REF_ALLOC);
4686                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.service));
4687                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
4688                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4689                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
4690                 NDR_PULL_ALLOC(ndr, r->out.needed);
4691                 ZERO_STRUCTP(r->out.needed);
4692                 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4693                 ZERO_STRUCTP(r->out.services_returned);
4694         }
4695         if (flags & NDR_OUT) {
4696                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
4697                 if (_ptr_service_status) {
4698                         NDR_PULL_ALLOC(ndr, r->out.service_status);
4699                 } else {
4700                         r->out.service_status = NULL;
4701                 }
4702                 if (r->out.service_status) {
4703                         _mem_save_service_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
4704                         NDR_PULL_SET_MEM_CTX(ndr, r->out.service_status, 0);
4705                         NDR_CHECK(ndr_pull_ENUM_SERVICE_STATUSA(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
4706                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_status_0, 0);
4707                 }
4708                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4709                         NDR_PULL_ALLOC(ndr, r->out.needed);
4710                 }
4711                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4712                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
4713                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
4714                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
4715                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4716                         NDR_PULL_ALLOC(ndr, r->out.services_returned);
4717                 }
4718                 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4719                 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4720                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4721                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4722                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4723         }
4724         return NDR_ERR_SUCCESS;
4725 }
4726 
4727 _PUBLIC_ void ndr_print_svcctl_EnumDependentServicesA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumDependentServicesA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4728 {
4729         ndr_print_struct(ndr, name, "svcctl_EnumDependentServicesA");
4730         ndr->depth++;
4731         if (flags & NDR_SET_VALUES) {
4732                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4733         }
4734         if (flags & NDR_IN) {
4735                 ndr_print_struct(ndr, "in", "svcctl_EnumDependentServicesA");
4736                 ndr->depth++;
4737                 ndr_print_ptr(ndr, "service", r->in.service);
4738                 ndr->depth++;
4739                 ndr_print_policy_handle(ndr, "service", r->in.service);
4740                 ndr->depth--;
4741                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4742                 ndr_print_uint32(ndr, "offered", r->in.offered);
4743                 ndr->depth--;
4744         }
4745         if (flags & NDR_OUT) {
4746                 ndr_print_struct(ndr, "out", "svcctl_EnumDependentServicesA");
4747                 ndr->depth++;
4748                 ndr_print_ptr(ndr, "service_status", r->out.service_status);
4749                 ndr->depth++;
4750                 if (r->out.service_status) {
4751                         ndr_print_ENUM_SERVICE_STATUSA(ndr, "service_status", r->out.service_status);
4752                 }
4753                 ndr->depth--;
4754                 ndr_print_ptr(ndr, "needed", r->out.needed);
4755                 ndr->depth++;
4756                 ndr_print_uint32(ndr, "needed", *r->out.needed);
4757                 ndr->depth--;
4758                 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4759                 ndr->depth++;
4760                 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4761                 ndr->depth--;
4762                 ndr_print_WERROR(ndr, "result", r->out.result);
4763                 ndr->depth--;
4764         }
4765         ndr->depth--;
4766 }
4767 
4768 static enum ndr_err_code ndr_push_svcctl_EnumServicesStatusA(struct ndr_push *ndr, int flags, const struct svcctl_EnumServicesStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4769 {
4770         if (flags & NDR_IN) {
4771                 if (r->in.handle == NULL) {
4772                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4773                 }
4774                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4775                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
4776                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
4777                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4778                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
4779                 if (r->in.resume_handle) {
4780                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
4781                 }
4782         }
4783         if (flags & NDR_OUT) {
4784                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
4785                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service, r->in.offered));
4786                 if (r->out.needed == NULL) {
4787                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4788                 }
4789                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
4790                 if (r->out.services_returned == NULL) {
4791                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4792                 }
4793                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.services_returned));
4794                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
4795                 if (r->out.resume_handle) {
4796                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
4797                 }
4798                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4799         }
4800         return NDR_ERR_SUCCESS;
4801 }
4802 
4803 static enum ndr_err_code ndr_pull_svcctl_EnumServicesStatusA(struct ndr_pull *ndr, int flags, struct svcctl_EnumServicesStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4804 {
4805         uint32_t _ptr_resume_handle;
4806         TALLOC_CTX *_mem_save_handle_0;
4807         TALLOC_CTX *_mem_save_needed_0;
4808         TALLOC_CTX *_mem_save_services_returned_0;
4809         TALLOC_CTX *_mem_save_resume_handle_0;
4810         if (flags & NDR_IN) {
4811                 ZERO_STRUCT(r->out);
4812 
4813                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4814                         NDR_PULL_ALLOC(ndr, r->in.handle);
4815                 }
4816                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4817                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
4818                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
4819                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
4820                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
4821                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
4822                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
4823                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4824                 if (_ptr_resume_handle) {
4825                         NDR_PULL_ALLOC(ndr, r->in.resume_handle);
4826                 } else {
4827                         r->in.resume_handle = NULL;
4828                 }
4829                 if (r->in.resume_handle) {
4830                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4831                         NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
4832                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
4833                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4834                 }
4835                 NDR_PULL_ALLOC(ndr, r->out.needed);
4836                 ZERO_STRUCTP(r->out.needed);
4837                 NDR_PULL_ALLOC(ndr, r->out.services_returned);
4838                 ZERO_STRUCTP(r->out.services_returned);
4839         }
4840         if (flags & NDR_OUT) {
4841                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service));
4842                 NDR_PULL_ALLOC_N(ndr, r->out.service, ndr_get_array_size(ndr, &r->out.service));
4843                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.service, ndr_get_array_size(ndr, &r->out.service)));
4844                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4845                         NDR_PULL_ALLOC(ndr, r->out.needed);
4846                 }
4847                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
4848                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
4849                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
4850                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
4851                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
4852                         NDR_PULL_ALLOC(ndr, r->out.services_returned);
4853                 }
4854                 _mem_save_services_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
4855                 NDR_PULL_SET_MEM_CTX(ndr, r->out.services_returned, LIBNDR_FLAG_REF_ALLOC);
4856                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.services_returned));
4857                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_services_returned_0, LIBNDR_FLAG_REF_ALLOC);
4858                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
4859                 if (_ptr_resume_handle) {
4860                         NDR_PULL_ALLOC(ndr, r->out.resume_handle);
4861                 } else {
4862                         r->out.resume_handle = NULL;
4863                 }
4864                 if (r->out.resume_handle) {
4865                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
4866                         NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
4867                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
4868                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
4869                 }
4870                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
4871                 if (r->out.service) {
4872                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.service, r->in.offered));
4873                 }
4874         }
4875         return NDR_ERR_SUCCESS;
4876 }
4877 
4878 _PUBLIC_ void ndr_print_svcctl_EnumServicesStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServicesStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4879 {
4880         ndr_print_struct(ndr, name, "svcctl_EnumServicesStatusA");
4881         ndr->depth++;
4882         if (flags & NDR_SET_VALUES) {
4883                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
4884         }
4885         if (flags & NDR_IN) {
4886                 ndr_print_struct(ndr, "in", "svcctl_EnumServicesStatusA");
4887                 ndr->depth++;
4888                 ndr_print_ptr(ndr, "handle", r->in.handle);
4889                 ndr->depth++;
4890                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
4891                 ndr->depth--;
4892                 ndr_print_uint32(ndr, "type", r->in.type);
4893                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
4894                 ndr_print_uint32(ndr, "offered", r->in.offered);
4895                 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
4896                 ndr->depth++;
4897                 if (r->in.resume_handle) {
4898                         ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
4899                 }
4900                 ndr->depth--;
4901                 ndr->depth--;
4902         }
4903         if (flags & NDR_OUT) {
4904                 ndr_print_struct(ndr, "out", "svcctl_EnumServicesStatusA");
4905                 ndr->depth++;
4906                 ndr_print_array_uint8(ndr, "service", r->out.service, r->in.offered);
4907                 ndr_print_ptr(ndr, "needed", r->out.needed);
4908                 ndr->depth++;
4909                 ndr_print_uint32(ndr, "needed", *r->out.needed);
4910                 ndr->depth--;
4911                 ndr_print_ptr(ndr, "services_returned", r->out.services_returned);
4912                 ndr->depth++;
4913                 ndr_print_uint32(ndr, "services_returned", *r->out.services_returned);
4914                 ndr->depth--;
4915                 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
4916                 ndr->depth++;
4917                 if (r->out.resume_handle) {
4918                         ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
4919                 }
4920                 ndr->depth--;
4921                 ndr_print_WERROR(ndr, "result", r->out.result);
4922                 ndr->depth--;
4923         }
4924         ndr->depth--;
4925 }
4926 
4927 static enum ndr_err_code ndr_push_svcctl_OpenSCManagerA(struct ndr_push *ndr, int flags, const struct svcctl_OpenSCManagerA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4928 {
4929         if (flags & NDR_IN) {
4930                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.MachineName));
4931                 if (r->in.MachineName) {
4932                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4933                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4934                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.MachineName, CH_UTF16)));
4935                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.MachineName, ndr_charset_length(r->in.MachineName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4936                 }
4937                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.DatabaseName));
4938                 if (r->in.DatabaseName) {
4939                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4940                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4941                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.DatabaseName, CH_UTF16)));
4942                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.DatabaseName, ndr_charset_length(r->in.DatabaseName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4943                 }
4944                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
4945         }
4946         if (flags & NDR_OUT) {
4947                 if (r->out.handle == NULL) {
4948                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
4949                 }
4950                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->out.handle));
4951                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
4952         }
4953         return NDR_ERR_SUCCESS;
4954 }
4955 
4956 static enum ndr_err_code ndr_pull_svcctl_OpenSCManagerA(struct ndr_pull *ndr, int flags, struct svcctl_OpenSCManagerA *r)
     /* [<][>][^][v][top][bottom][index][help] */
4957 {
4958         uint32_t _ptr_MachineName;
4959         uint32_t _ptr_DatabaseName;
4960         TALLOC_CTX *_mem_save_MachineName_0;
4961         TALLOC_CTX *_mem_save_DatabaseName_0;
4962         TALLOC_CTX *_mem_save_handle_0;
4963         if (flags & NDR_IN) {
4964                 ZERO_STRUCT(r->out);
4965 
4966                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_MachineName));
4967                 if (_ptr_MachineName) {
4968                         NDR_PULL_ALLOC(ndr, r->in.MachineName);
4969                 } else {
4970                         r->in.MachineName = NULL;
4971                 }
4972                 if (r->in.MachineName) {
4973                         _mem_save_MachineName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4974                         NDR_PULL_SET_MEM_CTX(ndr, r->in.MachineName, 0);
4975                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.MachineName));
4976                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.MachineName));
4977                         if (ndr_get_array_length(ndr, &r->in.MachineName) > ndr_get_array_size(ndr, &r->in.MachineName)) {
4978                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.MachineName), ndr_get_array_length(ndr, &r->in.MachineName));
4979                         }
4980                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t)));
4981                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.MachineName, ndr_get_array_length(ndr, &r->in.MachineName), sizeof(uint16_t), CH_UTF16));
4982                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_MachineName_0, 0);
4983                 }
4984                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_DatabaseName));
4985                 if (_ptr_DatabaseName) {
4986                         NDR_PULL_ALLOC(ndr, r->in.DatabaseName);
4987                 } else {
4988                         r->in.DatabaseName = NULL;
4989                 }
4990                 if (r->in.DatabaseName) {
4991                         _mem_save_DatabaseName_0 = NDR_PULL_GET_MEM_CTX(ndr);
4992                         NDR_PULL_SET_MEM_CTX(ndr, r->in.DatabaseName, 0);
4993                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.DatabaseName));
4994                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.DatabaseName));
4995                         if (ndr_get_array_length(ndr, &r->in.DatabaseName) > ndr_get_array_size(ndr, &r->in.DatabaseName)) {
4996                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.DatabaseName), ndr_get_array_length(ndr, &r->in.DatabaseName));
4997                         }
4998                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t)));
4999                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.DatabaseName, ndr_get_array_length(ndr, &r->in.DatabaseName), sizeof(uint16_t), CH_UTF16));
5000                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DatabaseName_0, 0);
5001                 }
5002                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5003                 NDR_PULL_ALLOC(ndr, r->out.handle);
5004                 ZERO_STRUCTP(r->out.handle);
5005         }
5006         if (flags & NDR_OUT) {
5007                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5008                         NDR_PULL_ALLOC(ndr, r->out.handle);
5009                 }
5010                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5011                 NDR_PULL_SET_MEM_CTX(ndr, r->out.handle, LIBNDR_FLAG_REF_ALLOC);
5012                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->out.handle));
5013                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5014                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5015         }
5016         return NDR_ERR_SUCCESS;
5017 }
5018 
5019 _PUBLIC_ void ndr_print_svcctl_OpenSCManagerA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenSCManagerA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5020 {
5021         ndr_print_struct(ndr, name, "svcctl_OpenSCManagerA");
5022         ndr->depth++;
5023         if (flags & NDR_SET_VALUES) {
5024                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5025         }
5026         if (flags & NDR_IN) {
5027                 ndr_print_struct(ndr, "in", "svcctl_OpenSCManagerA");
5028                 ndr->depth++;
5029                 ndr_print_ptr(ndr, "MachineName", r->in.MachineName);
5030                 ndr->depth++;
5031                 if (r->in.MachineName) {
5032                         ndr_print_string(ndr, "MachineName", r->in.MachineName);
5033                 }
5034                 ndr->depth--;
5035                 ndr_print_ptr(ndr, "DatabaseName", r->in.DatabaseName);
5036                 ndr->depth++;
5037                 if (r->in.DatabaseName) {
5038                         ndr_print_string(ndr, "DatabaseName", r->in.DatabaseName);
5039                 }
5040                 ndr->depth--;
5041                 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5042                 ndr->depth--;
5043         }
5044         if (flags & NDR_OUT) {
5045                 ndr_print_struct(ndr, "out", "svcctl_OpenSCManagerA");
5046                 ndr->depth++;
5047                 ndr_print_ptr(ndr, "handle", r->out.handle);
5048                 ndr->depth++;
5049                 ndr_print_policy_handle(ndr, "handle", r->out.handle);
5050                 ndr->depth--;
5051                 ndr_print_WERROR(ndr, "result", r->out.result);
5052                 ndr->depth--;
5053         }
5054         ndr->depth--;
5055 }
5056 
5057 static enum ndr_err_code ndr_push_svcctl_OpenServiceA(struct ndr_push *ndr, int flags, const struct svcctl_OpenServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5058 {
5059         if (flags & NDR_IN) {
5060                 if (r->in.scmanager_handle == NULL) {
5061                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5062                 }
5063                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5064                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.ServiceName));
5065                 if (r->in.ServiceName) {
5066                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5067                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5068                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.ServiceName, CH_UTF16)));
5069                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.ServiceName, ndr_charset_length(r->in.ServiceName, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5070                 }
5071                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.access_mask));
5072         }
5073         if (flags & NDR_OUT) {
5074                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5075         }
5076         return NDR_ERR_SUCCESS;
5077 }
5078 
5079 static enum ndr_err_code ndr_pull_svcctl_OpenServiceA(struct ndr_pull *ndr, int flags, struct svcctl_OpenServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5080 {
5081         uint32_t _ptr_ServiceName;
5082         TALLOC_CTX *_mem_save_scmanager_handle_0;
5083         TALLOC_CTX *_mem_save_ServiceName_0;
5084         if (flags & NDR_IN) {
5085                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5086                         NDR_PULL_ALLOC(ndr, r->in.scmanager_handle);
5087                 }
5088                 _mem_save_scmanager_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5089                 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager_handle, LIBNDR_FLAG_REF_ALLOC);
5090                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager_handle));
5091                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_handle_0, LIBNDR_FLAG_REF_ALLOC);
5092                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ServiceName));
5093                 if (_ptr_ServiceName) {
5094                         NDR_PULL_ALLOC(ndr, r->in.ServiceName);
5095                 } else {
5096                         r->in.ServiceName = NULL;
5097                 }
5098                 if (r->in.ServiceName) {
5099                         _mem_save_ServiceName_0 = NDR_PULL_GET_MEM_CTX(ndr);
5100                         NDR_PULL_SET_MEM_CTX(ndr, r->in.ServiceName, 0);
5101                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.ServiceName));
5102                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.ServiceName));
5103                         if (ndr_get_array_length(ndr, &r->in.ServiceName) > ndr_get_array_size(ndr, &r->in.ServiceName)) {
5104                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.ServiceName), ndr_get_array_length(ndr, &r->in.ServiceName));
5105                         }
5106                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t)));
5107                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.ServiceName, ndr_get_array_length(ndr, &r->in.ServiceName), sizeof(uint16_t), CH_UTF16));
5108                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ServiceName_0, 0);
5109                 }
5110                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.access_mask));
5111         }
5112         if (flags & NDR_OUT) {
5113                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5114         }
5115         return NDR_ERR_SUCCESS;
5116 }
5117 
5118 _PUBLIC_ void ndr_print_svcctl_OpenServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_OpenServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5119 {
5120         ndr_print_struct(ndr, name, "svcctl_OpenServiceA");
5121         ndr->depth++;
5122         if (flags & NDR_SET_VALUES) {
5123                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5124         }
5125         if (flags & NDR_IN) {
5126                 ndr_print_struct(ndr, "in", "svcctl_OpenServiceA");
5127                 ndr->depth++;
5128                 ndr_print_ptr(ndr, "scmanager_handle", r->in.scmanager_handle);
5129                 ndr->depth++;
5130                 ndr_print_policy_handle(ndr, "scmanager_handle", r->in.scmanager_handle);
5131                 ndr->depth--;
5132                 ndr_print_ptr(ndr, "ServiceName", r->in.ServiceName);
5133                 ndr->depth++;
5134                 if (r->in.ServiceName) {
5135                         ndr_print_string(ndr, "ServiceName", r->in.ServiceName);
5136                 }
5137                 ndr->depth--;
5138                 ndr_print_uint32(ndr, "access_mask", r->in.access_mask);
5139                 ndr->depth--;
5140         }
5141         if (flags & NDR_OUT) {
5142                 ndr_print_struct(ndr, "out", "svcctl_OpenServiceA");
5143                 ndr->depth++;
5144                 ndr_print_WERROR(ndr, "result", r->out.result);
5145                 ndr->depth--;
5146         }
5147         ndr->depth--;
5148 }
5149 
5150 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfigA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5151 {
5152         if (flags & NDR_IN) {
5153                 if (r->in.handle == NULL) {
5154                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5155                 }
5156                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5157                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5158         }
5159         if (flags & NDR_OUT) {
5160                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered));
5161                 if (r->out.needed == NULL) {
5162                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5163                 }
5164                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5165                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5166         }
5167         return NDR_ERR_SUCCESS;
5168 }
5169 
5170 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfigA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5171 {
5172         TALLOC_CTX *_mem_save_handle_0;
5173         TALLOC_CTX *_mem_save_needed_0;
5174         if (flags & NDR_IN) {
5175                 ZERO_STRUCT(r->out);
5176 
5177                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5178                         NDR_PULL_ALLOC(ndr, r->in.handle);
5179                 }
5180                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5181                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5182                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5183                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5184                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5185                 NDR_PULL_ALLOC(ndr, r->out.needed);
5186                 ZERO_STRUCTP(r->out.needed);
5187         }
5188         if (flags & NDR_OUT) {
5189                 NDR_PULL_ALLOC_N(ndr, r->out.query, r->in.offered);
5190                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.query, r->in.offered));
5191                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5192                         NDR_PULL_ALLOC(ndr, r->out.needed);
5193                 }
5194                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5195                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5196                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5197                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5198                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5199         }
5200         return NDR_ERR_SUCCESS;
5201 }
5202 
5203 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfigA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfigA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5204 {
5205         ndr_print_struct(ndr, name, "svcctl_QueryServiceConfigA");
5206         ndr->depth++;
5207         if (flags & NDR_SET_VALUES) {
5208                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5209         }
5210         if (flags & NDR_IN) {
5211                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfigA");
5212                 ndr->depth++;
5213                 ndr_print_ptr(ndr, "handle", r->in.handle);
5214                 ndr->depth++;
5215                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5216                 ndr->depth--;
5217                 ndr_print_uint32(ndr, "offered", r->in.offered);
5218                 ndr->depth--;
5219         }
5220         if (flags & NDR_OUT) {
5221                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfigA");
5222                 ndr->depth++;
5223                 ndr_print_array_uint8(ndr, "query", r->out.query, r->in.offered);
5224                 ndr_print_ptr(ndr, "needed", r->out.needed);
5225                 ndr->depth++;
5226                 ndr_print_uint32(ndr, "needed", *r->out.needed);
5227                 ndr->depth--;
5228                 ndr_print_WERROR(ndr, "result", r->out.result);
5229                 ndr->depth--;
5230         }
5231         ndr->depth--;
5232 }
5233 
5234 static enum ndr_err_code ndr_push_svcctl_QueryServiceLockStatusA(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceLockStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5235 {
5236         if (flags & NDR_IN) {
5237                 if (r->in.handle == NULL) {
5238                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5239                 }
5240                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5241                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
5242         }
5243         if (flags & NDR_OUT) {
5244                 if (r->out.lock_status == NULL) {
5245                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5246                 }
5247                 NDR_CHECK(ndr_push_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5248                 if (r->out.needed == NULL) {
5249                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5250                 }
5251                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
5252                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5253         }
5254         return NDR_ERR_SUCCESS;
5255 }
5256 
5257 static enum ndr_err_code ndr_pull_svcctl_QueryServiceLockStatusA(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceLockStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5258 {
5259         TALLOC_CTX *_mem_save_handle_0;
5260         TALLOC_CTX *_mem_save_lock_status_0;
5261         TALLOC_CTX *_mem_save_needed_0;
5262         if (flags & NDR_IN) {
5263                 ZERO_STRUCT(r->out);
5264 
5265                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5266                         NDR_PULL_ALLOC(ndr, r->in.handle);
5267                 }
5268                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5269                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5270                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5271                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5272                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
5273                 NDR_PULL_ALLOC(ndr, r->out.lock_status);
5274                 ZERO_STRUCTP(r->out.lock_status);
5275                 NDR_PULL_ALLOC(ndr, r->out.needed);
5276                 ZERO_STRUCTP(r->out.needed);
5277         }
5278         if (flags & NDR_OUT) {
5279                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5280                         NDR_PULL_ALLOC(ndr, r->out.lock_status);
5281                 }
5282                 _mem_save_lock_status_0 = NDR_PULL_GET_MEM_CTX(ndr);
5283                 NDR_PULL_SET_MEM_CTX(ndr, r->out.lock_status, LIBNDR_FLAG_REF_ALLOC);
5284                 NDR_CHECK(ndr_pull_SERVICE_LOCK_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.lock_status));
5285                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lock_status_0, LIBNDR_FLAG_REF_ALLOC);
5286                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5287                         NDR_PULL_ALLOC(ndr, r->out.needed);
5288                 }
5289                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
5290                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
5291                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
5292                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
5293                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5294         }
5295         return NDR_ERR_SUCCESS;
5296 }
5297 
5298 _PUBLIC_ void ndr_print_svcctl_QueryServiceLockStatusA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceLockStatusA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5299 {
5300         ndr_print_struct(ndr, name, "svcctl_QueryServiceLockStatusA");
5301         ndr->depth++;
5302         if (flags & NDR_SET_VALUES) {
5303                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5304         }
5305         if (flags & NDR_IN) {
5306                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceLockStatusA");
5307                 ndr->depth++;
5308                 ndr_print_ptr(ndr, "handle", r->in.handle);
5309                 ndr->depth++;
5310                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5311                 ndr->depth--;
5312                 ndr_print_uint32(ndr, "offered", r->in.offered);
5313                 ndr->depth--;
5314         }
5315         if (flags & NDR_OUT) {
5316                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceLockStatusA");
5317                 ndr->depth++;
5318                 ndr_print_ptr(ndr, "lock_status", r->out.lock_status);
5319                 ndr->depth++;
5320                 ndr_print_SERVICE_LOCK_STATUS(ndr, "lock_status", r->out.lock_status);
5321                 ndr->depth--;
5322                 ndr_print_ptr(ndr, "needed", r->out.needed);
5323                 ndr->depth++;
5324                 ndr_print_uint32(ndr, "needed", *r->out.needed);
5325                 ndr->depth--;
5326                 ndr_print_WERROR(ndr, "result", r->out.result);
5327                 ndr->depth--;
5328         }
5329         ndr->depth--;
5330 }
5331 
5332 static enum ndr_err_code ndr_push_svcctl_StartServiceA(struct ndr_push *ndr, int flags, const struct svcctl_StartServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5333 {
5334         if (flags & NDR_IN) {
5335                 if (r->in.handle == NULL) {
5336                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5337                 }
5338                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5339                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.NumArgs));
5340                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.Arguments));
5341                 if (r->in.Arguments) {
5342                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5343                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5344                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.Arguments, CH_UTF16)));
5345                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.Arguments, ndr_charset_length(r->in.Arguments, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5346                 }
5347         }
5348         if (flags & NDR_OUT) {
5349                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5350         }
5351         return NDR_ERR_SUCCESS;
5352 }
5353 
5354 static enum ndr_err_code ndr_pull_svcctl_StartServiceA(struct ndr_pull *ndr, int flags, struct svcctl_StartServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5355 {
5356         uint32_t _ptr_Arguments;
5357         TALLOC_CTX *_mem_save_handle_0;
5358         TALLOC_CTX *_mem_save_Arguments_0;
5359         if (flags & NDR_IN) {
5360                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5361                         NDR_PULL_ALLOC(ndr, r->in.handle);
5362                 }
5363                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5364                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5365                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5366                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5367                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.NumArgs));
5368                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_Arguments));
5369                 if (_ptr_Arguments) {
5370                         NDR_PULL_ALLOC(ndr, r->in.Arguments);
5371                 } else {
5372                         r->in.Arguments = NULL;
5373                 }
5374                 if (r->in.Arguments) {
5375                         _mem_save_Arguments_0 = NDR_PULL_GET_MEM_CTX(ndr);
5376                         NDR_PULL_SET_MEM_CTX(ndr, r->in.Arguments, 0);
5377                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.Arguments));
5378                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.Arguments));
5379                         if (ndr_get_array_length(ndr, &r->in.Arguments) > ndr_get_array_size(ndr, &r->in.Arguments)) {
5380                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.Arguments), ndr_get_array_length(ndr, &r->in.Arguments));
5381                         }
5382                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t)));
5383                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.Arguments, ndr_get_array_length(ndr, &r->in.Arguments), sizeof(uint16_t), CH_UTF16));
5384                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_Arguments_0, 0);
5385                 }
5386         }
5387         if (flags & NDR_OUT) {
5388                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5389         }
5390         return NDR_ERR_SUCCESS;
5391 }
5392 
5393 _PUBLIC_ void ndr_print_svcctl_StartServiceA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_StartServiceA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5394 {
5395         ndr_print_struct(ndr, name, "svcctl_StartServiceA");
5396         ndr->depth++;
5397         if (flags & NDR_SET_VALUES) {
5398                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5399         }
5400         if (flags & NDR_IN) {
5401                 ndr_print_struct(ndr, "in", "svcctl_StartServiceA");
5402                 ndr->depth++;
5403                 ndr_print_ptr(ndr, "handle", r->in.handle);
5404                 ndr->depth++;
5405                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5406                 ndr->depth--;
5407                 ndr_print_uint32(ndr, "NumArgs", r->in.NumArgs);
5408                 ndr_print_ptr(ndr, "Arguments", r->in.Arguments);
5409                 ndr->depth++;
5410                 if (r->in.Arguments) {
5411                         ndr_print_string(ndr, "Arguments", r->in.Arguments);
5412                 }
5413                 ndr->depth--;
5414                 ndr->depth--;
5415         }
5416         if (flags & NDR_OUT) {
5417                 ndr_print_struct(ndr, "out", "svcctl_StartServiceA");
5418                 ndr->depth++;
5419                 ndr_print_WERROR(ndr, "result", r->out.result);
5420                 ndr->depth--;
5421         }
5422         ndr->depth--;
5423 }
5424 
5425 static enum ndr_err_code ndr_push_svcctl_GetServiceDisplayNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceDisplayNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5426 {
5427         if (flags & NDR_IN) {
5428                 if (r->in.handle == NULL) {
5429                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5430                 }
5431                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5432                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5433                 if (r->in.service_name) {
5434                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5435                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5436                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5437                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5438                 }
5439                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5440                 if (r->in.display_name_length) {
5441                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5442                 }
5443         }
5444         if (flags & NDR_OUT) {
5445                 if (r->out.display_name == NULL) {
5446                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5447                 }
5448                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.display_name));
5449                 if (*r->out.display_name) {
5450                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5451                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5452                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.display_name, CH_UTF16)));
5453                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.display_name, ndr_charset_length(*r->out.display_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5454                 }
5455                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5456                 if (r->out.display_name_length) {
5457                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5458                 }
5459                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5460         }
5461         return NDR_ERR_SUCCESS;
5462 }
5463 
5464 static enum ndr_err_code ndr_pull_svcctl_GetServiceDisplayNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceDisplayNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5465 {
5466         uint32_t _ptr_service_name;
5467         uint32_t _ptr_display_name;
5468         uint32_t _ptr_display_name_length;
5469         TALLOC_CTX *_mem_save_handle_0;
5470         TALLOC_CTX *_mem_save_service_name_0;
5471         TALLOC_CTX *_mem_save_display_name_0;
5472         TALLOC_CTX *_mem_save_display_name_1;
5473         TALLOC_CTX *_mem_save_display_name_length_0;
5474         if (flags & NDR_IN) {
5475                 ZERO_STRUCT(r->out);
5476 
5477                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5478                         NDR_PULL_ALLOC(ndr, r->in.handle);
5479                 }
5480                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5481                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5482                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5483                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5484                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5485                 if (_ptr_service_name) {
5486                         NDR_PULL_ALLOC(ndr, r->in.service_name);
5487                 } else {
5488                         r->in.service_name = NULL;
5489                 }
5490                 if (r->in.service_name) {
5491                         _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5492                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5493                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5494                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5495                         if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5496                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
5497                         }
5498                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5499                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
5500                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5501                 }
5502                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5503                 if (_ptr_display_name_length) {
5504                         NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5505                 } else {
5506                         r->in.display_name_length = NULL;
5507                 }
5508                 if (r->in.display_name_length) {
5509                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5510                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5511                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5512                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5513                 }
5514                 NDR_PULL_ALLOC(ndr, r->out.display_name);
5515                 ZERO_STRUCTP(r->out.display_name);
5516         }
5517         if (flags & NDR_OUT) {
5518                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5519                         NDR_PULL_ALLOC(ndr, r->out.display_name);
5520                 }
5521                 _mem_save_display_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5522                 NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name, LIBNDR_FLAG_REF_ALLOC);
5523                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name));
5524                 if (_ptr_display_name) {
5525                         NDR_PULL_ALLOC(ndr, *r->out.display_name);
5526                 } else {
5527                         *r->out.display_name = NULL;
5528                 }
5529                 if (*r->out.display_name) {
5530                         _mem_save_display_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5531                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.display_name, 0);
5532                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.display_name));
5533                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.display_name));
5534                         if (ndr_get_array_length(ndr, r->out.display_name) > ndr_get_array_size(ndr, r->out.display_name)) {
5535                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.display_name), ndr_get_array_length(ndr, r->out.display_name));
5536                         }
5537                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t)));
5538                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.display_name, ndr_get_array_length(ndr, r->out.display_name), sizeof(uint16_t), CH_UTF16));
5539                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_1, 0);
5540                 }
5541                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_0, LIBNDR_FLAG_REF_ALLOC);
5542                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5543                 if (_ptr_display_name_length) {
5544                         NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5545                 } else {
5546                         r->out.display_name_length = NULL;
5547                 }
5548                 if (r->out.display_name_length) {
5549                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5550                         NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5551                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5552                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5553                 }
5554                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5555         }
5556         return NDR_ERR_SUCCESS;
5557 }
5558 
5559 _PUBLIC_ void ndr_print_svcctl_GetServiceDisplayNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceDisplayNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5560 {
5561         ndr_print_struct(ndr, name, "svcctl_GetServiceDisplayNameA");
5562         ndr->depth++;
5563         if (flags & NDR_SET_VALUES) {
5564                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5565         }
5566         if (flags & NDR_IN) {
5567                 ndr_print_struct(ndr, "in", "svcctl_GetServiceDisplayNameA");
5568                 ndr->depth++;
5569                 ndr_print_ptr(ndr, "handle", r->in.handle);
5570                 ndr->depth++;
5571                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5572                 ndr->depth--;
5573                 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5574                 ndr->depth++;
5575                 if (r->in.service_name) {
5576                         ndr_print_string(ndr, "service_name", r->in.service_name);
5577                 }
5578                 ndr->depth--;
5579                 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5580                 ndr->depth++;
5581                 if (r->in.display_name_length) {
5582                         ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5583                 }
5584                 ndr->depth--;
5585                 ndr->depth--;
5586         }
5587         if (flags & NDR_OUT) {
5588                 ndr_print_struct(ndr, "out", "svcctl_GetServiceDisplayNameA");
5589                 ndr->depth++;
5590                 ndr_print_ptr(ndr, "display_name", r->out.display_name);
5591                 ndr->depth++;
5592                 ndr_print_ptr(ndr, "display_name", *r->out.display_name);
5593                 ndr->depth++;
5594                 if (*r->out.display_name) {
5595                         ndr_print_string(ndr, "display_name", *r->out.display_name);
5596                 }
5597                 ndr->depth--;
5598                 ndr->depth--;
5599                 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5600                 ndr->depth++;
5601                 if (r->out.display_name_length) {
5602                         ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5603                 }
5604                 ndr->depth--;
5605                 ndr_print_WERROR(ndr, "result", r->out.result);
5606                 ndr->depth--;
5607         }
5608         ndr->depth--;
5609 }
5610 
5611 static enum ndr_err_code ndr_push_svcctl_GetServiceKeyNameA(struct ndr_push *ndr, int flags, const struct svcctl_GetServiceKeyNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5612 {
5613         if (flags & NDR_IN) {
5614                 if (r->in.handle == NULL) {
5615                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5616                 }
5617                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5618                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.service_name));
5619                 if (r->in.service_name) {
5620                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5621                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5622                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.service_name, CH_UTF16)));
5623                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.service_name, ndr_charset_length(r->in.service_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5624                 }
5625                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.display_name_length));
5626                 if (r->in.display_name_length) {
5627                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.display_name_length));
5628                 }
5629         }
5630         if (flags & NDR_OUT) {
5631                 if (r->out.key_name == NULL) {
5632                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5633                 }
5634                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_name));
5635                 if (*r->out.key_name) {
5636                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5637                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5638                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.key_name, CH_UTF16)));
5639                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.key_name, ndr_charset_length(*r->out.key_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5640                 }
5641                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.display_name_length));
5642                 if (r->out.display_name_length) {
5643                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.display_name_length));
5644                 }
5645                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5646         }
5647         return NDR_ERR_SUCCESS;
5648 }
5649 
5650 static enum ndr_err_code ndr_pull_svcctl_GetServiceKeyNameA(struct ndr_pull *ndr, int flags, struct svcctl_GetServiceKeyNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5651 {
5652         uint32_t _ptr_service_name;
5653         uint32_t _ptr_key_name;
5654         uint32_t _ptr_display_name_length;
5655         TALLOC_CTX *_mem_save_handle_0;
5656         TALLOC_CTX *_mem_save_service_name_0;
5657         TALLOC_CTX *_mem_save_key_name_0;
5658         TALLOC_CTX *_mem_save_key_name_1;
5659         TALLOC_CTX *_mem_save_display_name_length_0;
5660         if (flags & NDR_IN) {
5661                 ZERO_STRUCT(r->out);
5662 
5663                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5664                         NDR_PULL_ALLOC(ndr, r->in.handle);
5665                 }
5666                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5667                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5668                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5669                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5670                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_name));
5671                 if (_ptr_service_name) {
5672                         NDR_PULL_ALLOC(ndr, r->in.service_name);
5673                 } else {
5674                         r->in.service_name = NULL;
5675                 }
5676                 if (r->in.service_name) {
5677                         _mem_save_service_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5678                         NDR_PULL_SET_MEM_CTX(ndr, r->in.service_name, 0);
5679                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.service_name));
5680                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.service_name));
5681                         if (ndr_get_array_length(ndr, &r->in.service_name) > ndr_get_array_size(ndr, &r->in.service_name)) {
5682                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.service_name), ndr_get_array_length(ndr, &r->in.service_name));
5683                         }
5684                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t)));
5685                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.service_name, ndr_get_array_length(ndr, &r->in.service_name), sizeof(uint16_t), CH_UTF16));
5686                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_name_0, 0);
5687                 }
5688                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5689                 if (_ptr_display_name_length) {
5690                         NDR_PULL_ALLOC(ndr, r->in.display_name_length);
5691                 } else {
5692                         r->in.display_name_length = NULL;
5693                 }
5694                 if (r->in.display_name_length) {
5695                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5696                         NDR_PULL_SET_MEM_CTX(ndr, r->in.display_name_length, 0);
5697                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.display_name_length));
5698                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5699                 }
5700                 NDR_PULL_ALLOC(ndr, r->out.key_name);
5701                 ZERO_STRUCTP(r->out.key_name);
5702         }
5703         if (flags & NDR_OUT) {
5704                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5705                         NDR_PULL_ALLOC(ndr, r->out.key_name);
5706                 }
5707                 _mem_save_key_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5708                 NDR_PULL_SET_MEM_CTX(ndr, r->out.key_name, LIBNDR_FLAG_REF_ALLOC);
5709                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_name));
5710                 if (_ptr_key_name) {
5711                         NDR_PULL_ALLOC(ndr, *r->out.key_name);
5712                 } else {
5713                         *r->out.key_name = NULL;
5714                 }
5715                 if (*r->out.key_name) {
5716                         _mem_save_key_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
5717                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_name, 0);
5718                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.key_name));
5719                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.key_name));
5720                         if (ndr_get_array_length(ndr, r->out.key_name) > ndr_get_array_size(ndr, r->out.key_name)) {
5721                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.key_name), ndr_get_array_length(ndr, r->out.key_name));
5722                         }
5723                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t)));
5724                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.key_name, ndr_get_array_length(ndr, r->out.key_name), sizeof(uint16_t), CH_UTF16));
5725                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_1, 0);
5726                 }
5727                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_name_0, LIBNDR_FLAG_REF_ALLOC);
5728                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_display_name_length));
5729                 if (_ptr_display_name_length) {
5730                         NDR_PULL_ALLOC(ndr, r->out.display_name_length);
5731                 } else {
5732                         r->out.display_name_length = NULL;
5733                 }
5734                 if (r->out.display_name_length) {
5735                         _mem_save_display_name_length_0 = NDR_PULL_GET_MEM_CTX(ndr);
5736                         NDR_PULL_SET_MEM_CTX(ndr, r->out.display_name_length, 0);
5737                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.display_name_length));
5738                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_display_name_length_0, 0);
5739                 }
5740                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5741         }
5742         return NDR_ERR_SUCCESS;
5743 }
5744 
5745 _PUBLIC_ void ndr_print_svcctl_GetServiceKeyNameA(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetServiceKeyNameA *r)
     /* [<][>][^][v][top][bottom][index][help] */
5746 {
5747         ndr_print_struct(ndr, name, "svcctl_GetServiceKeyNameA");
5748         ndr->depth++;
5749         if (flags & NDR_SET_VALUES) {
5750                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5751         }
5752         if (flags & NDR_IN) {
5753                 ndr_print_struct(ndr, "in", "svcctl_GetServiceKeyNameA");
5754                 ndr->depth++;
5755                 ndr_print_ptr(ndr, "handle", r->in.handle);
5756                 ndr->depth++;
5757                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5758                 ndr->depth--;
5759                 ndr_print_ptr(ndr, "service_name", r->in.service_name);
5760                 ndr->depth++;
5761                 if (r->in.service_name) {
5762                         ndr_print_string(ndr, "service_name", r->in.service_name);
5763                 }
5764                 ndr->depth--;
5765                 ndr_print_ptr(ndr, "display_name_length", r->in.display_name_length);
5766                 ndr->depth++;
5767                 if (r->in.display_name_length) {
5768                         ndr_print_uint32(ndr, "display_name_length", *r->in.display_name_length);
5769                 }
5770                 ndr->depth--;
5771                 ndr->depth--;
5772         }
5773         if (flags & NDR_OUT) {
5774                 ndr_print_struct(ndr, "out", "svcctl_GetServiceKeyNameA");
5775                 ndr->depth++;
5776                 ndr_print_ptr(ndr, "key_name", r->out.key_name);
5777                 ndr->depth++;
5778                 ndr_print_ptr(ndr, "key_name", *r->out.key_name);
5779                 ndr->depth++;
5780                 if (*r->out.key_name) {
5781                         ndr_print_string(ndr, "key_name", *r->out.key_name);
5782                 }
5783                 ndr->depth--;
5784                 ndr->depth--;
5785                 ndr_print_ptr(ndr, "display_name_length", r->out.display_name_length);
5786                 ndr->depth++;
5787                 if (r->out.display_name_length) {
5788                         ndr_print_uint32(ndr, "display_name_length", *r->out.display_name_length);
5789                 }
5790                 ndr->depth--;
5791                 ndr_print_WERROR(ndr, "result", r->out.result);
5792                 ndr->depth--;
5793         }
5794         ndr->depth--;
5795 }
5796 
5797 static enum ndr_err_code ndr_push_svcctl_GetCurrentGroupeStateW(struct ndr_push *ndr, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5798 {
5799         if (flags & NDR_IN) {
5800         }
5801         if (flags & NDR_OUT) {
5802                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5803         }
5804         return NDR_ERR_SUCCESS;
5805 }
5806 
5807 static enum ndr_err_code ndr_pull_svcctl_GetCurrentGroupeStateW(struct ndr_pull *ndr, int flags, struct svcctl_GetCurrentGroupeStateW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5808 {
5809         if (flags & NDR_IN) {
5810         }
5811         if (flags & NDR_OUT) {
5812                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5813         }
5814         return NDR_ERR_SUCCESS;
5815 }
5816 
5817 _PUBLIC_ void ndr_print_svcctl_GetCurrentGroupeStateW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_GetCurrentGroupeStateW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5818 {
5819         ndr_print_struct(ndr, name, "svcctl_GetCurrentGroupeStateW");
5820         ndr->depth++;
5821         if (flags & NDR_SET_VALUES) {
5822                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5823         }
5824         if (flags & NDR_IN) {
5825                 ndr_print_struct(ndr, "in", "svcctl_GetCurrentGroupeStateW");
5826                 ndr->depth++;
5827                 ndr->depth--;
5828         }
5829         if (flags & NDR_OUT) {
5830                 ndr_print_struct(ndr, "out", "svcctl_GetCurrentGroupeStateW");
5831                 ndr->depth++;
5832                 ndr_print_WERROR(ndr, "result", r->out.result);
5833                 ndr->depth--;
5834         }
5835         ndr->depth--;
5836 }
5837 
5838 static enum ndr_err_code ndr_push_svcctl_EnumServiceGroupW(struct ndr_push *ndr, int flags, const struct svcctl_EnumServiceGroupW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5839 {
5840         if (flags & NDR_IN) {
5841         }
5842         if (flags & NDR_OUT) {
5843                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5844         }
5845         return NDR_ERR_SUCCESS;
5846 }
5847 
5848 static enum ndr_err_code ndr_pull_svcctl_EnumServiceGroupW(struct ndr_pull *ndr, int flags, struct svcctl_EnumServiceGroupW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5849 {
5850         if (flags & NDR_IN) {
5851         }
5852         if (flags & NDR_OUT) {
5853                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5854         }
5855         return NDR_ERR_SUCCESS;
5856 }
5857 
5858 _PUBLIC_ void ndr_print_svcctl_EnumServiceGroupW(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_EnumServiceGroupW *r)
     /* [<][>][^][v][top][bottom][index][help] */
5859 {
5860         ndr_print_struct(ndr, name, "svcctl_EnumServiceGroupW");
5861         ndr->depth++;
5862         if (flags & NDR_SET_VALUES) {
5863                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5864         }
5865         if (flags & NDR_IN) {
5866                 ndr_print_struct(ndr, "in", "svcctl_EnumServiceGroupW");
5867                 ndr->depth++;
5868                 ndr->depth--;
5869         }
5870         if (flags & NDR_OUT) {
5871                 ndr_print_struct(ndr, "out", "svcctl_EnumServiceGroupW");
5872                 ndr->depth++;
5873                 ndr_print_WERROR(ndr, "result", r->out.result);
5874                 ndr->depth--;
5875         }
5876         ndr->depth--;
5877 }
5878 
5879 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
5880 {
5881         if (flags & NDR_IN) {
5882                 if (r->in.handle == NULL) {
5883                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5884                 }
5885                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5886                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5887                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5888                 if (r->in.info) {
5889                         NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5890                 }
5891         }
5892         if (flags & NDR_OUT) {
5893                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5894         }
5895         return NDR_ERR_SUCCESS;
5896 }
5897 
5898 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
5899 {
5900         uint32_t _ptr_info;
5901         TALLOC_CTX *_mem_save_handle_0;
5902         TALLOC_CTX *_mem_save_info_0;
5903         if (flags & NDR_IN) {
5904                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5905                         NDR_PULL_ALLOC(ndr, r->in.handle);
5906                 }
5907                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5908                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5909                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5910                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5911                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5912                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5913                 if (_ptr_info) {
5914                         NDR_PULL_ALLOC(ndr, r->in.info);
5915                 } else {
5916                         r->in.info = NULL;
5917                 }
5918                 if (r->in.info) {
5919                         _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
5920                         NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
5921                         NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
5922                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
5923                 }
5924         }
5925         if (flags & NDR_OUT) {
5926                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
5927         }
5928         return NDR_ERR_SUCCESS;
5929 }
5930 
5931 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
5932 {
5933         ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2A");
5934         ndr->depth++;
5935         if (flags & NDR_SET_VALUES) {
5936                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
5937         }
5938         if (flags & NDR_IN) {
5939                 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2A");
5940                 ndr->depth++;
5941                 ndr_print_ptr(ndr, "handle", r->in.handle);
5942                 ndr->depth++;
5943                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
5944                 ndr->depth--;
5945                 ndr_print_uint32(ndr, "info_level", r->in.info_level);
5946                 ndr_print_ptr(ndr, "info", r->in.info);
5947                 ndr->depth++;
5948                 if (r->in.info) {
5949                         ndr_print_uint8(ndr, "info", *r->in.info);
5950                 }
5951                 ndr->depth--;
5952                 ndr->depth--;
5953         }
5954         if (flags & NDR_OUT) {
5955                 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2A");
5956                 ndr->depth++;
5957                 ndr_print_WERROR(ndr, "result", r->out.result);
5958                 ndr->depth--;
5959         }
5960         ndr->depth--;
5961 }
5962 
5963 static enum ndr_err_code ndr_push_svcctl_ChangeServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_ChangeServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
5964 {
5965         if (flags & NDR_IN) {
5966                 if (r->in.handle == NULL) {
5967                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
5968                 }
5969                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5970                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
5971                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.info));
5972                 if (r->in.info) {
5973                         NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->in.info));
5974                 }
5975         }
5976         if (flags & NDR_OUT) {
5977                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
5978         }
5979         return NDR_ERR_SUCCESS;
5980 }
5981 
5982 static enum ndr_err_code ndr_pull_svcctl_ChangeServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_ChangeServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
5983 {
5984         uint32_t _ptr_info;
5985         TALLOC_CTX *_mem_save_handle_0;
5986         TALLOC_CTX *_mem_save_info_0;
5987         if (flags & NDR_IN) {
5988                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
5989                         NDR_PULL_ALLOC(ndr, r->in.handle);
5990                 }
5991                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
5992                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
5993                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
5994                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
5995                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
5996                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
5997                 if (_ptr_info) {
5998                         NDR_PULL_ALLOC(ndr, r->in.info);
5999                 } else {
6000                         r->in.info = NULL;
6001                 }
6002                 if (r->in.info) {
6003                         _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
6004                         NDR_PULL_SET_MEM_CTX(ndr, r->in.info, 0);
6005                         NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->in.info));
6006                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
6007                 }
6008         }
6009         if (flags & NDR_OUT) {
6010                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6011         }
6012         return NDR_ERR_SUCCESS;
6013 }
6014 
6015 _PUBLIC_ void ndr_print_svcctl_ChangeServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_ChangeServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
6016 {
6017         ndr_print_struct(ndr, name, "svcctl_ChangeServiceConfig2W");
6018         ndr->depth++;
6019         if (flags & NDR_SET_VALUES) {
6020                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6021         }
6022         if (flags & NDR_IN) {
6023                 ndr_print_struct(ndr, "in", "svcctl_ChangeServiceConfig2W");
6024                 ndr->depth++;
6025                 ndr_print_ptr(ndr, "handle", r->in.handle);
6026                 ndr->depth++;
6027                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6028                 ndr->depth--;
6029                 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6030                 ndr_print_ptr(ndr, "info", r->in.info);
6031                 ndr->depth++;
6032                 if (r->in.info) {
6033                         ndr_print_uint8(ndr, "info", *r->in.info);
6034                 }
6035                 ndr->depth--;
6036                 ndr->depth--;
6037         }
6038         if (flags & NDR_OUT) {
6039                 ndr_print_struct(ndr, "out", "svcctl_ChangeServiceConfig2W");
6040                 ndr->depth++;
6041                 ndr_print_WERROR(ndr, "result", r->out.result);
6042                 ndr->depth--;
6043         }
6044         ndr->depth--;
6045 }
6046 
6047 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2A(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
6048 {
6049         if (flags & NDR_IN) {
6050                 if (r->in.handle == NULL) {
6051                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6052                 }
6053                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6054                 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6055                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6056         }
6057         if (flags & NDR_OUT) {
6058                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6059                 if (r->out.needed == NULL) {
6060                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6061                 }
6062                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6063                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6064         }
6065         return NDR_ERR_SUCCESS;
6066 }
6067 
6068 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2A(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
6069 {
6070         TALLOC_CTX *_mem_save_handle_0;
6071         TALLOC_CTX *_mem_save_needed_0;
6072         if (flags & NDR_IN) {
6073                 ZERO_STRUCT(r->out);
6074 
6075                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6076                         NDR_PULL_ALLOC(ndr, r->in.handle);
6077                 }
6078                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6079                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6080                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6081                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6082                 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6083                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6084                 NDR_PULL_ALLOC(ndr, r->out.needed);
6085                 ZERO_STRUCTP(r->out.needed);
6086         }
6087         if (flags & NDR_OUT) {
6088                 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6089                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6090                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6091                         NDR_PULL_ALLOC(ndr, r->out.needed);
6092                 }
6093                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6094                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6095                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6096                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6097                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6098         }
6099         return NDR_ERR_SUCCESS;
6100 }
6101 
6102 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2A(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2A *r)
     /* [<][>][^][v][top][bottom][index][help] */
6103 {
6104         ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2A");
6105         ndr->depth++;
6106         if (flags & NDR_SET_VALUES) {
6107                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6108         }
6109         if (flags & NDR_IN) {
6110                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2A");
6111                 ndr->depth++;
6112                 ndr_print_ptr(ndr, "handle", r->in.handle);
6113                 ndr->depth++;
6114                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6115                 ndr->depth--;
6116                 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6117                 ndr_print_uint32(ndr, "offered", r->in.offered);
6118                 ndr->depth--;
6119         }
6120         if (flags & NDR_OUT) {
6121                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2A");
6122                 ndr->depth++;
6123                 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6124                 ndr_print_ptr(ndr, "needed", r->out.needed);
6125                 ndr->depth++;
6126                 ndr_print_uint32(ndr, "needed", *r->out.needed);
6127                 ndr->depth--;
6128                 ndr_print_WERROR(ndr, "result", r->out.result);
6129                 ndr->depth--;
6130         }
6131         ndr->depth--;
6132 }
6133 
6134 static enum ndr_err_code ndr_push_svcctl_QueryServiceConfig2W(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
6135 {
6136         if (flags & NDR_IN) {
6137                 if (r->in.handle == NULL) {
6138                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6139                 }
6140                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6141                 NDR_CHECK(ndr_push_svcctl_ConfigLevel(ndr, NDR_SCALARS, r->in.info_level));
6142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6143         }
6144         if (flags & NDR_OUT) {
6145                 if (r->out.buffer == NULL) {
6146                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6147                 }
6148                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6149                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6150                 if (r->out.needed == NULL) {
6151                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6152                 }
6153                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6154                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6155         }
6156         return NDR_ERR_SUCCESS;
6157 }
6158 
6159 static enum ndr_err_code ndr_pull_svcctl_QueryServiceConfig2W(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
6160 {
6161         TALLOC_CTX *_mem_save_handle_0;
6162         TALLOC_CTX *_mem_save_needed_0;
6163         if (flags & NDR_IN) {
6164                 ZERO_STRUCT(r->out);
6165 
6166                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6167                         NDR_PULL_ALLOC(ndr, r->in.handle);
6168                 }
6169                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6170                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6171                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6172                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6173                 NDR_CHECK(ndr_pull_svcctl_ConfigLevel(ndr, NDR_SCALARS, &r->in.info_level));
6174                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6175                 if (r->in.offered > 8192) {
6176                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6177                 }
6178                 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6179                 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6180                 NDR_PULL_ALLOC(ndr, r->out.needed);
6181                 ZERO_STRUCTP(r->out.needed);
6182         }
6183         if (flags & NDR_OUT) {
6184                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6185                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6186                         NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6187                 }
6188                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6189                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6190                         NDR_PULL_ALLOC(ndr, r->out.needed);
6191                 }
6192                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6193                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6194                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6195                 if (*r->out.needed > 8192) {
6196                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6197                 }
6198                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6199                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6200                 if (r->out.buffer) {
6201                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6202                 }
6203         }
6204         return NDR_ERR_SUCCESS;
6205 }
6206 
6207 _PUBLIC_ void ndr_print_svcctl_QueryServiceConfig2W(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceConfig2W *r)
     /* [<][>][^][v][top][bottom][index][help] */
6208 {
6209         ndr_print_struct(ndr, name, "svcctl_QueryServiceConfig2W");
6210         ndr->depth++;
6211         if (flags & NDR_SET_VALUES) {
6212                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6213         }
6214         if (flags & NDR_IN) {
6215                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceConfig2W");
6216                 ndr->depth++;
6217                 ndr_print_ptr(ndr, "handle", r->in.handle);
6218                 ndr->depth++;
6219                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6220                 ndr->depth--;
6221                 ndr_print_svcctl_ConfigLevel(ndr, "info_level", r->in.info_level);
6222                 ndr_print_uint32(ndr, "offered", r->in.offered);
6223                 ndr->depth--;
6224         }
6225         if (flags & NDR_OUT) {
6226                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceConfig2W");
6227                 ndr->depth++;
6228                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6229                 ndr->depth++;
6230                 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6231                 ndr->depth--;
6232                 ndr_print_ptr(ndr, "needed", r->out.needed);
6233                 ndr->depth++;
6234                 ndr_print_uint32(ndr, "needed", *r->out.needed);
6235                 ndr->depth--;
6236                 ndr_print_WERROR(ndr, "result", r->out.result);
6237                 ndr->depth--;
6238         }
6239         ndr->depth--;
6240 }
6241 
6242 static enum ndr_err_code ndr_push_svcctl_QueryServiceStatusEx(struct ndr_push *ndr, int flags, const struct svcctl_QueryServiceStatusEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
6243 {
6244         if (flags & NDR_IN) {
6245                 if (r->in.handle == NULL) {
6246                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6247                 }
6248                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6249                 NDR_CHECK(ndr_push_svcctl_StatusLevel(ndr, NDR_SCALARS, r->in.info_level));
6250                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6251         }
6252         if (flags & NDR_OUT) {
6253                 if (r->out.buffer == NULL) {
6254                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6255                 }
6256                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6257                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, r->in.offered));
6258                 if (r->out.needed == NULL) {
6259                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6260                 }
6261                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6262                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6263         }
6264         return NDR_ERR_SUCCESS;
6265 }
6266 
6267 static enum ndr_err_code ndr_pull_svcctl_QueryServiceStatusEx(struct ndr_pull *ndr, int flags, struct svcctl_QueryServiceStatusEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
6268 {
6269         TALLOC_CTX *_mem_save_handle_0;
6270         TALLOC_CTX *_mem_save_needed_0;
6271         if (flags & NDR_IN) {
6272                 ZERO_STRUCT(r->out);
6273 
6274                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6275                         NDR_PULL_ALLOC(ndr, r->in.handle);
6276                 }
6277                 _mem_save_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6278                 NDR_PULL_SET_MEM_CTX(ndr, r->in.handle, LIBNDR_FLAG_REF_ALLOC);
6279                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.handle));
6280                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_handle_0, LIBNDR_FLAG_REF_ALLOC);
6281                 NDR_CHECK(ndr_pull_svcctl_StatusLevel(ndr, NDR_SCALARS, &r->in.info_level));
6282                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6283                 if (r->in.offered > 8192) {
6284                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6285                 }
6286                 NDR_PULL_ALLOC_N(ndr, r->out.buffer, r->in.offered);
6287                 memset(r->out.buffer, 0, (r->in.offered) * sizeof(*r->out.buffer));
6288                 NDR_PULL_ALLOC(ndr, r->out.needed);
6289                 ZERO_STRUCTP(r->out.needed);
6290         }
6291         if (flags & NDR_OUT) {
6292                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
6293                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6294                         NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
6295                 }
6296                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer)));
6297                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6298                         NDR_PULL_ALLOC(ndr, r->out.needed);
6299                 }
6300                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6301                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6302                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6303                 if (*r->out.needed > 8192) {
6304                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6305                 }
6306                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6307                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6308                 if (r->out.buffer) {
6309                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, r->in.offered));
6310                 }
6311         }
6312         return NDR_ERR_SUCCESS;
6313 }
6314 
6315 _PUBLIC_ void ndr_print_svcctl_QueryServiceStatusEx(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_QueryServiceStatusEx *r)
     /* [<][>][^][v][top][bottom][index][help] */
6316 {
6317         ndr_print_struct(ndr, name, "svcctl_QueryServiceStatusEx");
6318         ndr->depth++;
6319         if (flags & NDR_SET_VALUES) {
6320                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6321         }
6322         if (flags & NDR_IN) {
6323                 ndr_print_struct(ndr, "in", "svcctl_QueryServiceStatusEx");
6324                 ndr->depth++;
6325                 ndr_print_ptr(ndr, "handle", r->in.handle);
6326                 ndr->depth++;
6327                 ndr_print_policy_handle(ndr, "handle", r->in.handle);
6328                 ndr->depth--;
6329                 ndr_print_svcctl_StatusLevel(ndr, "info_level", r->in.info_level);
6330                 ndr_print_uint32(ndr, "offered", r->in.offered);
6331                 ndr->depth--;
6332         }
6333         if (flags & NDR_OUT) {
6334                 ndr_print_struct(ndr, "out", "svcctl_QueryServiceStatusEx");
6335                 ndr->depth++;
6336                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
6337                 ndr->depth++;
6338                 ndr_print_array_uint8(ndr, "buffer", r->out.buffer, r->in.offered);
6339                 ndr->depth--;
6340                 ndr_print_ptr(ndr, "needed", r->out.needed);
6341                 ndr->depth++;
6342                 ndr_print_uint32(ndr, "needed", *r->out.needed);
6343                 ndr->depth--;
6344                 ndr_print_WERROR(ndr, "result", r->out.result);
6345                 ndr->depth--;
6346         }
6347         ndr->depth--;
6348 }
6349 
6350 static enum ndr_err_code ndr_push_EnumServicesStatusExA(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExA *r)
     /* [<][>][^][v][top][bottom][index][help] */
6351 {
6352         if (flags & NDR_IN) {
6353                 if (r->in.scmanager == NULL) {
6354                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6355                 }
6356                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6357                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6358                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6359                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6360                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6361                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6362                 if (r->in.resume_handle) {
6363                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6364                 }
6365         }
6366         if (flags & NDR_OUT) {
6367                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6368                 if (r->out.needed == NULL) {
6369                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6370                 }
6371                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6372                 if (r->out.service_returned == NULL) {
6373                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6374                 }
6375                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6376                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6377                 if (r->out.resume_handle) {
6378                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6379                 }
6380                 if (r->out.group_name == NULL) {
6381                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6382                 }
6383                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.group_name));
6384                 if (*r->out.group_name) {
6385                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6386                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6387                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.group_name, CH_UTF16)));
6388                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.group_name, ndr_charset_length(*r->out.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6389                 }
6390                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6391         }
6392         return NDR_ERR_SUCCESS;
6393 }
6394 
6395 static enum ndr_err_code ndr_pull_EnumServicesStatusExA(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExA *r)
     /* [<][>][^][v][top][bottom][index][help] */
6396 {
6397         uint32_t _ptr_resume_handle;
6398         uint32_t _ptr_group_name;
6399         TALLOC_CTX *_mem_save_scmanager_0;
6400         TALLOC_CTX *_mem_save_needed_0;
6401         TALLOC_CTX *_mem_save_service_returned_0;
6402         TALLOC_CTX *_mem_save_resume_handle_0;
6403         TALLOC_CTX *_mem_save_group_name_0;
6404         TALLOC_CTX *_mem_save_group_name_1;
6405         if (flags & NDR_IN) {
6406                 ZERO_STRUCT(r->out);
6407 
6408                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6409                         NDR_PULL_ALLOC(ndr, r->in.scmanager);
6410                 }
6411                 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6412                 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6413                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6414                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6415                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6416                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6417                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6418                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6419                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6420                 if (_ptr_resume_handle) {
6421                         NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6422                 } else {
6423                         r->in.resume_handle = NULL;
6424                 }
6425                 if (r->in.resume_handle) {
6426                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6427                         NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6428                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6429                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6430                 }
6431                 NDR_PULL_ALLOC(ndr, r->out.needed);
6432                 ZERO_STRUCTP(r->out.needed);
6433                 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6434                 ZERO_STRUCTP(r->out.service_returned);
6435                 NDR_PULL_ALLOC(ndr, r->out.group_name);
6436                 ZERO_STRUCTP(r->out.group_name);
6437         }
6438         if (flags & NDR_OUT) {
6439                 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered);
6440                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6441                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6442                         NDR_PULL_ALLOC(ndr, r->out.needed);
6443                 }
6444                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6445                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6446                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6447                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6448                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6449                         NDR_PULL_ALLOC(ndr, r->out.service_returned);
6450                 }
6451                 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6452                 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6453                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6454                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6455                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6456                 if (_ptr_resume_handle) {
6457                         NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6458                 } else {
6459                         r->out.resume_handle = NULL;
6460                 }
6461                 if (r->out.resume_handle) {
6462                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6463                         NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6464                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6465                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6466                 }
6467                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6468                         NDR_PULL_ALLOC(ndr, r->out.group_name);
6469                 }
6470                 _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6471                 NDR_PULL_SET_MEM_CTX(ndr, r->out.group_name, LIBNDR_FLAG_REF_ALLOC);
6472                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6473                 if (_ptr_group_name) {
6474                         NDR_PULL_ALLOC(ndr, *r->out.group_name);
6475                 } else {
6476                         *r->out.group_name = NULL;
6477                 }
6478                 if (*r->out.group_name) {
6479                         _mem_save_group_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
6480                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.group_name, 0);
6481                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.group_name));
6482                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.group_name));
6483                         if (ndr_get_array_length(ndr, r->out.group_name) > ndr_get_array_size(ndr, r->out.group_name)) {
6484                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.group_name), ndr_get_array_length(ndr, r->out.group_name));
6485                         }
6486                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t)));
6487                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.group_name, ndr_get_array_length(ndr, r->out.group_name), sizeof(uint16_t), CH_UTF16));
6488                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_1, 0);
6489                 }
6490                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, LIBNDR_FLAG_REF_ALLOC);
6491                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6492         }
6493         return NDR_ERR_SUCCESS;
6494 }
6495 
6496 _PUBLIC_ void ndr_print_EnumServicesStatusExA(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExA *r)
     /* [<][>][^][v][top][bottom][index][help] */
6497 {
6498         ndr_print_struct(ndr, name, "EnumServicesStatusExA");
6499         ndr->depth++;
6500         if (flags & NDR_SET_VALUES) {
6501                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6502         }
6503         if (flags & NDR_IN) {
6504                 ndr_print_struct(ndr, "in", "EnumServicesStatusExA");
6505                 ndr->depth++;
6506                 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6507                 ndr->depth++;
6508                 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6509                 ndr->depth--;
6510                 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6511                 ndr_print_uint32(ndr, "type", r->in.type);
6512                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6513                 ndr_print_uint32(ndr, "offered", r->in.offered);
6514                 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6515                 ndr->depth++;
6516                 if (r->in.resume_handle) {
6517                         ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6518                 }
6519                 ndr->depth--;
6520                 ndr->depth--;
6521         }
6522         if (flags & NDR_OUT) {
6523                 ndr_print_struct(ndr, "out", "EnumServicesStatusExA");
6524                 ndr->depth++;
6525                 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
6526                 ndr_print_ptr(ndr, "needed", r->out.needed);
6527                 ndr->depth++;
6528                 ndr_print_uint32(ndr, "needed", *r->out.needed);
6529                 ndr->depth--;
6530                 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6531                 ndr->depth++;
6532                 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6533                 ndr->depth--;
6534                 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6535                 ndr->depth++;
6536                 if (r->out.resume_handle) {
6537                         ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6538                 }
6539                 ndr->depth--;
6540                 ndr_print_ptr(ndr, "group_name", r->out.group_name);
6541                 ndr->depth++;
6542                 ndr_print_ptr(ndr, "group_name", *r->out.group_name);
6543                 ndr->depth++;
6544                 if (*r->out.group_name) {
6545                         ndr_print_string(ndr, "group_name", *r->out.group_name);
6546                 }
6547                 ndr->depth--;
6548                 ndr->depth--;
6549                 ndr_print_WERROR(ndr, "result", r->out.result);
6550                 ndr->depth--;
6551         }
6552         ndr->depth--;
6553 }
6554 
6555 static enum ndr_err_code ndr_push_EnumServicesStatusExW(struct ndr_push *ndr, int flags, const struct EnumServicesStatusExW *r)
     /* [<][>][^][v][top][bottom][index][help] */
6556 {
6557         if (flags & NDR_IN) {
6558                 if (r->in.scmanager == NULL) {
6559                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6560                 }
6561                 NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6562                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.info_level));
6563                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.type));
6564                 NDR_CHECK(ndr_push_svcctl_ServiceState(ndr, NDR_SCALARS, r->in.state));
6565                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6566                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle));
6567                 if (r->in.resume_handle) {
6568                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.resume_handle));
6569                 }
6570                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.group_name));
6571                 if (r->in.group_name) {
6572                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6573                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6574                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.group_name, CH_UTF16)));
6575                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.group_name, ndr_charset_length(r->in.group_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6576                 }
6577         }
6578         if (flags & NDR_OUT) {
6579                 if (r->out.services == NULL) {
6580                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6581                 }
6582                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
6583                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.services, r->in.offered));
6584                 if (r->out.needed == NULL) {
6585                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6586                 }
6587                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
6588                 if (r->out.service_returned == NULL) {
6589                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
6590                 }
6591                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.service_returned));
6592                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.resume_handle));
6593                 if (r->out.resume_handle) {
6594                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.resume_handle));
6595                 }
6596                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6597         }
6598         return NDR_ERR_SUCCESS;
6599 }
6600 
6601 static enum ndr_err_code ndr_pull_EnumServicesStatusExW(struct ndr_pull *ndr, int flags, struct EnumServicesStatusExW *r)
     /* [<][>][^][v][top][bottom][index][help] */
6602 {
6603         uint32_t _ptr_resume_handle;
6604         uint32_t _ptr_group_name;
6605         TALLOC_CTX *_mem_save_scmanager_0;
6606         TALLOC_CTX *_mem_save_needed_0;
6607         TALLOC_CTX *_mem_save_service_returned_0;
6608         TALLOC_CTX *_mem_save_resume_handle_0;
6609         TALLOC_CTX *_mem_save_group_name_0;
6610         if (flags & NDR_IN) {
6611                 ZERO_STRUCT(r->out);
6612 
6613                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6614                         NDR_PULL_ALLOC(ndr, r->in.scmanager);
6615                 }
6616                 _mem_save_scmanager_0 = NDR_PULL_GET_MEM_CTX(ndr);
6617                 NDR_PULL_SET_MEM_CTX(ndr, r->in.scmanager, LIBNDR_FLAG_REF_ALLOC);
6618                 NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.scmanager));
6619                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_scmanager_0, LIBNDR_FLAG_REF_ALLOC);
6620                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.info_level));
6621                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.type));
6622                 NDR_CHECK(ndr_pull_svcctl_ServiceState(ndr, NDR_SCALARS, &r->in.state));
6623                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
6624                 if (r->in.offered > 0x40000) {
6625                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6626                 }
6627                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6628                 if (_ptr_resume_handle) {
6629                         NDR_PULL_ALLOC(ndr, r->in.resume_handle);
6630                 } else {
6631                         r->in.resume_handle = NULL;
6632                 }
6633                 if (r->in.resume_handle) {
6634                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6635                         NDR_PULL_SET_MEM_CTX(ndr, r->in.resume_handle, 0);
6636                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle));
6637                         if (*r->in.resume_handle > 0x40000) {
6638                                 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6639                         }
6640                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6641                 }
6642                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_name));
6643                 if (_ptr_group_name) {
6644                         NDR_PULL_ALLOC(ndr, r->in.group_name);
6645                 } else {
6646                         r->in.group_name = NULL;
6647                 }
6648                 if (r->in.group_name) {
6649                         _mem_save_group_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6650                         NDR_PULL_SET_MEM_CTX(ndr, r->in.group_name, 0);
6651                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.group_name));
6652                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.group_name));
6653                         if (ndr_get_array_length(ndr, &r->in.group_name) > ndr_get_array_size(ndr, &r->in.group_name)) {
6654                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.group_name), ndr_get_array_length(ndr, &r->in.group_name));
6655                         }
6656                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t)));
6657                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.group_name, ndr_get_array_length(ndr, &r->in.group_name), sizeof(uint16_t), CH_UTF16));
6658                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_name_0, 0);
6659                 }
6660                 NDR_PULL_ALLOC_N(ndr, r->out.services, r->in.offered);
6661                 memset(r->out.services, 0, (r->in.offered) * sizeof(*r->out.services));
6662                 NDR_PULL_ALLOC(ndr, r->out.needed);
6663                 ZERO_STRUCTP(r->out.needed);
6664                 NDR_PULL_ALLOC(ndr, r->out.service_returned);
6665                 ZERO_STRUCTP(r->out.service_returned);
6666         }
6667         if (flags & NDR_OUT) {
6668                 NDR_CHECK(ndr_pull_array_size(ndr, &r->out.services));
6669                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6670                         NDR_PULL_ALLOC_N(ndr, r->out.services, ndr_get_array_size(ndr, &r->out.services));
6671                 }
6672                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.services, ndr_get_array_size(ndr, &r->out.services)));
6673                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6674                         NDR_PULL_ALLOC(ndr, r->out.needed);
6675                 }
6676                 _mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
6677                 NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
6678                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
6679                 if (*r->out.needed > 0x40000) {
6680                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6681                 }
6682                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
6683                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
6684                         NDR_PULL_ALLOC(ndr, r->out.service_returned);
6685                 }
6686                 _mem_save_service_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
6687                 NDR_PULL_SET_MEM_CTX(ndr, r->out.service_returned, LIBNDR_FLAG_REF_ALLOC);
6688                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.service_returned));
6689                 if (*r->out.service_returned > 0x40000) {
6690                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6691                 }
6692                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_returned_0, LIBNDR_FLAG_REF_ALLOC);
6693                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle));
6694                 if (_ptr_resume_handle) {
6695                         NDR_PULL_ALLOC(ndr, r->out.resume_handle);
6696                 } else {
6697                         r->out.resume_handle = NULL;
6698                 }
6699                 if (r->out.resume_handle) {
6700                         _mem_save_resume_handle_0 = NDR_PULL_GET_MEM_CTX(ndr);
6701                         NDR_PULL_SET_MEM_CTX(ndr, r->out.resume_handle, 0);
6702                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.resume_handle));
6703                         if (*r->out.resume_handle > 0x40000) {
6704                                 return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
6705                         }
6706                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0);
6707                 }
6708                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6709                 if (r->out.services) {
6710                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.services, r->in.offered));
6711                 }
6712         }
6713         return NDR_ERR_SUCCESS;
6714 }
6715 
6716 _PUBLIC_ void ndr_print_EnumServicesStatusExW(struct ndr_print *ndr, const char *name, int flags, const struct EnumServicesStatusExW *r)
     /* [<][>][^][v][top][bottom][index][help] */
6717 {
6718         ndr_print_struct(ndr, name, "EnumServicesStatusExW");
6719         ndr->depth++;
6720         if (flags & NDR_SET_VALUES) {
6721                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6722         }
6723         if (flags & NDR_IN) {
6724                 ndr_print_struct(ndr, "in", "EnumServicesStatusExW");
6725                 ndr->depth++;
6726                 ndr_print_ptr(ndr, "scmanager", r->in.scmanager);
6727                 ndr->depth++;
6728                 ndr_print_policy_handle(ndr, "scmanager", r->in.scmanager);
6729                 ndr->depth--;
6730                 ndr_print_uint32(ndr, "info_level", r->in.info_level);
6731                 ndr_print_uint32(ndr, "type", r->in.type);
6732                 ndr_print_svcctl_ServiceState(ndr, "state", r->in.state);
6733                 ndr_print_uint32(ndr, "offered", r->in.offered);
6734                 ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
6735                 ndr->depth++;
6736                 if (r->in.resume_handle) {
6737                         ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
6738                 }
6739                 ndr->depth--;
6740                 ndr_print_ptr(ndr, "group_name", r->in.group_name);
6741                 ndr->depth++;
6742                 if (r->in.group_name) {
6743                         ndr_print_string(ndr, "group_name", r->in.group_name);
6744                 }
6745                 ndr->depth--;
6746                 ndr->depth--;
6747         }
6748         if (flags & NDR_OUT) {
6749                 ndr_print_struct(ndr, "out", "EnumServicesStatusExW");
6750                 ndr->depth++;
6751                 ndr_print_ptr(ndr, "services", r->out.services);
6752                 ndr->depth++;
6753                 ndr_print_array_uint8(ndr, "services", r->out.services, r->in.offered);
6754                 ndr->depth--;
6755                 ndr_print_ptr(ndr, "needed", r->out.needed);
6756                 ndr->depth++;
6757                 ndr_print_uint32(ndr, "needed", *r->out.needed);
6758                 ndr->depth--;
6759                 ndr_print_ptr(ndr, "service_returned", r->out.service_returned);
6760                 ndr->depth++;
6761                 ndr_print_uint32(ndr, "service_returned", *r->out.service_returned);
6762                 ndr->depth--;
6763                 ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
6764                 ndr->depth++;
6765                 if (r->out.resume_handle) {
6766                         ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
6767                 }
6768                 ndr->depth--;
6769                 ndr_print_WERROR(ndr, "result", r->out.result);
6770                 ndr->depth--;
6771         }
6772         ndr->depth--;
6773 }
6774 
6775 static enum ndr_err_code ndr_push_svcctl_SCSendTSMessage(struct ndr_push *ndr, int flags, const struct svcctl_SCSendTSMessage *r)
     /* [<][>][^][v][top][bottom][index][help] */
6776 {
6777         if (flags & NDR_IN) {
6778         }
6779         if (flags & NDR_OUT) {
6780                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
6781         }
6782         return NDR_ERR_SUCCESS;
6783 }
6784 
6785 static enum ndr_err_code ndr_pull_svcctl_SCSendTSMessage(struct ndr_pull *ndr, int flags, struct svcctl_SCSendTSMessage *r)
     /* [<][>][^][v][top][bottom][index][help] */
6786 {
6787         if (flags & NDR_IN) {
6788         }
6789         if (flags & NDR_OUT) {
6790                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
6791         }
6792         return NDR_ERR_SUCCESS;
6793 }
6794 
6795 _PUBLIC_ void ndr_print_svcctl_SCSendTSMessage(struct ndr_print *ndr, const char *name, int flags, const struct svcctl_SCSendTSMessage *r)
     /* [<][>][^][v][top][bottom][index][help] */
6796 {
6797         ndr_print_struct(ndr, name, "svcctl_SCSendTSMessage");
6798         ndr->depth++;
6799         if (flags & NDR_SET_VALUES) {
6800                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
6801         }
6802         if (flags & NDR_IN) {
6803                 ndr_print_struct(ndr, "in", "svcctl_SCSendTSMessage");
6804                 ndr->depth++;
6805                 ndr->depth--;
6806         }
6807         if (flags & NDR_OUT) {
6808                 ndr_print_struct(ndr, "out", "svcctl_SCSendTSMessage");
6809                 ndr->depth++;
6810                 ndr_print_WERROR(ndr, "result", r->out.result);
6811                 ndr->depth--;
6812         }
6813         ndr->depth--;
6814 }
6815 
6816 static const struct ndr_interface_call svcctl_calls[] = {
6817         {
6818                 "svcctl_CloseServiceHandle",
6819                 sizeof(struct svcctl_CloseServiceHandle),
6820                 (ndr_push_flags_fn_t) ndr_push_svcctl_CloseServiceHandle,
6821                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CloseServiceHandle,
6822                 (ndr_print_function_t) ndr_print_svcctl_CloseServiceHandle,
6823                 false,
6824         },
6825         {
6826                 "svcctl_ControlService",
6827                 sizeof(struct svcctl_ControlService),
6828                 (ndr_push_flags_fn_t) ndr_push_svcctl_ControlService,
6829                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ControlService,
6830                 (ndr_print_function_t) ndr_print_svcctl_ControlService,
6831                 false,
6832         },
6833         {
6834                 "svcctl_DeleteService",
6835                 sizeof(struct svcctl_DeleteService),
6836                 (ndr_push_flags_fn_t) ndr_push_svcctl_DeleteService,
6837                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_DeleteService,
6838                 (ndr_print_function_t) ndr_print_svcctl_DeleteService,
6839                 false,
6840         },
6841         {
6842                 "svcctl_LockServiceDatabase",
6843                 sizeof(struct svcctl_LockServiceDatabase),
6844                 (ndr_push_flags_fn_t) ndr_push_svcctl_LockServiceDatabase,
6845                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_LockServiceDatabase,
6846                 (ndr_print_function_t) ndr_print_svcctl_LockServiceDatabase,
6847                 false,
6848         },
6849         {
6850                 "svcctl_QueryServiceObjectSecurity",
6851                 sizeof(struct svcctl_QueryServiceObjectSecurity),
6852                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceObjectSecurity,
6853                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceObjectSecurity,
6854                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceObjectSecurity,
6855                 false,
6856         },
6857         {
6858                 "svcctl_SetServiceObjectSecurity",
6859                 sizeof(struct svcctl_SetServiceObjectSecurity),
6860                 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceObjectSecurity,
6861                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceObjectSecurity,
6862                 (ndr_print_function_t) ndr_print_svcctl_SetServiceObjectSecurity,
6863                 false,
6864         },
6865         {
6866                 "svcctl_QueryServiceStatus",
6867                 sizeof(struct svcctl_QueryServiceStatus),
6868                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatus,
6869                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatus,
6870                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatus,
6871                 false,
6872         },
6873         {
6874                 "svcctl_SetServiceStatus",
6875                 sizeof(struct svcctl_SetServiceStatus),
6876                 (ndr_push_flags_fn_t) ndr_push_svcctl_SetServiceStatus,
6877                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SetServiceStatus,
6878                 (ndr_print_function_t) ndr_print_svcctl_SetServiceStatus,
6879                 false,
6880         },
6881         {
6882                 "svcctl_UnlockServiceDatabase",
6883                 sizeof(struct svcctl_UnlockServiceDatabase),
6884                 (ndr_push_flags_fn_t) ndr_push_svcctl_UnlockServiceDatabase,
6885                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_UnlockServiceDatabase,
6886                 (ndr_print_function_t) ndr_print_svcctl_UnlockServiceDatabase,
6887                 false,
6888         },
6889         {
6890                 "svcctl_NotifyBootConfigStatus",
6891                 sizeof(struct svcctl_NotifyBootConfigStatus),
6892                 (ndr_push_flags_fn_t) ndr_push_svcctl_NotifyBootConfigStatus,
6893                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_NotifyBootConfigStatus,
6894                 (ndr_print_function_t) ndr_print_svcctl_NotifyBootConfigStatus,
6895                 false,
6896         },
6897         {
6898                 "svcctl_SCSetServiceBitsW",
6899                 sizeof(struct svcctl_SCSetServiceBitsW),
6900                 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsW,
6901                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsW,
6902                 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsW,
6903                 false,
6904         },
6905         {
6906                 "svcctl_ChangeServiceConfigW",
6907                 sizeof(struct svcctl_ChangeServiceConfigW),
6908                 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigW,
6909                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigW,
6910                 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigW,
6911                 false,
6912         },
6913         {
6914                 "svcctl_CreateServiceW",
6915                 sizeof(struct svcctl_CreateServiceW),
6916                 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceW,
6917                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceW,
6918                 (ndr_print_function_t) ndr_print_svcctl_CreateServiceW,
6919                 false,
6920         },
6921         {
6922                 "svcctl_EnumDependentServicesW",
6923                 sizeof(struct svcctl_EnumDependentServicesW),
6924                 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesW,
6925                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesW,
6926                 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesW,
6927                 false,
6928         },
6929         {
6930                 "svcctl_EnumServicesStatusW",
6931                 sizeof(struct svcctl_EnumServicesStatusW),
6932                 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusW,
6933                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusW,
6934                 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusW,
6935                 false,
6936         },
6937         {
6938                 "svcctl_OpenSCManagerW",
6939                 sizeof(struct svcctl_OpenSCManagerW),
6940                 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerW,
6941                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerW,
6942                 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerW,
6943                 false,
6944         },
6945         {
6946                 "svcctl_OpenServiceW",
6947                 sizeof(struct svcctl_OpenServiceW),
6948                 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceW,
6949                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceW,
6950                 (ndr_print_function_t) ndr_print_svcctl_OpenServiceW,
6951                 false,
6952         },
6953         {
6954                 "svcctl_QueryServiceConfigW",
6955                 sizeof(struct svcctl_QueryServiceConfigW),
6956                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigW,
6957                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigW,
6958                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigW,
6959                 false,
6960         },
6961         {
6962                 "svcctl_QueryServiceLockStatusW",
6963                 sizeof(struct svcctl_QueryServiceLockStatusW),
6964                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusW,
6965                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusW,
6966                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusW,
6967                 false,
6968         },
6969         {
6970                 "svcctl_StartServiceW",
6971                 sizeof(struct svcctl_StartServiceW),
6972                 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceW,
6973                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceW,
6974                 (ndr_print_function_t) ndr_print_svcctl_StartServiceW,
6975                 false,
6976         },
6977         {
6978                 "svcctl_GetServiceDisplayNameW",
6979                 sizeof(struct svcctl_GetServiceDisplayNameW),
6980                 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameW,
6981                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameW,
6982                 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameW,
6983                 false,
6984         },
6985         {
6986                 "svcctl_GetServiceKeyNameW",
6987                 sizeof(struct svcctl_GetServiceKeyNameW),
6988                 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameW,
6989                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameW,
6990                 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameW,
6991                 false,
6992         },
6993         {
6994                 "svcctl_SCSetServiceBitsA",
6995                 sizeof(struct svcctl_SCSetServiceBitsA),
6996                 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSetServiceBitsA,
6997                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSetServiceBitsA,
6998                 (ndr_print_function_t) ndr_print_svcctl_SCSetServiceBitsA,
6999                 false,
7000         },
7001         {
7002                 "svcctl_ChangeServiceConfigA",
7003                 sizeof(struct svcctl_ChangeServiceConfigA),
7004                 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfigA,
7005                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfigA,
7006                 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfigA,
7007                 false,
7008         },
7009         {
7010                 "svcctl_CreateServiceA",
7011                 sizeof(struct svcctl_CreateServiceA),
7012                 (ndr_push_flags_fn_t) ndr_push_svcctl_CreateServiceA,
7013                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_CreateServiceA,
7014                 (ndr_print_function_t) ndr_print_svcctl_CreateServiceA,
7015                 false,
7016         },
7017         {
7018                 "svcctl_EnumDependentServicesA",
7019                 sizeof(struct svcctl_EnumDependentServicesA),
7020                 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumDependentServicesA,
7021                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumDependentServicesA,
7022                 (ndr_print_function_t) ndr_print_svcctl_EnumDependentServicesA,
7023                 false,
7024         },
7025         {
7026                 "svcctl_EnumServicesStatusA",
7027                 sizeof(struct svcctl_EnumServicesStatusA),
7028                 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServicesStatusA,
7029                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServicesStatusA,
7030                 (ndr_print_function_t) ndr_print_svcctl_EnumServicesStatusA,
7031                 false,
7032         },
7033         {
7034                 "svcctl_OpenSCManagerA",
7035                 sizeof(struct svcctl_OpenSCManagerA),
7036                 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenSCManagerA,
7037                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenSCManagerA,
7038                 (ndr_print_function_t) ndr_print_svcctl_OpenSCManagerA,
7039                 false,
7040         },
7041         {
7042                 "svcctl_OpenServiceA",
7043                 sizeof(struct svcctl_OpenServiceA),
7044                 (ndr_push_flags_fn_t) ndr_push_svcctl_OpenServiceA,
7045                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_OpenServiceA,
7046                 (ndr_print_function_t) ndr_print_svcctl_OpenServiceA,
7047                 false,
7048         },
7049         {
7050                 "svcctl_QueryServiceConfigA",
7051                 sizeof(struct svcctl_QueryServiceConfigA),
7052                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfigA,
7053                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfigA,
7054                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfigA,
7055                 false,
7056         },
7057         {
7058                 "svcctl_QueryServiceLockStatusA",
7059                 sizeof(struct svcctl_QueryServiceLockStatusA),
7060                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceLockStatusA,
7061                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceLockStatusA,
7062                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceLockStatusA,
7063                 false,
7064         },
7065         {
7066                 "svcctl_StartServiceA",
7067                 sizeof(struct svcctl_StartServiceA),
7068                 (ndr_push_flags_fn_t) ndr_push_svcctl_StartServiceA,
7069                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_StartServiceA,
7070                 (ndr_print_function_t) ndr_print_svcctl_StartServiceA,
7071                 false,
7072         },
7073         {
7074                 "svcctl_GetServiceDisplayNameA",
7075                 sizeof(struct svcctl_GetServiceDisplayNameA),
7076                 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceDisplayNameA,
7077                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceDisplayNameA,
7078                 (ndr_print_function_t) ndr_print_svcctl_GetServiceDisplayNameA,
7079                 false,
7080         },
7081         {
7082                 "svcctl_GetServiceKeyNameA",
7083                 sizeof(struct svcctl_GetServiceKeyNameA),
7084                 (ndr_push_flags_fn_t) ndr_push_svcctl_GetServiceKeyNameA,
7085                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetServiceKeyNameA,
7086                 (ndr_print_function_t) ndr_print_svcctl_GetServiceKeyNameA,
7087                 false,
7088         },
7089         {
7090                 "svcctl_GetCurrentGroupeStateW",
7091                 sizeof(struct svcctl_GetCurrentGroupeStateW),
7092                 (ndr_push_flags_fn_t) ndr_push_svcctl_GetCurrentGroupeStateW,
7093                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_GetCurrentGroupeStateW,
7094                 (ndr_print_function_t) ndr_print_svcctl_GetCurrentGroupeStateW,
7095                 false,
7096         },
7097         {
7098                 "svcctl_EnumServiceGroupW",
7099                 sizeof(struct svcctl_EnumServiceGroupW),
7100                 (ndr_push_flags_fn_t) ndr_push_svcctl_EnumServiceGroupW,
7101                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_EnumServiceGroupW,
7102                 (ndr_print_function_t) ndr_print_svcctl_EnumServiceGroupW,
7103                 false,
7104         },
7105         {
7106                 "svcctl_ChangeServiceConfig2A",
7107                 sizeof(struct svcctl_ChangeServiceConfig2A),
7108                 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2A,
7109                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2A,
7110                 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2A,
7111                 false,
7112         },
7113         {
7114                 "svcctl_ChangeServiceConfig2W",
7115                 sizeof(struct svcctl_ChangeServiceConfig2W),
7116                 (ndr_push_flags_fn_t) ndr_push_svcctl_ChangeServiceConfig2W,
7117                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_ChangeServiceConfig2W,
7118                 (ndr_print_function_t) ndr_print_svcctl_ChangeServiceConfig2W,
7119                 false,
7120         },
7121         {
7122                 "svcctl_QueryServiceConfig2A",
7123                 sizeof(struct svcctl_QueryServiceConfig2A),
7124                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2A,
7125                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2A,
7126                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2A,
7127                 false,
7128         },
7129         {
7130                 "svcctl_QueryServiceConfig2W",
7131                 sizeof(struct svcctl_QueryServiceConfig2W),
7132                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceConfig2W,
7133                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceConfig2W,
7134                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceConfig2W,
7135                 false,
7136         },
7137         {
7138                 "svcctl_QueryServiceStatusEx",
7139                 sizeof(struct svcctl_QueryServiceStatusEx),
7140                 (ndr_push_flags_fn_t) ndr_push_svcctl_QueryServiceStatusEx,
7141                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_QueryServiceStatusEx,
7142                 (ndr_print_function_t) ndr_print_svcctl_QueryServiceStatusEx,
7143                 false,
7144         },
7145         {
7146                 "EnumServicesStatusExA",
7147                 sizeof(struct EnumServicesStatusExA),
7148                 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExA,
7149                 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExA,
7150                 (ndr_print_function_t) ndr_print_EnumServicesStatusExA,
7151                 false,
7152         },
7153         {
7154                 "EnumServicesStatusExW",
7155                 sizeof(struct EnumServicesStatusExW),
7156                 (ndr_push_flags_fn_t) ndr_push_EnumServicesStatusExW,
7157                 (ndr_pull_flags_fn_t) ndr_pull_EnumServicesStatusExW,
7158                 (ndr_print_function_t) ndr_print_EnumServicesStatusExW,
7159                 false,
7160         },
7161         {
7162                 "svcctl_SCSendTSMessage",
7163                 sizeof(struct svcctl_SCSendTSMessage),
7164                 (ndr_push_flags_fn_t) ndr_push_svcctl_SCSendTSMessage,
7165                 (ndr_pull_flags_fn_t) ndr_pull_svcctl_SCSendTSMessage,
7166                 (ndr_print_function_t) ndr_print_svcctl_SCSendTSMessage,
7167                 false,
7168         },
7169         { NULL, 0, NULL, NULL, NULL, false }
7170 };
7171 
7172 static const char * const svcctl_endpoint_strings[] = {
7173         "ncacn_np:[\\pipe\\svcctl]", 
7174         "ncalrpc:", 
7175 };
7176 
7177 static const struct ndr_interface_string_array svcctl_endpoints = {
7178         .count  = 2,
7179         .names  = svcctl_endpoint_strings
7180 };
7181 
7182 static const char * const svcctl_authservice_strings[] = {
7183         "host", 
7184 };
7185 
7186 static const struct ndr_interface_string_array svcctl_authservices = {
7187         .count  = 1,
7188         .names  = svcctl_authservice_strings
7189 };
7190 
7191 
7192 const struct ndr_interface_table ndr_table_svcctl = {
7193         .name           = "svcctl",
7194         .syntax_id      = {
7195                 {0x367abb81,0x9844,0x35f1,{0xad,0x32},{0x98,0xf0,0x38,0x00,0x10,0x03}},
7196                 NDR_SVCCTL_VERSION
7197         },
7198         .helpstring     = NDR_SVCCTL_HELPSTRING,
7199         .num_calls      = 44,
7200         .calls          = svcctl_calls,
7201         .endpoints      = &svcctl_endpoints,
7202         .authservices   = &svcctl_authservices
7203 };
7204 

/* [<][>][^][v][top][bottom][index][help] */