#ifndef _HEADER_spoolss
#define _HEADER_spoolss
+#define PRINTER_ENUM_ICONMASK ( (PRINTER_ENUM_ICON1|PRINTER_ENUM_ICON2|PRINTER_ENUM_ICON3|PRINTER_ENUM_ICON4|PRINTER_ENUM_ICON5|PRINTER_ENUM_ICON6|PRINTER_ENUM_ICON7|PRINTER_ENUM_ICON8) )
#define SPOOLSS_ARCHITECTURE_NT_X86 ( "Windows NT x86" )
+#define PRINTER_CHANGE_PRINTER ( (PRINTER_CHANGE_ADD_PRINTER|PRINTER_CHANGE_SET_PRINTER|PRINTER_CHANGE_DELETE_PRINTER|PRINTER_CHANGE_FAILED_CONNECTION_PRINTER) )
+#define PRINTER_CHANGE_JOB ( (PRINTER_CHANGE_ADD_JOB|PRINTER_CHANGE_SET_JOB|PRINTER_CHANGE_DELETE_JOB|PRINTER_CHANGE_WRITE_JOB) )
+#define PRINTER_CHANGE_FORM ( (PRINTER_CHANGE_ADD_FORM|PRINTER_CHANGE_SET_FORM|PRINTER_CHANGE_DELETE_FORM) )
+#define PRINTER_CHANGE_PORT ( (PRINTER_CHANGE_ADD_PORT|PRINTER_CHANGE_CONFIGURE_PORT|PRINTER_CHANGE_DELETE_PORT) )
+#define PRINTER_CHANGE_PRINT_PROCESSOR ( (PRINTER_CHANGE_ADD_PRINT_PROCESSOR|PRINTER_CHANGE_DELETE_PRINT_PROCESSOR) )
+#define PRINTER_CHANGE_PRINTER_DRIVER ( (PRINTER_CHANGE_ADD_PRINTER_DRIVER|PRINTER_CHANGE_SET_PRINTER_DRIVER|PRINTER_CHANGE_DELETE_PRINTER_DRIVER) )
+#define PRINTER_CHANGE_ALL ( (PRINTER_CHANGE_JOB|PRINTER_CHANGE_FORM|PRINTER_CHANGE_PORT|PRINTER_CHANGE_PRINT_PROCESSOR|PRINTER_CHANGE_PRINTER_DRIVER) )
#define SERVER_ALL_ACCESS ( SEC_STD_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
#define SERVER_READ ( SEC_STD_READ_CONTROL|SERVER_ACCESS_ENUMERATE )
#define SERVER_WRITE ( STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE )
struct spoolss_MonitorInfo2 info2;/* [case(2)] */
}/* [relative_base,nodiscriminant,public] */;
+/* bitmap spoolss_PrinterChangeFlags */
+#define PRINTER_CHANGE_ADD_PRINTER ( 0x00000001 )
+#define PRINTER_CHANGE_SET_PRINTER ( 0x00000002 )
+#define PRINTER_CHANGE_DELETE_PRINTER ( 0x00000004 )
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER ( 0x00000008 )
+#define PRINTER_CHANGE_ADD_JOB ( 0x00000100 )
+#define PRINTER_CHANGE_SET_JOB ( 0x00000200 )
+#define PRINTER_CHANGE_DELETE_JOB ( 0x00000400 )
+#define PRINTER_CHANGE_WRITE_JOB ( 0x00000800 )
+#define PRINTER_CHANGE_ADD_FORM ( 0x00010000 )
+#define PRINTER_CHANGE_SET_FORM ( 0x00020000 )
+#define PRINTER_CHANGE_DELETE_FORM ( 0x00040000 )
+#define PRINTER_CHANGE_ADD_PORT ( 0x00100000 )
+#define PRINTER_CHANGE_CONFIGURE_PORT ( 0x00200000 )
+#define PRINTER_CHANGE_DELETE_PORT ( 0x00400000 )
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR ( 0x01000000 )
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR ( 0x04000000 )
+#define PRINTER_CHANGE_ADD_PRINTER_DRIVER ( 0x10000000 )
+#define PRINTER_CHANGE_SET_PRINTER_DRIVER ( 0x20000000 )
+#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER ( 0x40000000 )
+#define PRINTER_CHANGE_TIMEOUT ( 0x80000000 )
+
enum spoolss_Field
#ifndef USE_UINT_ENUMS
{
#define PRINTER_ACCESS_USE ( 0x00000008 )
#define JOB_ACCESS_ADMINISTER ( 0x00000010 )
+/* bitmap spoolss_DeleteDriverFlags */
+#define DPD_DELETE_UNUSED_FILES ( 0x00000001 )
+#define DPD_DELETE_SPECIFIC_VERSION ( 0x00000002 )
+#define DPD_DELETE_ALL_FILES ( 0x00000004 )
+
struct _spoolss_EnumPrinters {
struct {
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_PrinterInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_JobInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_DriverInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct spoolss_DeletePrinterDriver {
struct {
- struct policy_handle *handle;/* [ref] */
const char *server;/* [unique,charset(UTF16)] */
const char *architecture;/* [charset(UTF16)] */
const char *driver;/* [charset(UTF16)] */
struct spoolss_AddPrintProcessor {
+ struct {
+ const char *server;/* [unique,charset(UTF16)] */
+ const char *architecture;/* [charset(UTF16)] */
+ const char *path_name;/* [charset(UTF16)] */
+ const char *print_processor_name;/* [charset(UTF16)] */
+ } in;
+
struct {
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_PrintProcessorInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
} in;
struct {
- enum spoolss_PrinterDataType type;
+ enum spoolss_PrinterDataType *type;/* [ref] */
DATA_BLOB data;
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
} in;
struct {
- enum spoolss_PrinterDataType type;
- union spoolss_PrinterData data;/* [subcontext_size(offered),subcontext(4),switch_is(type)] */
- uint32_t needed;
+ enum spoolss_PrinterDataType *type;/* [ref] */
+ union spoolss_PrinterData data;/* [subcontext_size(offered),subcontext(4),switch_is(*type)] */
+ uint32_t *needed;/* [ref] */
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_FormInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_PortInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
DATA_BLOB *info;/* [unique] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct {
union spoolss_MonitorInfo *info;/* [unique,switch_is(level),size_is(count)] */
- uint32_t needed;
+ uint32_t *needed;/* [ref] */
uint32_t count;
WERROR result;
} out;
struct spoolss_RouterReplyPrinter {
+ struct {
+ struct policy_handle *handle;/* [ref] */
+ uint32_t flags;
+ uint32_t bufsize;/* [range(0,512)] */
+ uint8_t *buffer;/* [unique,size_is(bufsize)] */
+ } in;
+
struct {
WERROR result;
} out;
struct spoolss_DeletePrinterKey {
+ struct {
+ struct policy_handle *handle;/* [ref] */
+ const char *key_name;/* [charset(UTF16)] */
+ } in;
+
struct {
WERROR result;
} out;
struct spoolss_DeletePrinterDriverEx {
+ struct {
+ const char *server;/* [unique,charset(UTF16)] */
+ const char *architecture;/* [charset(UTF16)] */
+ const char *driver;/* [charset(UTF16)] */
+ uint32_t delete_flags;
+ uint32_t version;
+ } in;
+
struct {
WERROR result;
} out;