#include "includes.h"
#include "rpcclient.h"
-#include "../librpc/gen_ndr/cli_spoolss.h"
+#include "../librpc/gen_ndr/ndr_spoolss_c.h"
#include "rpc_client/cli_spoolss.h"
#include "rpc_client/init_spoolss.h"
#include "registry.h"
WERROR werror;
struct policy_handle hnd;
uint32_t access_mask = PRINTER_ALL_ACCESS;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc < 2) {
printf("Usage: %s <printername> [access_mask]\n", argv[0]);
&hnd);
if (W_ERROR_IS_OK(werror)) {
printf("Printer %s opened successfully\n", argv[1]);
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, &werror);
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &werror);
if (!W_ERROR_IS_OK(werror)) {
printf("Error closing printer handle! (%s)\n",
uint32_t access_mask = PRINTER_ALL_ACCESS;
NTSTATUS status;
struct spoolss_DevmodeContainer devmode_ctr;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
ZERO_STRUCT(devmode_ctr);
/* Open the printer handle */
- status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
+ status = dcerpc_spoolss_OpenPrinter(b, mem_ctx,
argv[1],
NULL,
devmode_ctr,
access_mask,
&hnd,
&werror);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
if (W_ERROR_IS_OK(werror)) {
printf("Printer %s opened successfully\n", argv[1]);
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, &werror);
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &werror);
if (!W_ERROR_IS_OK(werror)) {
printf("Error closing printer handle! (%s)\n",
const char *printername, *comment = NULL;
struct spoolss_DevmodeContainer devmode_ctr;
struct sec_desc_buf secdesc_ctr;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc == 1 || argc > 3) {
printf("Usage: %s printername comment\n", argv[0]);
info_ctr.level = 2;
info_ctr.info.info2 = &info2;
- status = rpccli_spoolss_SetPrinter(cli, mem_ctx,
+ status = dcerpc_spoolss_SetPrinter(b, mem_ctx,
&pol,
&info_ctr,
&devmode_ctr,
&secdesc_ctr,
0, /* command */
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (W_ERROR_IS_OK(result))
printf("Success in setting comment.\n");
done:
- if (is_valid_policy_hnd(&pol))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ if (is_valid_policy_hnd(&pol)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
+ }
return result;
}
struct spoolss_SetPrinterInfo2 info2;
struct spoolss_DevmodeContainer devmode_ctr;
struct sec_desc_buf secdesc_ctr;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
ZERO_STRUCT(devmode_ctr);
ZERO_STRUCT(secdesc_ctr);
info_ctr.level = 2;
info_ctr.info.info2 = &info2;
- status = rpccli_spoolss_SetPrinter(cli, mem_ctx,
+ status = dcerpc_spoolss_SetPrinter(b, mem_ctx,
&pol,
&info_ctr,
&devmode_ctr,
&secdesc_ctr,
0, /* command */
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (W_ERROR_IS_OK(result))
printf("Success in setting printername.\n");
done:
- if (is_valid_policy_hnd(&pol))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ if (is_valid_policy_hnd(&pol)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
+ }
return result;
}
uint32_t level = 1;
const char *printername;
union spoolss_PrinterInfo info;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc == 1 || argc > 3) {
printf("Usage: %s <printername> [level]\n", argv[0]);
}
done:
if (is_valid_policy_hnd(&pol)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
}
return result;
enum winreg_Type type;
uint8_t *data;
uint32_t needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 3) {
printf("Usage: %s <printername> <valuename>\n", argv[0]);
display_printer_data(valuename, type, data, needed);
done:
- if (is_valid_policy_hnd(&pol))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ if (is_valid_policy_hnd(&pol)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
+ }
return result;
}
uint8_t *data = NULL;
uint32_t offered = 0;
uint32_t needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 4) {
printf("Usage: %s <printername> <keyname> <valuename>\n",
goto done;
}
- status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrinterDataEx(b, mem_ctx,
&pol,
keyname,
valuename,
offered,
&needed,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (W_ERROR_EQUAL(result, WERR_MORE_DATA)) {
offered = needed;
data = talloc_zero_array(mem_ctx, uint8_t, offered);
if (!data) {
goto done;
}
- status = rpccli_spoolss_GetPrinterDataEx(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrinterDataEx(b, mem_ctx,
&pol,
keyname,
valuename,
}
if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
goto done;
}
done:
- if (is_valid_policy_hnd(&pol))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ if (is_valid_policy_hnd(&pol)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
+ }
return result;
}
union spoolss_DriverInfo info;
uint32_t server_major_version;
uint32_t server_minor_version;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if ((argc == 1) || (argc > 3)) {
printf("Usage: %s <printername> [level]\n", argv[0]);
/* Cleanup */
if (is_valid_policy_hnd(&pol)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
}
if (success) {
uint32_t offered;
union spoolss_DriverDirectoryInfo info;
uint32_t needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc > 2) {
printf("Usage: %s [environment]\n", argv[0]);
/* Get the directory. Only use Info level 1 */
- status = rpccli_spoolss_GetPrinterDriverDirectory(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrinterDriverDirectory(b, mem_ctx,
cli->srv_name_slash,
env,
1,
NULL, /* info */
&needed,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
if (W_ERROR_EQUAL(result, WERR_INSUFFICIENT_BUFFER)) {
offered = needed;
buffer = data_blob_talloc_zero(mem_ctx, needed);
- status = rpccli_spoolss_GetPrinterDriverDirectory(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrinterDriverDirectory(b, mem_ctx,
cli->srv_name_slash,
env,
1,
&info,
&needed,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
}
if (W_ERROR_IS_OK(result)) {
struct spoolss_AddDriverInfo3 info3;
const char *arch;
char *driver_args;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* parse the command arguments */
if (argc != 3 && argc != 4)
info_ctr.level = level;
info_ctr.info.info3 = &info3;
- status = rpccli_spoolss_AddPrinterDriver(cli, mem_ctx,
+ status = dcerpc_spoolss_AddPrinterDriver(b, mem_ctx,
cli->srv_name_slash,
&info_ctr,
&result);
struct spoolss_SetPrinterInfo2 info2;
struct spoolss_DevmodeContainer devmode_ctr;
struct sec_desc_buf secdesc_ctr;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
ZERO_STRUCT(devmode_ctr);
ZERO_STRUCT(secdesc_ctr);
info_ctr.level = 2;
info_ctr.info.info2 = &info2;
- status = rpccli_spoolss_SetPrinter(cli, mem_ctx,
+ status = dcerpc_spoolss_SetPrinter(b, mem_ctx,
&pol,
&info_ctr,
&devmode_ctr,
&secdesc_ctr,
0, /* command */
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (!W_ERROR_IS_OK(result)) {
printf("SetPrinter call failed!\n");
goto done;;
done:
/* Cleanup */
- if (is_valid_policy_hnd(&pol))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ if (is_valid_policy_hnd(&pol)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
+ }
return result;
}
{
WERROR result, ret = WERR_UNKNOWN_PRINTER_DRIVER;
NTSTATUS status;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
int i;
int vers = -1;
continue;
/* make the call to remove the driver */
- status = rpccli_spoolss_DeletePrinterDriverEx(cli, mem_ctx,
+ status = dcerpc_spoolss_DeletePrinterDriverEx(b, mem_ctx,
cli->srv_name_slash,
archi_table[i].long_archi,
argv[1],
delete_flags,
archi_table[i].version,
&result);
-
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
if ( !W_ERROR_IS_OK(result) )
{
if ( !W_ERROR_EQUAL(result, WERR_UNKNOWN_PRINTER_DRIVER) ) {
WERROR result = WERR_OK;
NTSTATUS status;
int i;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* parse the command arguments */
if (argc != 2) {
result = WERR_OK;
/* make the call to remove the driver */
- status = rpccli_spoolss_DeletePrinterDriver(cli, mem_ctx,
+ status = dcerpc_spoolss_DeletePrinterDriver(b, mem_ctx,
cli->srv_name_slash,
archi_table[i].long_archi,
argv[1],
&result);
if (!NT_STATUS_IS_OK(status)) {
- if (W_ERROR_IS_OK(result)) {
- result = ntstatus_to_werror(status);
- }
+ result = ntstatus_to_werror(status);
+ continue;
}
if ( !W_ERROR_IS_OK(result) ) {
if ( !W_ERROR_EQUAL(result, WERR_UNKNOWN_PRINTER_DRIVER) ) {
- printf ("Failed to remove driver %s for arch [%s] - error 0x%x!\n",
+ printf ("Failed to remove driver %s for arch [%s] - error %s!\n",
argv[1], archi_table[i].long_archi,
- W_ERROR_V(result));
+ win_errstr(result));
}
} else {
printf ("Driver %s removed for arch [%s].\n", argv[1],
uint32_t offered;
union spoolss_PrintProcessorDirectoryInfo info;
uint32_t needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* parse the command arguments */
if (argc > 2) {
environment = argv[1];
}
- status = rpccli_spoolss_GetPrintProcessorDirectory(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrintProcessorDirectory(b, mem_ctx,
cli->srv_name_slash,
environment,
1,
NULL, /* info */
&needed,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
if (W_ERROR_EQUAL(result, WERR_INSUFFICIENT_BUFFER)) {
offered = needed;
buffer = data_blob_talloc_zero(mem_ctx, needed);
- status = rpccli_spoolss_GetPrintProcessorDirectory(cli, mem_ctx,
+ status = dcerpc_spoolss_GetPrintProcessorDirectory(b, mem_ctx,
cli->srv_name_slash,
environment,
1,
&info,
&needed,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ return ntstatus_to_werror(status);
+ }
}
if (W_ERROR_IS_OK(result)) {
struct spoolss_AddFormInfo1 info1;
struct spoolss_AddFormInfo2 info2;
uint32_t level = 1;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* Parse the command arguments */
info.info2 = &info2;
break;
+ default:
+ werror = WERR_INVALID_PARAM;
+ goto done;
}
/* Add the form */
- status = rpccli_spoolss_AddForm(cli, mem_ctx,
+ status = dcerpc_spoolss_AddForm(b, mem_ctx,
&handle,
level,
info,
&werror);
-
+ if (!NT_STATUS_IS_OK(status)) {
+ werror = ntstatus_to_werror(status);
+ goto done;
+ }
done:
- if (is_valid_policy_hnd(&handle))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ if (is_valid_policy_hnd(&handle)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
+ }
return werror;
}
const char *printername;
union spoolss_AddFormInfo info;
struct spoolss_AddFormInfo1 info1;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* Parse the command arguments */
/* Set the form */
- status = rpccli_spoolss_SetForm(cli, mem_ctx,
+ status = dcerpc_spoolss_SetForm(b, mem_ctx,
&handle,
argv[2],
1,
info,
&werror);
-
+ if (!NT_STATUS_IS_OK(status)) {
+ werror = ntstatus_to_werror(status);
+ goto done;
+ }
done:
- if (is_valid_policy_hnd(&handle))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ if (is_valid_policy_hnd(&handle)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
+ }
return werror;
}
union spoolss_FormInfo info;
uint32_t needed;
uint32_t level = 1;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* Parse the command arguments */
/* Get the form */
- status = rpccli_spoolss_GetForm(cli, mem_ctx,
+ status = dcerpc_spoolss_GetForm(b, mem_ctx,
&handle,
argv[2],
level,
&info,
&needed,
&werror);
+ if (!NT_STATUS_IS_OK(status)) {
+ werror = ntstatus_to_werror(status);
+ goto done;
+ }
if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
buffer = data_blob_talloc_zero(mem_ctx, needed);
offered = needed;
- status = rpccli_spoolss_GetForm(cli, mem_ctx,
+ status = dcerpc_spoolss_GetForm(b, mem_ctx,
&handle,
argv[2],
level,
&info,
&needed,
&werror);
+ if (!NT_STATUS_IS_OK(status)) {
+ werror = ntstatus_to_werror(status);
+ goto done;
+ }
}
- if (!NT_STATUS_IS_OK(status)) {
- return werror;
+ if (!W_ERROR_IS_OK(werror)) {
+ goto done;
}
switch (level) {
}
done:
- if (is_valid_policy_hnd(&handle))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ if (is_valid_policy_hnd(&handle)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
+ }
return werror;
}
WERROR werror;
NTSTATUS status;
const char *printername;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* Parse the command arguments */
/* Delete the form */
- status = rpccli_spoolss_DeleteForm(cli, mem_ctx,
+ status = dcerpc_spoolss_DeleteForm(b, mem_ctx,
&handle,
argv[2],
&werror);
if (!NT_STATUS_IS_OK(status)) {
- return ntstatus_to_werror(status);
+ werror = ntstatus_to_werror(status);
+ goto done;
}
done:
- if (is_valid_policy_hnd(&handle))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ if (is_valid_policy_hnd(&handle)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
+ }
return werror;
}
const char *printername;
uint32_t num_forms, level = 1, i;
union spoolss_FormInfo *forms;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* Parse the command arguments */
}
done:
- if (is_valid_policy_hnd(&handle))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ if (is_valid_policy_hnd(&handle)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
+ }
return werror;
}
enum winreg_Type type;
union spoolss_PrinterData data;
DATA_BLOB blob;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
/* parse the command arguments */
if (argc < 5) {
goto done;
}
- status = rpccli_spoolss_SetPrinterData(cli, mem_ctx,
+ status = dcerpc_spoolss_SetPrinterData(b, mem_ctx,
&pol,
argv[3], /* value_name */
type,
blob.data,
blob.length,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf ("Unable to set [%s=%s]!\n", argv[3], argv[4]);
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (!W_ERROR_IS_OK(result)) {
printf ("Unable to set [%s=%s]!\n", argv[3], argv[4]);
goto done;
done:
/* cleanup */
if (is_valid_policy_hnd(&pol)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &pol, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &pol, &_result);
}
return result;
const char *printername;
struct policy_handle hnd;
union spoolss_JobInfo *info;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc < 2 || argc > 3) {
printf("Usage: %s printername [level]\n", argv[0]);
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
uint32_t job_id;
uint32_t level = 1;
union spoolss_JobInfo info;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc < 3 || argc > 4) {
printf("Usage: %s printername job_id [level]\n", argv[0]);
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
struct policy_handle hnd;
uint32_t job_id;
enum spoolss_JobControl command;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 4) {
printf("Usage: %s printername job_id command\n", argv[0]);
/* Set Job */
- status = rpccli_spoolss_SetJob(cli, mem_ctx,
+ status = dcerpc_spoolss_SetJob(b, mem_ctx,
&hnd,
job_id,
NULL,
command,
&result);
-
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (!W_ERROR_IS_OK(result)) {
goto done;
}
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
uint8_t *data = NULL;
uint32_t data_offered = 0;
uint32_t data_needed;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 2) {
printf("Usage: %s printername\n", argv[0]);
/* Enumerate data */
- status = rpccli_spoolss_EnumPrinterData(cli, mem_ctx,
+ status = dcerpc_spoolss_EnumPrinterData(b, mem_ctx,
&hnd,
i,
value_name,
while (NT_STATUS_IS_OK(status) && W_ERROR_IS_OK(result)) {
- status = rpccli_spoolss_EnumPrinterData(cli, mem_ctx,
+ status = dcerpc_spoolss_EnumPrinterData(b, mem_ctx,
&hnd,
i++,
value_name,
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
struct policy_handle hnd;
uint32_t count;
struct spoolss_PrinterEnumValues *info;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 3) {
printf("Usage: %s printername <keyname>\n", argv[0]);
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
const char **key_buffer = NULL;
int i;
uint32_t offered = 0;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc < 2 || argc > 4) {
printf("Usage: %s printername [keyname] [offered]\n", argv[0]);
done:
if (is_valid_policy_hnd(&hnd)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
}
return result;
WERROR result;
NTSTATUS status;
struct spoolss_NotifyOption option;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
if (argc != 2) {
printf("Usage: %s printername\n", argv[0]);
/* Send rffpcnex */
- status = rpccli_spoolss_RemoteFindFirstPrinterChangeNotifyEx(cli, mem_ctx,
+ status = dcerpc_spoolss_RemoteFindFirstPrinterChangeNotifyEx(b, mem_ctx,
&hnd,
0,
0,
123,
&option,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (!W_ERROR_IS_OK(result)) {
printf("Error rffpcnex %s\n", argv[1]);
goto done;
}
done:
- if (is_valid_policy_hnd(&hnd))
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &hnd, NULL);
+ if (is_valid_policy_hnd(&hnd)) {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &hnd, &_result);
+ }
return result;
}
/* cleanup */
printf("Closing printers...");
- rpccli_spoolss_ClosePrinter( cli, mem_ctx, &hPrinter1, NULL );
- rpccli_spoolss_ClosePrinter( cli2, mem_ctx, &hPrinter2, NULL );
+ {
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(cli->binding_handle, mem_ctx, &hPrinter1, &_result);
+ dcerpc_spoolss_ClosePrinter(cli2->binding_handle, mem_ctx, &hPrinter2, &_result);
+ }
printf("ok\n");
/* close the second remote connection */
struct policy_handle handle, gdi_handle;
const char *printername;
struct spoolss_DevmodeContainer devmode_ctr;
+ struct dcerpc_binding_handle *b = cli->binding_handle;
RPCCLIENT_PRINTERNAME(printername, cli, argv[1]);
ZERO_STRUCT(devmode_ctr);
- status = rpccli_spoolss_CreatePrinterIC(cli, mem_ctx,
+ status = dcerpc_spoolss_CreatePrinterIC(b, mem_ctx,
&handle,
&gdi_handle,
&devmode_ctr,
&result);
+ if (!NT_STATUS_IS_OK(status)) {
+ result = ntstatus_to_werror(status);
+ goto done;
+ }
if (!W_ERROR_IS_OK(result)) {
goto done;
}
done:
if (is_valid_policy_hnd(&gdi_handle)) {
- rpccli_spoolss_DeletePrinterIC(cli, mem_ctx, &gdi_handle, NULL);
+ WERROR _result;
+ dcerpc_spoolss_DeletePrinterIC(b, mem_ctx, &gdi_handle, &_result);
}
if (is_valid_policy_hnd(&handle)) {
- rpccli_spoolss_ClosePrinter(cli, mem_ctx, &handle, NULL);
+ WERROR _result;
+ dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &_result);
}
return result;