/* * Unix SMB/CIFS implementation. * server auto-generated by pidl. DO NOT MODIFY! */ #include "includes.h" #include "../librpc/gen_ndr/srv_ntsvcs.h" static bool api_PNP_Disconnect(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_Disconnect *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DISCONNECT]; r = talloc(talloc_tos(), struct PNP_Disconnect); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_Disconnect, r); } r->out.result = _PNP_Disconnect(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_Disconnect, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_Connect(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_Connect *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_CONNECT]; r = talloc(talloc_tos(), struct PNP_Connect); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_Connect, r); } r->out.result = _PNP_Connect(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_Connect, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetVersion(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetVersion *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETVERSION]; r = talloc(talloc_tos(), struct PNP_GetVersion); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetVersion, r); } ZERO_STRUCT(r->out); r->out.version = talloc_zero(r, uint16_t); if (r->out.version == NULL) { talloc_free(r); return false; } r->out.result = _PNP_GetVersion(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetVersion, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetGlobalState(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetGlobalState *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETGLOBALSTATE]; r = talloc(talloc_tos(), struct PNP_GetGlobalState); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetGlobalState, r); } r->out.result = _PNP_GetGlobalState(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetGlobalState, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_InitDetection(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_InitDetection *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_INITDETECTION]; r = talloc(talloc_tos(), struct PNP_InitDetection); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_InitDetection, r); } r->out.result = _PNP_InitDetection(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_InitDetection, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_ReportLogOn(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_ReportLogOn *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REPORTLOGON]; r = talloc(talloc_tos(), struct PNP_ReportLogOn); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_ReportLogOn, r); } r->out.result = _PNP_ReportLogOn(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_ReportLogOn, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_ValidateDeviceInstance(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_ValidateDeviceInstance *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_VALIDATEDEVICEINSTANCE]; r = talloc(talloc_tos(), struct PNP_ValidateDeviceInstance); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_ValidateDeviceInstance, r); } r->out.result = _PNP_ValidateDeviceInstance(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_ValidateDeviceInstance, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetRootDeviceInstance(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetRootDeviceInstance *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETROOTDEVICEINSTANCE]; r = talloc(talloc_tos(), struct PNP_GetRootDeviceInstance); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetRootDeviceInstance, r); } r->out.result = _PNP_GetRootDeviceInstance(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetRootDeviceInstance, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetRelatedDeviceInstance(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetRelatedDeviceInstance *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETRELATEDDEVICEINSTANCE]; r = talloc(talloc_tos(), struct PNP_GetRelatedDeviceInstance); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetRelatedDeviceInstance, r); } r->out.result = _PNP_GetRelatedDeviceInstance(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetRelatedDeviceInstance, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_EnumerateSubKeys(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_EnumerateSubKeys *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_ENUMERATESUBKEYS]; r = talloc(talloc_tos(), struct PNP_EnumerateSubKeys); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_EnumerateSubKeys, r); } r->out.result = _PNP_EnumerateSubKeys(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_EnumerateSubKeys, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetDeviceList(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetDeviceList *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETDEVICELIST]; r = talloc(talloc_tos(), struct PNP_GetDeviceList); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetDeviceList, r); } ZERO_STRUCT(r->out); r->out.length = r->in.length; r->out.buffer = talloc_zero_array(r, uint16_t, *r->out.length); if (r->out.buffer == NULL) { talloc_free(r); return false; } r->out.result = _PNP_GetDeviceList(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetDeviceList, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetDeviceListSize(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetDeviceListSize *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETDEVICELISTSIZE]; r = talloc(talloc_tos(), struct PNP_GetDeviceListSize); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetDeviceListSize, r); } ZERO_STRUCT(r->out); r->out.size = talloc_zero(r, uint32_t); if (r->out.size == NULL) { talloc_free(r); return false; } r->out.result = _PNP_GetDeviceListSize(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetDeviceListSize, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetDepth(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetDepth *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETDEPTH]; r = talloc(talloc_tos(), struct PNP_GetDepth); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetDepth, r); } r->out.result = _PNP_GetDepth(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetDepth, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetDeviceRegProp(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetDeviceRegProp *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETDEVICEREGPROP]; r = talloc(talloc_tos(), struct PNP_GetDeviceRegProp); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetDeviceRegProp, r); } ZERO_STRUCT(r->out); r->out.reg_data_type = r->in.reg_data_type; r->out.buffer_size = r->in.buffer_size; r->out.needed = r->in.needed; r->out.buffer = talloc_zero_array(r, uint8_t, *r->out.buffer_size); if (r->out.buffer == NULL) { talloc_free(r); return false; } r->out.result = _PNP_GetDeviceRegProp(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetDeviceRegProp, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_SetDeviceRegProp(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_SetDeviceRegProp *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_SETDEVICEREGPROP]; r = talloc(talloc_tos(), struct PNP_SetDeviceRegProp); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_SetDeviceRegProp, r); } r->out.result = _PNP_SetDeviceRegProp(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_SetDeviceRegProp, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetClassInstance(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetClassInstance *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETCLASSINSTANCE]; r = talloc(talloc_tos(), struct PNP_GetClassInstance); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetClassInstance, r); } r->out.result = _PNP_GetClassInstance(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetClassInstance, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_CreateKey(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_CreateKey *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_CREATEKEY]; r = talloc(talloc_tos(), struct PNP_CreateKey); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_CreateKey, r); } r->out.result = _PNP_CreateKey(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_CreateKey, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_DeleteRegistryKey(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_DeleteRegistryKey *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DELETEREGISTRYKEY]; r = talloc(talloc_tos(), struct PNP_DeleteRegistryKey); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_DeleteRegistryKey, r); } r->out.result = _PNP_DeleteRegistryKey(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_DeleteRegistryKey, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetClassCount(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetClassCount *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETCLASSCOUNT]; r = talloc(talloc_tos(), struct PNP_GetClassCount); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetClassCount, r); } r->out.result = _PNP_GetClassCount(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetClassCount, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetClassName(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetClassName *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETCLASSNAME]; r = talloc(talloc_tos(), struct PNP_GetClassName); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetClassName, r); } r->out.result = _PNP_GetClassName(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetClassName, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_DeleteClassKey(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_DeleteClassKey *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DELETECLASSKEY]; r = talloc(talloc_tos(), struct PNP_DeleteClassKey); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_DeleteClassKey, r); } r->out.result = _PNP_DeleteClassKey(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_DeleteClassKey, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetInterfaceDeviceAlias(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetInterfaceDeviceAlias *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETINTERFACEDEVICEALIAS]; r = talloc(talloc_tos(), struct PNP_GetInterfaceDeviceAlias); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetInterfaceDeviceAlias, r); } r->out.result = _PNP_GetInterfaceDeviceAlias(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetInterfaceDeviceAlias, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetInterfaceDeviceList(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetInterfaceDeviceList *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETINTERFACEDEVICELIST]; r = talloc(talloc_tos(), struct PNP_GetInterfaceDeviceList); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetInterfaceDeviceList, r); } r->out.result = _PNP_GetInterfaceDeviceList(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetInterfaceDeviceList, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetInterfaceDeviceListSize(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetInterfaceDeviceListSize *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETINTERFACEDEVICELISTSIZE]; r = talloc(talloc_tos(), struct PNP_GetInterfaceDeviceListSize); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetInterfaceDeviceListSize, r); } r->out.result = _PNP_GetInterfaceDeviceListSize(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetInterfaceDeviceListSize, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RegisterDeviceClassAssociation(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RegisterDeviceClassAssociation *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REGISTERDEVICECLASSASSOCIATION]; r = talloc(talloc_tos(), struct PNP_RegisterDeviceClassAssociation); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RegisterDeviceClassAssociation, r); } r->out.result = _PNP_RegisterDeviceClassAssociation(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RegisterDeviceClassAssociation, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_UnregisterDeviceClassAssociation(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_UnregisterDeviceClassAssociation *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_UNREGISTERDEVICECLASSASSOCIATION]; r = talloc(talloc_tos(), struct PNP_UnregisterDeviceClassAssociation); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_UnregisterDeviceClassAssociation, r); } r->out.result = _PNP_UnregisterDeviceClassAssociation(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_UnregisterDeviceClassAssociation, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetClassRegProp(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetClassRegProp *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETCLASSREGPROP]; r = talloc(talloc_tos(), struct PNP_GetClassRegProp); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetClassRegProp, r); } r->out.result = _PNP_GetClassRegProp(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetClassRegProp, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_SetClassRegProp(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_SetClassRegProp *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_SETCLASSREGPROP]; r = talloc(talloc_tos(), struct PNP_SetClassRegProp); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_SetClassRegProp, r); } r->out.result = _PNP_SetClassRegProp(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_SetClassRegProp, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_CreateDevInst(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_CreateDevInst *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_CREATEDEVINST]; r = talloc(talloc_tos(), struct PNP_CreateDevInst); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_CreateDevInst, r); } r->out.result = _PNP_CreateDevInst(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_CreateDevInst, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_DeviceInstanceAction(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_DeviceInstanceAction *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DEVICEINSTANCEACTION]; r = talloc(talloc_tos(), struct PNP_DeviceInstanceAction); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_DeviceInstanceAction, r); } r->out.result = _PNP_DeviceInstanceAction(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_DeviceInstanceAction, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetDeviceStatus(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetDeviceStatus *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETDEVICESTATUS]; r = talloc(talloc_tos(), struct PNP_GetDeviceStatus); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetDeviceStatus, r); } r->out.result = _PNP_GetDeviceStatus(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetDeviceStatus, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_SetDeviceProblem(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_SetDeviceProblem *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_SETDEVICEPROBLEM]; r = talloc(talloc_tos(), struct PNP_SetDeviceProblem); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_SetDeviceProblem, r); } r->out.result = _PNP_SetDeviceProblem(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_SetDeviceProblem, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_DisableDevInst(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_DisableDevInst *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DISABLEDEVINST]; r = talloc(talloc_tos(), struct PNP_DisableDevInst); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_DisableDevInst, r); } r->out.result = _PNP_DisableDevInst(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_DisableDevInst, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_UninstallDevInst(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_UninstallDevInst *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_UNINSTALLDEVINST]; r = talloc(talloc_tos(), struct PNP_UninstallDevInst); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_UninstallDevInst, r); } r->out.result = _PNP_UninstallDevInst(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_UninstallDevInst, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_AddID(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_AddID *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_ADDID]; r = talloc(talloc_tos(), struct PNP_AddID); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_AddID, r); } r->out.result = _PNP_AddID(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_AddID, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RegisterDriver(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RegisterDriver *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REGISTERDRIVER]; r = talloc(talloc_tos(), struct PNP_RegisterDriver); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RegisterDriver, r); } r->out.result = _PNP_RegisterDriver(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RegisterDriver, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_QueryRemove(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_QueryRemove *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_QUERYREMOVE]; r = talloc(talloc_tos(), struct PNP_QueryRemove); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_QueryRemove, r); } r->out.result = _PNP_QueryRemove(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_QueryRemove, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RequestDeviceEject(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RequestDeviceEject *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REQUESTDEVICEEJECT]; r = talloc(talloc_tos(), struct PNP_RequestDeviceEject); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RequestDeviceEject, r); } r->out.result = _PNP_RequestDeviceEject(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RequestDeviceEject, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_IsDockStationPresent(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_IsDockStationPresent *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_ISDOCKSTATIONPRESENT]; r = talloc(talloc_tos(), struct PNP_IsDockStationPresent); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_IsDockStationPresent, r); } r->out.result = _PNP_IsDockStationPresent(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_IsDockStationPresent, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RequestEjectPC(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RequestEjectPC *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REQUESTEJECTPC]; r = talloc(talloc_tos(), struct PNP_RequestEjectPC); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RequestEjectPC, r); } r->out.result = _PNP_RequestEjectPC(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RequestEjectPC, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_HwProfFlags(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_HwProfFlags *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_HWPROFFLAGS]; r = talloc(talloc_tos(), struct PNP_HwProfFlags); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_HwProfFlags, r); } ZERO_STRUCT(r->out); r->out.profile_flags = r->in.profile_flags; r->out.veto_type = r->in.veto_type; r->out.unknown5a = talloc_zero(r, const char *); if (r->out.unknown5a == NULL) { talloc_free(r); return false; } r->out.result = _PNP_HwProfFlags(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_HwProfFlags, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetHwProfInfo(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetHwProfInfo *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETHWPROFINFO]; r = talloc(talloc_tos(), struct PNP_GetHwProfInfo); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetHwProfInfo, r); } ZERO_STRUCT(r->out); r->out.info = r->in.info; r->out.result = _PNP_GetHwProfInfo(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetHwProfInfo, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_AddEmptyLogConf(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_AddEmptyLogConf *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_ADDEMPTYLOGCONF]; r = talloc(talloc_tos(), struct PNP_AddEmptyLogConf); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_AddEmptyLogConf, r); } r->out.result = _PNP_AddEmptyLogConf(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_AddEmptyLogConf, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_FreeLogConf(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_FreeLogConf *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_FREELOGCONF]; r = talloc(talloc_tos(), struct PNP_FreeLogConf); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_FreeLogConf, r); } r->out.result = _PNP_FreeLogConf(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_FreeLogConf, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetFirstLogConf(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetFirstLogConf *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETFIRSTLOGCONF]; r = talloc(talloc_tos(), struct PNP_GetFirstLogConf); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetFirstLogConf, r); } r->out.result = _PNP_GetFirstLogConf(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetFirstLogConf, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetNextLogConf(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetNextLogConf *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETNEXTLOGCONF]; r = talloc(talloc_tos(), struct PNP_GetNextLogConf); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetNextLogConf, r); } r->out.result = _PNP_GetNextLogConf(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetNextLogConf, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetLogConfPriority(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetLogConfPriority *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETLOGCONFPRIORITY]; r = talloc(talloc_tos(), struct PNP_GetLogConfPriority); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetLogConfPriority, r); } r->out.result = _PNP_GetLogConfPriority(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetLogConfPriority, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_AddResDes(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_AddResDes *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_ADDRESDES]; r = talloc(talloc_tos(), struct PNP_AddResDes); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_AddResDes, r); } r->out.result = _PNP_AddResDes(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_AddResDes, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_FreeResDes(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_FreeResDes *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_FREERESDES]; r = talloc(talloc_tos(), struct PNP_FreeResDes); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_FreeResDes, r); } r->out.result = _PNP_FreeResDes(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_FreeResDes, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetNextResDes(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetNextResDes *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETNEXTRESDES]; r = talloc(talloc_tos(), struct PNP_GetNextResDes); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetNextResDes, r); } r->out.result = _PNP_GetNextResDes(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetNextResDes, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetResDesData(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetResDesData *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETRESDESDATA]; r = talloc(talloc_tos(), struct PNP_GetResDesData); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetResDesData, r); } r->out.result = _PNP_GetResDesData(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetResDesData, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetResDesDataSize(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetResDesDataSize *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETRESDESDATASIZE]; r = talloc(talloc_tos(), struct PNP_GetResDesDataSize); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetResDesDataSize, r); } r->out.result = _PNP_GetResDesDataSize(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetResDesDataSize, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_ModifyResDes(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_ModifyResDes *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_MODIFYRESDES]; r = talloc(talloc_tos(), struct PNP_ModifyResDes); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_ModifyResDes, r); } r->out.result = _PNP_ModifyResDes(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_ModifyResDes, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_DetectResourceLimit(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_DetectResourceLimit *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_DETECTRESOURCELIMIT]; r = talloc(talloc_tos(), struct PNP_DetectResourceLimit); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_DetectResourceLimit, r); } r->out.result = _PNP_DetectResourceLimit(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_DetectResourceLimit, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_QueryResConfList(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_QueryResConfList *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_QUERYRESCONFLIST]; r = talloc(talloc_tos(), struct PNP_QueryResConfList); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_QueryResConfList, r); } r->out.result = _PNP_QueryResConfList(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_QueryResConfList, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_SetHwProf(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_SetHwProf *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_SETHWPROF]; r = talloc(talloc_tos(), struct PNP_SetHwProf); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_SetHwProf, r); } r->out.result = _PNP_SetHwProf(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_SetHwProf, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_QueryArbitratorFreeData(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_QueryArbitratorFreeData *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_QUERYARBITRATORFREEDATA]; r = talloc(talloc_tos(), struct PNP_QueryArbitratorFreeData); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_QueryArbitratorFreeData, r); } r->out.result = _PNP_QueryArbitratorFreeData(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_QueryArbitratorFreeData, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_QueryArbitratorFreeSize(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_QueryArbitratorFreeSize *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_QUERYARBITRATORFREESIZE]; r = talloc(talloc_tos(), struct PNP_QueryArbitratorFreeSize); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_QueryArbitratorFreeSize, r); } r->out.result = _PNP_QueryArbitratorFreeSize(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_QueryArbitratorFreeSize, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RunDetection(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RunDetection *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_RUNDETECTION]; r = talloc(talloc_tos(), struct PNP_RunDetection); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RunDetection, r); } r->out.result = _PNP_RunDetection(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RunDetection, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_RegisterNotification(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_RegisterNotification *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_REGISTERNOTIFICATION]; r = talloc(talloc_tos(), struct PNP_RegisterNotification); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_RegisterNotification, r); } r->out.result = _PNP_RegisterNotification(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_RegisterNotification, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_UnregisterNotification(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_UnregisterNotification *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_UNREGISTERNOTIFICATION]; r = talloc(talloc_tos(), struct PNP_UnregisterNotification); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_UnregisterNotification, r); } r->out.result = _PNP_UnregisterNotification(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_UnregisterNotification, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetCustomDevProp(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetCustomDevProp *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETCUSTOMDEVPROP]; r = talloc(talloc_tos(), struct PNP_GetCustomDevProp); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetCustomDevProp, r); } r->out.result = _PNP_GetCustomDevProp(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetCustomDevProp, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetVersionInternal(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetVersionInternal *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETVERSIONINTERNAL]; r = talloc(talloc_tos(), struct PNP_GetVersionInternal); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetVersionInternal, r); } r->out.result = _PNP_GetVersionInternal(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetVersionInternal, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetBlockedDriverInfo(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetBlockedDriverInfo *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETBLOCKEDDRIVERINFO]; r = talloc(talloc_tos(), struct PNP_GetBlockedDriverInfo); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetBlockedDriverInfo, r); } r->out.result = _PNP_GetBlockedDriverInfo(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetBlockedDriverInfo, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } static bool api_PNP_GetServerSideDeviceInstallFlags(pipes_struct *p) { const struct ndr_interface_call *call; struct ndr_pull *pull; struct ndr_push *push; enum ndr_err_code ndr_err; DATA_BLOB blob; struct PNP_GetServerSideDeviceInstallFlags *r; call = &ndr_table_ntsvcs.calls[NDR_PNP_GETSERVERSIDEDEVICEINSTALLFLAGS]; r = talloc(talloc_tos(), struct PNP_GetServerSideDeviceInstallFlags); if (r == NULL) { return false; } if (!prs_data_blob(&p->in_data.data, &blob, r)) { talloc_free(r); return false; } pull = ndr_pull_init_blob(&blob, r, NULL); if (pull == NULL) { talloc_free(r); return false; } pull->flags |= LIBNDR_FLAG_REF_ALLOC; ndr_err = call->ndr_pull(pull, NDR_IN, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(PNP_GetServerSideDeviceInstallFlags, r); } r->out.result = _PNP_GetServerSideDeviceInstallFlags(p, r); if (p->rng_fault_state) { talloc_free(r); /* Return true here, srv_pipe_hnd.c will take care */ return true; } if (DEBUGLEVEL >= 10) { NDR_PRINT_OUT_DEBUG(PNP_GetServerSideDeviceInstallFlags, r); } push = ndr_push_init_ctx(r, NULL); if (push == NULL) { talloc_free(r); return false; } ndr_err = call->ndr_push(push, NDR_OUT, r); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { talloc_free(r); return false; } blob = ndr_push_blob(push); if (!prs_copy_data_in(&p->out_data.rdata, (const char *)blob.data, (uint32_t)blob.length)) { talloc_free(r); return false; } talloc_free(r); return true; } /* Tables */ static struct api_struct api_ntsvcs_cmds[] = { {"PNP_DISCONNECT", NDR_PNP_DISCONNECT, api_PNP_Disconnect}, {"PNP_CONNECT", NDR_PNP_CONNECT, api_PNP_Connect}, {"PNP_GETVERSION", NDR_PNP_GETVERSION, api_PNP_GetVersion}, {"PNP_GETGLOBALSTATE", NDR_PNP_GETGLOBALSTATE, api_PNP_GetGlobalState}, {"PNP_INITDETECTION", NDR_PNP_INITDETECTION, api_PNP_InitDetection}, {"PNP_REPORTLOGON", NDR_PNP_REPORTLOGON, api_PNP_ReportLogOn}, {"PNP_VALIDATEDEVICEINSTANCE", NDR_PNP_VALIDATEDEVICEINSTANCE, api_PNP_ValidateDeviceInstance}, {"PNP_GETROOTDEVICEINSTANCE", NDR_PNP_GETROOTDEVICEINSTANCE, api_PNP_GetRootDeviceInstance}, {"PNP_GETRELATEDDEVICEINSTANCE", NDR_PNP_GETRELATEDDEVICEINSTANCE, api_PNP_GetRelatedDeviceInstance}, {"PNP_ENUMERATESUBKEYS", NDR_PNP_ENUMERATESUBKEYS, api_PNP_EnumerateSubKeys}, {"PNP_GETDEVICELIST", NDR_PNP_GETDEVICELIST, api_PNP_GetDeviceList}, {"PNP_GETDEVICELISTSIZE", NDR_PNP_GETDEVICELISTSIZE, api_PNP_GetDeviceListSize}, {"PNP_GETDEPTH", NDR_PNP_GETDEPTH, api_PNP_GetDepth}, {"PNP_GETDEVICEREGPROP", NDR_PNP_GETDEVICEREGPROP, api_PNP_GetDeviceRegProp}, {"PNP_SETDEVICEREGPROP", NDR_PNP_SETDEVICEREGPROP, api_PNP_SetDeviceRegProp}, {"PNP_GETCLASSINSTANCE", NDR_PNP_GETCLASSINSTANCE, api_PNP_GetClassInstance}, {"PNP_CREATEKEY", NDR_PNP_CREATEKEY, api_PNP_CreateKey}, {"PNP_DELETEREGISTRYKEY", NDR_PNP_DELETEREGISTRYKEY, api_PNP_DeleteRegistryKey}, {"PNP_GETCLASSCOUNT", NDR_PNP_GETCLASSCOUNT, api_PNP_GetClassCount}, {"PNP_GETCLASSNAME", NDR_PNP_GETCLASSNAME, api_PNP_GetClassName}, {"PNP_DELETECLASSKEY", NDR_PNP_DELETECLASSKEY, api_PNP_DeleteClassKey}, {"PNP_GETINTERFACEDEVICEALIAS", NDR_PNP_GETINTERFACEDEVICEALIAS, api_PNP_GetInterfaceDeviceAlias}, {"PNP_GETINTERFACEDEVICELIST", NDR_PNP_GETINTERFACEDEVICELIST, api_PNP_GetInterfaceDeviceList}, {"PNP_GETINTERFACEDEVICELISTSIZE", NDR_PNP_GETINTERFACEDEVICELISTSIZE, api_PNP_GetInterfaceDeviceListSize}, {"PNP_REGISTERDEVICECLASSASSOCIATION", NDR_PNP_REGISTERDEVICECLASSASSOCIATION, api_PNP_RegisterDeviceClassAssociation}, {"PNP_UNREGISTERDEVICECLASSASSOCIATION", NDR_PNP_UNREGISTERDEVICECLASSASSOCIATION, api_PNP_UnregisterDeviceClassAssociation}, {"PNP_GETCLASSREGPROP", NDR_PNP_GETCLASSREGPROP, api_PNP_GetClassRegProp}, {"PNP_SETCLASSREGPROP", NDR_PNP_SETCLASSREGPROP, api_PNP_SetClassRegProp}, {"PNP_CREATEDEVINST", NDR_PNP_CREATEDEVINST, api_PNP_CreateDevInst}, {"PNP_DEVICEINSTANCEACTION", NDR_PNP_DEVICEINSTANCEACTION, api_PNP_DeviceInstanceAction}, {"PNP_GETDEVICESTATUS", NDR_PNP_GETDEVICESTATUS, api_PNP_GetDeviceStatus}, {"PNP_SETDEVICEPROBLEM", NDR_PNP_SETDEVICEPROBLEM, api_PNP_SetDeviceProblem}, {"PNP_DISABLEDEVINST", NDR_PNP_DISABLEDEVINST, api_PNP_DisableDevInst}, {"PNP_UNINSTALLDEVINST", NDR_PNP_UNINSTALLDEVINST, api_PNP_UninstallDevInst}, {"PNP_ADDID", NDR_PNP_ADDID, api_PNP_AddID}, {"PNP_REGISTERDRIVER", NDR_PNP_REGISTERDRIVER, api_PNP_RegisterDriver}, {"PNP_QUERYREMOVE", NDR_PNP_QUERYREMOVE, api_PNP_QueryRemove}, {"PNP_REQUESTDEVICEEJECT", NDR_PNP_REQUESTDEVICEEJECT, api_PNP_RequestDeviceEject}, {"PNP_ISDOCKSTATIONPRESENT", NDR_PNP_ISDOCKSTATIONPRESENT, api_PNP_IsDockStationPresent}, {"PNP_REQUESTEJECTPC", NDR_PNP_REQUESTEJECTPC, api_PNP_RequestEjectPC}, {"PNP_HWPROFFLAGS", NDR_PNP_HWPROFFLAGS, api_PNP_HwProfFlags}, {"PNP_GETHWPROFINFO", NDR_PNP_GETHWPROFINFO, api_PNP_GetHwProfInfo}, {"PNP_ADDEMPTYLOGCONF", NDR_PNP_ADDEMPTYLOGCONF, api_PNP_AddEmptyLogConf}, {"PNP_FREELOGCONF", NDR_PNP_FREELOGCONF, api_PNP_FreeLogConf}, {"PNP_GETFIRSTLOGCONF", NDR_PNP_GETFIRSTLOGCONF, api_PNP_GetFirstLogConf}, {"PNP_GETNEXTLOGCONF", NDR_PNP_GETNEXTLOGCONF, api_PNP_GetNextLogConf}, {"PNP_GETLOGCONFPRIORITY", NDR_PNP_GETLOGCONFPRIORITY, api_PNP_GetLogConfPriority}, {"PNP_ADDRESDES", NDR_PNP_ADDRESDES, api_PNP_AddResDes}, {"PNP_FREERESDES", NDR_PNP_FREERESDES, api_PNP_FreeResDes}, {"PNP_GETNEXTRESDES", NDR_PNP_GETNEXTRESDES, api_PNP_GetNextResDes}, {"PNP_GETRESDESDATA", NDR_PNP_GETRESDESDATA, api_PNP_GetResDesData}, {"PNP_GETRESDESDATASIZE", NDR_PNP_GETRESDESDATASIZE, api_PNP_GetResDesDataSize}, {"PNP_MODIFYRESDES", NDR_PNP_MODIFYRESDES, api_PNP_ModifyResDes}, {"PNP_DETECTRESOURCELIMIT", NDR_PNP_DETECTRESOURCELIMIT, api_PNP_DetectResourceLimit}, {"PNP_QUERYRESCONFLIST", NDR_PNP_QUERYRESCONFLIST, api_PNP_QueryResConfList}, {"PNP_SETHWPROF", NDR_PNP_SETHWPROF, api_PNP_SetHwProf}, {"PNP_QUERYARBITRATORFREEDATA", NDR_PNP_QUERYARBITRATORFREEDATA, api_PNP_QueryArbitratorFreeData}, {"PNP_QUERYARBITRATORFREESIZE", NDR_PNP_QUERYARBITRATORFREESIZE, api_PNP_QueryArbitratorFreeSize}, {"PNP_RUNDETECTION", NDR_PNP_RUNDETECTION, api_PNP_RunDetection}, {"PNP_REGISTERNOTIFICATION", NDR_PNP_REGISTERNOTIFICATION, api_PNP_RegisterNotification}, {"PNP_UNREGISTERNOTIFICATION", NDR_PNP_UNREGISTERNOTIFICATION, api_PNP_UnregisterNotification}, {"PNP_GETCUSTOMDEVPROP", NDR_PNP_GETCUSTOMDEVPROP, api_PNP_GetCustomDevProp}, {"PNP_GETVERSIONINTERNAL", NDR_PNP_GETVERSIONINTERNAL, api_PNP_GetVersionInternal}, {"PNP_GETBLOCKEDDRIVERINFO", NDR_PNP_GETBLOCKEDDRIVERINFO, api_PNP_GetBlockedDriverInfo}, {"PNP_GETSERVERSIDEDEVICEINSTALLFLAGS", NDR_PNP_GETSERVERSIDEDEVICEINSTALLFLAGS, api_PNP_GetServerSideDeviceInstallFlags}, }; void ntsvcs_get_pipe_fns(struct api_struct **fns, int *n_fns) { *fns = api_ntsvcs_cmds; *n_fns = sizeof(api_ntsvcs_cmds) / sizeof(struct api_struct); } NTSTATUS rpc_ntsvcs_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const struct ndr_interface_table *table, uint32_t opnum, void *_r) { if (cli->pipes_struct == NULL) { return NT_STATUS_INVALID_PARAMETER; } switch (opnum) { case NDR_PNP_DISCONNECT: { struct PNP_Disconnect *r = (struct PNP_Disconnect *)_r; r->out.result = _PNP_Disconnect(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_CONNECT: { struct PNP_Connect *r = (struct PNP_Connect *)_r; r->out.result = _PNP_Connect(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETVERSION: { struct PNP_GetVersion *r = (struct PNP_GetVersion *)_r; ZERO_STRUCT(r->out); r->out.version = talloc_zero(mem_ctx, uint16_t); if (r->out.version == NULL) { return NT_STATUS_NO_MEMORY; } r->out.result = _PNP_GetVersion(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETGLOBALSTATE: { struct PNP_GetGlobalState *r = (struct PNP_GetGlobalState *)_r; r->out.result = _PNP_GetGlobalState(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_INITDETECTION: { struct PNP_InitDetection *r = (struct PNP_InitDetection *)_r; r->out.result = _PNP_InitDetection(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REPORTLOGON: { struct PNP_ReportLogOn *r = (struct PNP_ReportLogOn *)_r; r->out.result = _PNP_ReportLogOn(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_VALIDATEDEVICEINSTANCE: { struct PNP_ValidateDeviceInstance *r = (struct PNP_ValidateDeviceInstance *)_r; r->out.result = _PNP_ValidateDeviceInstance(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETROOTDEVICEINSTANCE: { struct PNP_GetRootDeviceInstance *r = (struct PNP_GetRootDeviceInstance *)_r; r->out.result = _PNP_GetRootDeviceInstance(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETRELATEDDEVICEINSTANCE: { struct PNP_GetRelatedDeviceInstance *r = (struct PNP_GetRelatedDeviceInstance *)_r; r->out.result = _PNP_GetRelatedDeviceInstance(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_ENUMERATESUBKEYS: { struct PNP_EnumerateSubKeys *r = (struct PNP_EnumerateSubKeys *)_r; r->out.result = _PNP_EnumerateSubKeys(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETDEVICELIST: { struct PNP_GetDeviceList *r = (struct PNP_GetDeviceList *)_r; ZERO_STRUCT(r->out); r->out.length = r->in.length; r->out.buffer = talloc_zero_array(mem_ctx, uint16_t, *r->out.length); if (r->out.buffer == NULL) { return NT_STATUS_NO_MEMORY; } r->out.result = _PNP_GetDeviceList(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETDEVICELISTSIZE: { struct PNP_GetDeviceListSize *r = (struct PNP_GetDeviceListSize *)_r; ZERO_STRUCT(r->out); r->out.size = talloc_zero(mem_ctx, uint32_t); if (r->out.size == NULL) { return NT_STATUS_NO_MEMORY; } r->out.result = _PNP_GetDeviceListSize(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETDEPTH: { struct PNP_GetDepth *r = (struct PNP_GetDepth *)_r; r->out.result = _PNP_GetDepth(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETDEVICEREGPROP: { struct PNP_GetDeviceRegProp *r = (struct PNP_GetDeviceRegProp *)_r; ZERO_STRUCT(r->out); r->out.reg_data_type = r->in.reg_data_type; r->out.buffer_size = r->in.buffer_size; r->out.needed = r->in.needed; r->out.buffer = talloc_zero_array(mem_ctx, uint8_t, *r->out.buffer_size); if (r->out.buffer == NULL) { return NT_STATUS_NO_MEMORY; } r->out.result = _PNP_GetDeviceRegProp(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_SETDEVICEREGPROP: { struct PNP_SetDeviceRegProp *r = (struct PNP_SetDeviceRegProp *)_r; r->out.result = _PNP_SetDeviceRegProp(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETCLASSINSTANCE: { struct PNP_GetClassInstance *r = (struct PNP_GetClassInstance *)_r; r->out.result = _PNP_GetClassInstance(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_CREATEKEY: { struct PNP_CreateKey *r = (struct PNP_CreateKey *)_r; r->out.result = _PNP_CreateKey(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_DELETEREGISTRYKEY: { struct PNP_DeleteRegistryKey *r = (struct PNP_DeleteRegistryKey *)_r; r->out.result = _PNP_DeleteRegistryKey(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETCLASSCOUNT: { struct PNP_GetClassCount *r = (struct PNP_GetClassCount *)_r; r->out.result = _PNP_GetClassCount(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETCLASSNAME: { struct PNP_GetClassName *r = (struct PNP_GetClassName *)_r; r->out.result = _PNP_GetClassName(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_DELETECLASSKEY: { struct PNP_DeleteClassKey *r = (struct PNP_DeleteClassKey *)_r; r->out.result = _PNP_DeleteClassKey(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETINTERFACEDEVICEALIAS: { struct PNP_GetInterfaceDeviceAlias *r = (struct PNP_GetInterfaceDeviceAlias *)_r; r->out.result = _PNP_GetInterfaceDeviceAlias(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETINTERFACEDEVICELIST: { struct PNP_GetInterfaceDeviceList *r = (struct PNP_GetInterfaceDeviceList *)_r; r->out.result = _PNP_GetInterfaceDeviceList(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETINTERFACEDEVICELISTSIZE: { struct PNP_GetInterfaceDeviceListSize *r = (struct PNP_GetInterfaceDeviceListSize *)_r; r->out.result = _PNP_GetInterfaceDeviceListSize(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REGISTERDEVICECLASSASSOCIATION: { struct PNP_RegisterDeviceClassAssociation *r = (struct PNP_RegisterDeviceClassAssociation *)_r; r->out.result = _PNP_RegisterDeviceClassAssociation(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_UNREGISTERDEVICECLASSASSOCIATION: { struct PNP_UnregisterDeviceClassAssociation *r = (struct PNP_UnregisterDeviceClassAssociation *)_r; r->out.result = _PNP_UnregisterDeviceClassAssociation(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETCLASSREGPROP: { struct PNP_GetClassRegProp *r = (struct PNP_GetClassRegProp *)_r; r->out.result = _PNP_GetClassRegProp(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_SETCLASSREGPROP: { struct PNP_SetClassRegProp *r = (struct PNP_SetClassRegProp *)_r; r->out.result = _PNP_SetClassRegProp(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_CREATEDEVINST: { struct PNP_CreateDevInst *r = (struct PNP_CreateDevInst *)_r; r->out.result = _PNP_CreateDevInst(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_DEVICEINSTANCEACTION: { struct PNP_DeviceInstanceAction *r = (struct PNP_DeviceInstanceAction *)_r; r->out.result = _PNP_DeviceInstanceAction(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETDEVICESTATUS: { struct PNP_GetDeviceStatus *r = (struct PNP_GetDeviceStatus *)_r; r->out.result = _PNP_GetDeviceStatus(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_SETDEVICEPROBLEM: { struct PNP_SetDeviceProblem *r = (struct PNP_SetDeviceProblem *)_r; r->out.result = _PNP_SetDeviceProblem(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_DISABLEDEVINST: { struct PNP_DisableDevInst *r = (struct PNP_DisableDevInst *)_r; r->out.result = _PNP_DisableDevInst(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_UNINSTALLDEVINST: { struct PNP_UninstallDevInst *r = (struct PNP_UninstallDevInst *)_r; r->out.result = _PNP_UninstallDevInst(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_ADDID: { struct PNP_AddID *r = (struct PNP_AddID *)_r; r->out.result = _PNP_AddID(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REGISTERDRIVER: { struct PNP_RegisterDriver *r = (struct PNP_RegisterDriver *)_r; r->out.result = _PNP_RegisterDriver(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_QUERYREMOVE: { struct PNP_QueryRemove *r = (struct PNP_QueryRemove *)_r; r->out.result = _PNP_QueryRemove(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REQUESTDEVICEEJECT: { struct PNP_RequestDeviceEject *r = (struct PNP_RequestDeviceEject *)_r; r->out.result = _PNP_RequestDeviceEject(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_ISDOCKSTATIONPRESENT: { struct PNP_IsDockStationPresent *r = (struct PNP_IsDockStationPresent *)_r; r->out.result = _PNP_IsDockStationPresent(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REQUESTEJECTPC: { struct PNP_RequestEjectPC *r = (struct PNP_RequestEjectPC *)_r; r->out.result = _PNP_RequestEjectPC(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_HWPROFFLAGS: { struct PNP_HwProfFlags *r = (struct PNP_HwProfFlags *)_r; ZERO_STRUCT(r->out); r->out.profile_flags = r->in.profile_flags; r->out.veto_type = r->in.veto_type; r->out.unknown5a = talloc_zero(mem_ctx, const char *); if (r->out.unknown5a == NULL) { return NT_STATUS_NO_MEMORY; } r->out.result = _PNP_HwProfFlags(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETHWPROFINFO: { struct PNP_GetHwProfInfo *r = (struct PNP_GetHwProfInfo *)_r; ZERO_STRUCT(r->out); r->out.info = r->in.info; r->out.result = _PNP_GetHwProfInfo(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_ADDEMPTYLOGCONF: { struct PNP_AddEmptyLogConf *r = (struct PNP_AddEmptyLogConf *)_r; r->out.result = _PNP_AddEmptyLogConf(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_FREELOGCONF: { struct PNP_FreeLogConf *r = (struct PNP_FreeLogConf *)_r; r->out.result = _PNP_FreeLogConf(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETFIRSTLOGCONF: { struct PNP_GetFirstLogConf *r = (struct PNP_GetFirstLogConf *)_r; r->out.result = _PNP_GetFirstLogConf(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETNEXTLOGCONF: { struct PNP_GetNextLogConf *r = (struct PNP_GetNextLogConf *)_r; r->out.result = _PNP_GetNextLogConf(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETLOGCONFPRIORITY: { struct PNP_GetLogConfPriority *r = (struct PNP_GetLogConfPriority *)_r; r->out.result = _PNP_GetLogConfPriority(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_ADDRESDES: { struct PNP_AddResDes *r = (struct PNP_AddResDes *)_r; r->out.result = _PNP_AddResDes(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_FREERESDES: { struct PNP_FreeResDes *r = (struct PNP_FreeResDes *)_r; r->out.result = _PNP_FreeResDes(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETNEXTRESDES: { struct PNP_GetNextResDes *r = (struct PNP_GetNextResDes *)_r; r->out.result = _PNP_GetNextResDes(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETRESDESDATA: { struct PNP_GetResDesData *r = (struct PNP_GetResDesData *)_r; r->out.result = _PNP_GetResDesData(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETRESDESDATASIZE: { struct PNP_GetResDesDataSize *r = (struct PNP_GetResDesDataSize *)_r; r->out.result = _PNP_GetResDesDataSize(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_MODIFYRESDES: { struct PNP_ModifyResDes *r = (struct PNP_ModifyResDes *)_r; r->out.result = _PNP_ModifyResDes(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_DETECTRESOURCELIMIT: { struct PNP_DetectResourceLimit *r = (struct PNP_DetectResourceLimit *)_r; r->out.result = _PNP_DetectResourceLimit(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_QUERYRESCONFLIST: { struct PNP_QueryResConfList *r = (struct PNP_QueryResConfList *)_r; r->out.result = _PNP_QueryResConfList(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_SETHWPROF: { struct PNP_SetHwProf *r = (struct PNP_SetHwProf *)_r; r->out.result = _PNP_SetHwProf(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_QUERYARBITRATORFREEDATA: { struct PNP_QueryArbitratorFreeData *r = (struct PNP_QueryArbitratorFreeData *)_r; r->out.result = _PNP_QueryArbitratorFreeData(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_QUERYARBITRATORFREESIZE: { struct PNP_QueryArbitratorFreeSize *r = (struct PNP_QueryArbitratorFreeSize *)_r; r->out.result = _PNP_QueryArbitratorFreeSize(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_RUNDETECTION: { struct PNP_RunDetection *r = (struct PNP_RunDetection *)_r; r->out.result = _PNP_RunDetection(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_REGISTERNOTIFICATION: { struct PNP_RegisterNotification *r = (struct PNP_RegisterNotification *)_r; r->out.result = _PNP_RegisterNotification(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_UNREGISTERNOTIFICATION: { struct PNP_UnregisterNotification *r = (struct PNP_UnregisterNotification *)_r; r->out.result = _PNP_UnregisterNotification(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETCUSTOMDEVPROP: { struct PNP_GetCustomDevProp *r = (struct PNP_GetCustomDevProp *)_r; r->out.result = _PNP_GetCustomDevProp(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETVERSIONINTERNAL: { struct PNP_GetVersionInternal *r = (struct PNP_GetVersionInternal *)_r; r->out.result = _PNP_GetVersionInternal(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETBLOCKEDDRIVERINFO: { struct PNP_GetBlockedDriverInfo *r = (struct PNP_GetBlockedDriverInfo *)_r; r->out.result = _PNP_GetBlockedDriverInfo(cli->pipes_struct, r); return NT_STATUS_OK; } case NDR_PNP_GETSERVERSIDEDEVICEINSTALLFLAGS: { struct PNP_GetServerSideDeviceInstallFlags *r = (struct PNP_GetServerSideDeviceInstallFlags *)_r; r->out.result = _PNP_GetServerSideDeviceInstallFlags(cli->pipes_struct, r); return NT_STATUS_OK; } default: return NT_STATUS_NOT_IMPLEMENTED; } } NTSTATUS rpc_ntsvcs_init(void) { return rpc_srv_register(SMB_RPC_INTERFACE_VERSION, "ntsvcs", "ntsvcs", &ndr_table_ntsvcs, api_ntsvcs_cmds, sizeof(api_ntsvcs_cmds) / sizeof(struct api_struct)); }