1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

s3-spoolss: add rpccli_spoolss_enumprinterdrivers convenience wrapper.

Guenther
This commit is contained in:
Günther Deschner 2009-03-09 14:59:55 +01:00
parent e605e4503c
commit 5f46554228
2 changed files with 62 additions and 0 deletions

View File

@ -5515,6 +5515,14 @@ WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli,
uint32_t offered, uint32_t offered,
uint32_t *count, uint32_t *count,
union spoolss_JobInfo **info); union spoolss_JobInfo **info);
WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
const char *server,
const char *environment,
uint32_t level,
uint32_t offered,
uint32_t *count,
union spoolss_DriverInfo **info);
WERROR rpccli_spoolss_enum_printers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, WERROR rpccli_spoolss_enum_printers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
char *name, uint32 flags, uint32 level, char *name, uint32 flags, uint32 level,
uint32 *num_printers, PRINTER_INFO_CTR *ctr); uint32 *num_printers, PRINTER_INFO_CTR *ctr);

View File

@ -597,6 +597,60 @@ WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli,
return werror; return werror;
} }
/**********************************************************************
convencience wrapper around rpccli_spoolss_EnumPrinterDrivers
**********************************************************************/
WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
const char *server,
const char *environment,
uint32_t level,
uint32_t offered,
uint32_t *count,
union spoolss_DriverInfo **info)
{
NTSTATUS status;
WERROR werror;
uint32_t needed;
DATA_BLOB buffer;
if (offered > 0) {
buffer = data_blob_talloc_zero(mem_ctx, offered);
W_ERROR_HAVE_NO_MEMORY(buffer.data);
}
status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx,
server,
environment,
level,
(offered > 0) ? &buffer : NULL,
offered,
count,
info,
&needed,
&werror);
if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
offered = needed;
buffer = data_blob_talloc_zero(mem_ctx, needed);
W_ERROR_HAVE_NO_MEMORY(buffer.data);
status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx,
server,
environment,
level,
(offered > 0) ? &buffer : NULL,
offered,
count,
info,
&needed,
&werror);
}
return werror;
}
/********************************************************************* /*********************************************************************
Decode various spoolss rpc's and info levels Decode various spoolss rpc's and info levels