📄 spoolss.idl
字号:
} spoolss_DriverInfo6; typedef [nodiscriminant,relative_base,public] union { [case(1)] spoolss_DriverInfo1 info1; [case(2)] spoolss_DriverInfo2 info2; [case(3)] spoolss_DriverInfo3 info3; [case(4)] spoolss_DriverInfo4 info4; [case(5)] spoolss_DriverInfo5 info5; [case(6)] spoolss_DriverInfo6 info6; [default]; } spoolss_DriverInfo; /******************/ /* Function: 0x0a */ [public,noopnum,noprint] WERROR _spoolss_EnumPrinterDrivers( [in,unique] [string,charset(UTF16)] uint16 *server, [in,unique] [string,charset(UTF16)] uint16 *environment, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique] DATA_BLOB *info, [out] uint32 needed, [out] uint32 count ); [public,noopnum,noprint] void __spoolss_EnumPrinterDrivers( [in] uint32 level, [in] uint32 count, [out,switch_is(level)] spoolss_DriverInfo info[count] ); [nopull,nopush] WERROR spoolss_EnumPrinterDrivers( [in,unique] [string,charset(UTF16)] uint16 *server, [in,unique] [string,charset(UTF16)] uint16 *environment, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,switch_is(level),size_is(count)] spoolss_DriverInfo *info, [out] uint32 needed, [out] uint32 count ); /******************/ /* Function: 0x0b */ [todo] WERROR spoolss_GetPrinterDriver( ); /******************/ /* Function: 0x0c */ typedef struct { nstring directory_name; } spoolss_DriverDirectoryInfo1; /* NOTE: it's seems that w2k3 completly ignores the level in its server code */ typedef [nodiscriminant,relative_base,gensize,public] union { [case(1)] spoolss_DriverDirectoryInfo1 info1; [default] spoolss_DriverDirectoryInfo1 info1; } spoolss_DriverDirectoryInfo; [public] WERROR spoolss_GetPrinterDriverDirectory( [in,unique] [string,charset(UTF16)] uint16 *server, [in,unique] [string,charset(UTF16)] uint16 *environment, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_DriverDirectoryInfo *info, [out] uint32 needed ); /******************/ /* Function: 0x0d */ WERROR spoolss_DeletePrinterDriver( [in,ref] policy_handle *handle, [in,unique] [string,charset(UTF16)] uint16 *server, [in] [string,charset(UTF16)] uint16 architecture[], [in] [string,charset(UTF16)] uint16 driver[] ); /******************/ /* Function: 0x0e */ [todo] WERROR spoolss_AddPrintProcessor( ); /******************/ /* Function: 0x0f */ typedef struct { [relative] nstring *print_processor_name; } spoolss_PrintProcessorInfo1; typedef [nodiscriminant,relative_base,public] union { [case(1)] spoolss_PrintProcessorInfo1 info1; [default]; } spoolss_PrintProcessorInfo; [public,noopnum,noprint] WERROR _spoolss_EnumPrintProcessors( [in,unique] [string,charset(UTF16)] uint16 *servername, [in,unique] [string,charset(UTF16)] uint16 *environment, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique] DATA_BLOB *info, [out] uint32 needed, [out] uint32 count ); [public,noopnum,noprint] void __spoolss_EnumPrintProcessors( [in] uint32 level, [in] uint32 count, [out,switch_is(level)] spoolss_PrintProcessorInfo info[count] ); [nopull,nopush] WERROR spoolss_EnumPrintProcessors( [in,unique] [string,charset(UTF16)] uint16 *servername, [in,unique] [string,charset(UTF16)] uint16 *environment, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,switch_is(level),size_is(count)] spoolss_PrintProcessorInfo *info, [out] uint32 needed, [out] uint32 count ); /******************/ /* Function: 0x10 */ [todo] WERROR spoolss_GetPrintProcessorDirectory( ); /******************/ /* Function: 0x11 */ typedef struct { [string,charset(UTF16)] uint16 *document_name; [string,charset(UTF16)] uint16 *output_file; [string,charset(UTF16)] uint16 *datatype; } spoolss_DocumentInfo1; typedef [switch_type(uint32)] union { [case(1)] spoolss_DocumentInfo1 *info1; [case(2)]; /* TODO */ [case(3)]; /* TODO */ [default]; } spoolss_DocumentInfo; WERROR spoolss_StartDocPrinter( [in,ref] policy_handle *handle, [in] uint32 level, [in,switch_is(level)] spoolss_DocumentInfo info, [out] uint32 job_id ); /******************/ /* Function: 0x12 */ WERROR spoolss_StartPagePrinter( [in,ref] policy_handle *handle ); /******************/ /* Function: 0x13 */ WERROR spoolss_WritePrinter( [in,ref] policy_handle *handle, [in] DATA_BLOB data, [in,value(r->in.data.length)] uint32 _data_size, [out] uint32 num_written ); /******************/ /* Function: 0x14 */ WERROR spoolss_EndPagePrinter( [in,ref] policy_handle *handle ); /******************/ /* Function: 0x15 */ WERROR spoolss_AbortPrinter( [in,ref] policy_handle *handle ); /******************/ /* Function: 0x16 */ WERROR spoolss_ReadPrinter( [in,ref] policy_handle *handle, [in] uint32 data_size, [out] DATA_BLOB data, [out,value(r->out.data.length)] uint32 _data_size ); /******************/ /* Function: 0x17 */ WERROR spoolss_EndDocPrinter( [in,ref] policy_handle *handle ); /******************/ /* Function: 0x18 */ [todo] WERROR spoolss_AddJob( ); /******************/ /* Function: 0x19 */ [todo] WERROR spoolss_ScheduleJob( ); /******************/ /* Function: 0x1a */ const string SPOOLSS_ARCHITECTURE_NT_X86 = "Windows NT x86"; typedef [public,gensize] struct { [value(ndr_size_spoolss_OSVersion(r,ndr->flags))] uint32 _ndr_size; uint32 major; uint32 minor; uint32 build; [value(2)] uint32 unknown; [subcontext(0),subcontext_size(256)] nstring extra_string; } spoolss_OSVersion; typedef [public,gensize] struct { [value(ndr_size_spoolss_OSVersionEx(r,ndr->flags))] uint32 _ndr_size; uint32 major; uint32 minor; uint32 build; [value(2)] uint32 unknown1; [subcontext(0),subcontext_size(256)] nstring extra_string; uint32 unknown2;/* service pack number? I saw 0 from w2k3 and 1 from winxp sp1*/ uint32 unknown3;/* hmm? w2k3: 131346(0x20112) winxp sp1: 503382272 0x1E010100 */ } spoolss_OSVersionEx; typedef [v1_enum] enum { SPOOLSS_PRINTER_DATA_TYPE_NULL = 0, SPOOLSS_PRINTER_DATA_TYPE_STRING = 1, SPOOLSS_PRINTER_DATA_TYPE_BINARY = 3, SPOOLSS_PRINTER_DATA_TYPE_UINT32 = 4, SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY = 7 } spoolss_PrinterDataType; typedef [nodiscriminant,public,gensize] union { [case(SPOOLSS_PRINTER_DATA_TYPE_NULL)]; [case(SPOOLSS_PRINTER_DATA_TYPE_STRING)] nstring string; [case(SPOOLSS_PRINTER_DATA_TYPE_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary; [case(SPOOLSS_PRINTER_DATA_TYPE_UINT32)] uint32 value; [case(SPOOLSS_PRINTER_DATA_TYPE_STRING_ARRAY)] nstring_array string_array; [default,flag(NDR_REMAINING)] DATA_BLOB data; } spoolss_PrinterData; [noopnum,noprint,public] WERROR _spoolss_GetPrinterData( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 value_name[], [in] uint32 offered, [out] spoolss_PrinterDataType type, [out] DATA_BLOB data, [out] uint32 needed ); [noopnum,noprint,public] void __spoolss_GetPrinterData( [in] spoolss_PrinterDataType type, [out,switch_is(type)] spoolss_PrinterData data ); [nopull,nopush,public] WERROR spoolss_GetPrinterData( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 value_name[], [in] uint32 offered, [out] spoolss_PrinterDataType type, [out,subcontext(4),subcontext_size(offered),switch_is(type)] spoolss_PrinterData data, [out] uint32 needed ); /******************/ /* Function: 0x1b */ [noopnum,nopull,noprint,public] WERROR _spoolss_SetPrinterData( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 value_name[], [in] spoolss_PrinterDataType type, [in] DATA_BLOB data, [in] uint32 _offered ); [noopnum,nopull,noprint,public] void __spoolss_SetPrinterData( [in] spoolss_PrinterDataType type, [out,switch_is(type)] spoolss_PrinterData data ); [nopush] WERROR spoolss_SetPrinterData( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 value_name[], [in] spoolss_PrinterDataType type, [in,subcontext(4),switch_is(type)] spoolss_PrinterData data, [in,value(ndr_size_spoolss_PrinterData(&data,type,flags))] uint32 _offered ); /******************/ /* Function: 0x1c */ [todo] WERROR spoolss_WaitForPrinterChange( ); /******************/ /* Function: 0x1d */ [public] WERROR spoolss_ClosePrinter( [in,out,ref] policy_handle *handle ); /******************/ /* Function: 0x1e */ typedef [v1_enum] enum { SPOOLSS_FORM_USER = 0, SPOOLSS_FORM_BUILTIN = 1, SPOOLSS_FORM_PRINTER = 2 } spoolss_FormFlags; typedef struct { uint32 width; uint32 height; } spoolss_FormSize; typedef struct { uint32 left; uint32 top; uint32 right; uint32 bottom; } spoolss_FormArea; typedef struct { spoolss_FormFlags flags; [relative] nstring *form_name; spoolss_FormSize size; spoolss_FormArea area; } spoolss_FormInfo1; typedef [nodiscriminant,relative_base,public,gensize] union { [case(1)] spoolss_FormInfo1 info1; [default]; } spoolss_FormInfo; typedef struct { spoolss_FormFlags flags; [string,charset(UTF16)] uint16 *form_name; spoolss_FormSize size; spoolss_FormArea area; } spoolss_AddFormInfo1; typedef [switch_type(uint32)] union { [case(1)] spoolss_AddFormInfo1 *info1; } spoolss_AddFormInfo; WERROR spoolss_AddForm( [in,ref] policy_handle *handle, [in] uint32 level, [in,switch_is(level)] spoolss_AddFormInfo info ); /******************/ /* Function: 0x1f */ WERROR spoolss_DeleteForm( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 form_name[] ); /******************/ /* Function: 0x20 */ WERROR spoolss_GetForm( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 form_name[], [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,subcontext(4),subcontext_size(offered),switch_is(level)] spoolss_FormInfo *info, [out] uint32 needed ); /******************/ /* Function: 0x21 */ WERROR spoolss_SetForm( [in,ref] policy_handle *handle, [in] [string,charset(UTF16)] uint16 form_name[], [in] uint32 level, [in,switch_is(level)] spoolss_AddFormInfo info ); /******************/ /* Function: 0x22 */ [public,noopnum,noprint] WERROR _spoolss_EnumForms( [in,ref] policy_handle *handle, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique] DATA_BLOB *info, [out] uint32 needed, [out] uint32 count ); [public,noopnum,noprint] void __spoolss_EnumForms( [in] uint32 level, [in] uint32 count, [out,switch_is(level)] spoolss_FormInfo info[count] ); [nopull,nopush] WERROR spoolss_EnumForms( [in,ref] policy_handle *handle, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,switch_is(level),size_is(count)] spoolss_FormInfo *info, [out] uint32 needed, [out] uint32 count ); typedef struct { [relative] nstring *port_name; } spoolss_PortInfo1; typedef bitmap { SPOOLSS_PORT_TYPE_WRITE = 0x00000001, SPOOLSS_PORT_TYPE_READ = 0x00000002, SPOOLSS_PORT_TYPE_REDIRECTED = 0x00000004, SPOOLSS_PORT_TYPE_NET_ATTACHED = 0x00000008 } spoolss_PortType; typedef struct { [relative] nstring *port_name; [relative] nstring *monitor_name; [relative] nstring *description; spoolss_PortType port_type; uint32 reserved; } spoolss_PortInfo2; typedef [nodiscriminant,relative_base,public] union { [case(1)] spoolss_PortInfo1 info1; [case(2)] spoolss_PortInfo2 info2; [case(3)]; /* TODO */ [default]; } spoolss_PortInfo; /******************/ /* Function: 0x23 */ [public,noopnum,noprint] WERROR _spoolss_EnumPorts( [in,unique] [string,charset(UTF16)] uint16 *servername, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique] DATA_BLOB *info, [out] uint32 needed, [out] uint32 count ); [public,noopnum,noprint] void __spoolss_EnumPorts( [in] uint32 level, [in] uint32 count, [out,switch_is(level)] spoolss_PortInfo info[count] ); [nopull,nopush] WERROR spoolss_EnumPorts( [in,unique] [string,charset(UTF16)] uint16 *servername, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,switch_is(level),size_is(count)] spoolss_PortInfo *info, [out] uint32 needed, [out] uint32 count ); /******************/ /* Function: 0x24 */ typedef struct { [relative] nstring *monitor_name; } spoolss_MonitorInfo1; typedef struct { [relative] nstring *monitor_name; [relative] nstring *environment; [relative] nstring *dll_name; } spoolss_MonitorInfo2; typedef [nodiscriminant,relative_base,public] union { [case(1)] spoolss_MonitorInfo1 info1; [case(2)] spoolss_MonitorInfo2 info2; [default]; } spoolss_MonitorInfo; [public,noopnum,noprint] WERROR _spoolss_EnumMonitors( [in,unique] [string,charset(UTF16)] uint16 *servername, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique] DATA_BLOB *info, [out] uint32 needed, [out] uint32 count ); [public,noopnum,noprint] void __spoolss_EnumMonitors( [in] uint32 level, [in] uint32 count, [out,switch_is(level)] spoolss_MonitorInfo info[count] ); [nopull,nopush] WERROR spoolss_EnumMonitors( [in,unique] [string,charset(UTF16)] uint16 *servername, [in] uint32 level, [in,unique] DATA_BLOB *buffer, [in] uint32 offered, [out,unique,switch_is(level),size_is(count)] spoolss_MonitorInfo *info, [out] uint32 needed, [out] uint32 count ); /******************/ /* Function: 0x25 */ WERROR spoolss_AddPort( [in,unique] [string,charset(UTF16)] uint16 *server_name, [in] uint32 unknown, [in] [string,charset(UTF16)] uint16 monitor_name[] ); /******************/ /* Function: 0x26 */ [todo] WERROR spoolss_ConfigurePort( ); /******************/ /* Function: 0x27 */ [todo] WERROR spoolss_DeletePort( ); /******************/ /* Function: 0x28 */ [todo] WERROR spoolss_CreatePrinterIC( ); /******************/ /* Function: 0x29 */ [todo] WERROR spoolss_PlayGDIScriptOnPrinterIC( ); /******************/ /* Function: 0x2a */ [todo] WERROR spoolss_DeletePrinterIC( ); /******************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -