s3: Do not directly reference the ndr_table_* in rpcclient
[kai/samba.git] / source3 / rpcclient / cmd_ntsvcs.c
index 20d6928473917640e989689ee6bf3f5da2358437..88018258df2abb6d666583e2ff9e557bd3b2e0e1 100644 (file)
@@ -83,8 +83,8 @@ static WERROR cmd_ntsvcs_hw_prof_flags(struct rpc_pipe_client *cli,
        NTSTATUS status;
        WERROR werr;
        const char *devicepath = NULL;
-       uint32_t unk3 = 0;
-       uint16_t unk4 = 0;
+       uint32_t profile_flags = 0;
+       uint16_t veto_type = 0;
        const char *unk5 = NULL;
        const char *unk5a = NULL;
 
@@ -99,8 +99,8 @@ static WERROR cmd_ntsvcs_hw_prof_flags(struct rpc_pipe_client *cli,
                                        0,
                                        devicepath,
                                        0,
-                                       &unk3,
-                                       &unk4,
+                                       &profile_flags,
+                                       &veto_type,
                                        unk5,
                                        &unk5a,
                                        0,
@@ -122,15 +122,15 @@ static WERROR cmd_ntsvcs_get_hw_prof_info(struct rpc_pipe_client *cli,
        WERROR werr;
        uint32_t idx = 0;
        struct PNP_HwProfInfo info;
-       uint32_t unknown1 = 0, unknown2 = 0;
+       uint32_t size = 0, flags = 0;
 
        ZERO_STRUCT(info);
 
        status = rpccli_PNP_GetHwProfInfo(cli, mem_ctx,
                                          idx,
                                          &info,
-                                         unknown1,
-                                         unknown2,
+                                         size,
+                                         flags,
                                          &werr);
        if (!NT_STATUS_IS_OK(status)) {
                return ntstatus_to_werror(status);
@@ -149,13 +149,13 @@ static WERROR cmd_ntsvcs_get_dev_reg_prop(struct rpc_pipe_client *cli,
        const char *devicepath = NULL;
        uint32_t property = DEV_REGPROP_DESC;
        uint32_t reg_data_type = REG_NONE;
-       uint8_t buffer;
+       uint8_t *buffer;
        uint32_t buffer_size = 0;
        uint32_t needed = 0;
        uint32_t flags = 0;
 
        if (argc < 2) {
-               printf("usage: %s [devicepath]\n", argv[0]);
+               printf("usage: %s [devicepath] [buffersize]\n", argv[0]);
                return WERR_OK;
        }
 
@@ -166,11 +166,14 @@ static WERROR cmd_ntsvcs_get_dev_reg_prop(struct rpc_pipe_client *cli,
                needed = buffer_size;
        }
 
+       buffer = talloc_array(mem_ctx, uint8_t, buffer_size);
+       W_ERROR_HAVE_NO_MEMORY(buffer);
+
        status = rpccli_PNP_GetDeviceRegProp(cli, mem_ctx,
                                             devicepath,
                                             property,
                                             &reg_data_type,
-                                            &buffer,
+                                            buffer,
                                             &buffer_size,
                                             &needed,
                                             flags,
@@ -232,17 +235,21 @@ static WERROR cmd_ntsvcs_get_dev_list(struct rpc_pipe_client *cli,
        uint32_t length = 0;
        uint32_t flags = 0;
 
-       if (argc > 3) {
-               printf("usage: %s [length] [filter]\n", argv[0]);
+       if (argc > 4) {
+               printf("usage: %s [filter] [length] [flags]\n", argv[0]);
                return WERR_OK;
        }
 
        if (argc >= 2) {
-               length = atoi(argv[1]);
+               filter = argv[1];
        }
 
        if (argc >= 3) {
-               filter = argv[2];
+               length = atoi(argv[2]);
+       }
+
+       if (argc >= 4) {
+               flags = atoi(argv[3]);
        }
 
        buffer = talloc(mem_ctx, uint16_t);
@@ -268,12 +275,33 @@ static WERROR cmd_ntsvcs_get_dev_list(struct rpc_pipe_client *cli,
 struct cmd_set ntsvcs_commands[] = {
 
        { "NTSVCS" },
-       { "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_version, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS version", "" },
-       { "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_validate_dev_inst, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device instance", "" },
-       { "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_hw_prof_flags, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof flags", "" },
-       { "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_hw_prof_info, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS HW prof info", "" },
-       { "ntsvcs_getdevregprop", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_reg_prop, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device registry property", "" },
-       { "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_list_size, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device list size", "" },
-       { "ntsvcs_getdevlist", RPC_RTYPE_WERROR, NULL, cmd_ntsvcs_get_dev_list, &ndr_table_ntsvcs.syntax_id, NULL, "Query NTSVCS device list", "" },
+       { "ntsvcs_getversion", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_get_version,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS version", "" },
+       { "ntsvcs_validatedevinst", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_validate_dev_inst,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS device instance", "" },
+       { "ntsvcs_hwprofflags", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_hw_prof_flags,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS HW prof flags", "" },
+       { "ntsvcs_hwprofinfo", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_get_hw_prof_info,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS HW prof info", "" },
+       { "ntsvcs_getdevregprop", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_get_dev_reg_prop,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS device registry property", "" },
+       { "ntsvcs_getdevlistsize", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_get_dev_list_size,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS device list size", "" },
+       { "ntsvcs_getdevlist", RPC_RTYPE_WERROR, NULL,
+         cmd_ntsvcs_get_dev_list,
+         NDR_NTSVCS_UUID, NDR_NTSVCS_VERSION, NULL,
+         "Query NTSVCS device list", "" },
        { NULL }
 };