From bf645415f6a611d71eb07e9ebd9f005a02720a6d Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 25 Aug 2004 21:26:37 +0000 Subject: r2073: Adding getprinter level 7 to rpcclient. Is there any other rpc-call to get the guid of a published printer? Guenther (This used to be commit 944ad569c7a88e1d2f14311eed10f80ea9861963) --- source3/include/rpc_spoolss.h | 1 + source3/rpc_client/cli_spoolss.c | 24 ++++++++++++++++++++++++ source3/rpcclient/cmd_spoolss.c | 15 +++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/source3/include/rpc_spoolss.h b/source3/include/rpc_spoolss.h index d9fc0c6a6a..7f82c2634f 100755 --- a/source3/include/rpc_spoolss.h +++ b/source3/include/rpc_spoolss.h @@ -1025,6 +1025,7 @@ typedef struct printer_info_ctr_info PRINTER_INFO_3 *printers_3; PRINTER_INFO_4 *printers_4; PRINTER_INFO_5 *printers_5; + PRINTER_INFO_7 *printers_7; } PRINTER_INFO_CTR; diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c index 8f5f2413de..5303f83bf9 100644 --- a/source3/rpc_client/cli_spoolss.c +++ b/source3/rpc_client/cli_spoolss.c @@ -130,6 +130,27 @@ static void decode_printer_info_3(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, *info=inf; } +/********************************************************************** +**********************************************************************/ +static void decode_printer_info_7(TALLOC_CTX *mem_ctx, NEW_BUFFER *buffer, + uint32 returned, PRINTER_INFO_7 **info) +{ + uint32 i; + PRINTER_INFO_7 *inf; + + inf=(PRINTER_INFO_7 *)talloc(mem_ctx, returned*sizeof(PRINTER_INFO_7)); + memset(inf, 0, returned*sizeof(PRINTER_INFO_7)); + + prs_set_offset(&buffer->prs,0); + + for (i=0; iprinters_3); break; + case 7: + decode_printer_info_7(mem_ctx, r.buffer, 1, &ctr->printers_7); + break; } } diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index 66ad96a9d3..0e2dd22240 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -297,6 +297,18 @@ static void display_print_info_3(PRINTER_INFO_3 *i3) printf("\n"); } +/**************************************************************************** +printer info level 7 display function +****************************************************************************/ +static void display_print_info_7(PRINTER_INFO_7 *i7) +{ + fstring guid = ""; + rpcstr_pull(guid, i7->guid.buffer,sizeof(guid), -1, STR_TERMINATE); + printf("\tguid:[%s]\n", guid); + printf("\taction:[0x%x]\n", i7->action); +} + + /* Enumerate printers */ static WERROR cmd_spoolss_enum_printers(struct cli_state *cli, @@ -687,6 +699,9 @@ static WERROR cmd_spoolss_getprinter(struct cli_state *cli, case 3: display_print_info_3(ctr.printers_3); break; + case 7: + display_print_info_7(ctr.printers_7); + break; default: printf("unknown info level %d\n", info_level); break; -- cgit