📄 rpc_spoolss.h
字号:
/* Unix SMB/Netbios implementation. Copyright (C) Andrew Tridgell 1992-2000, Copyright (C) Luke Kenneth Casson Leighton 1996-2000, Copyright (C) Jean Francois Micouleau 1998-2000. Copyright (C) Gerald Carter 2001-2005. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifndef _RPC_SPOOLSS_H /* _RPC_SPOOLSS_H */#define _RPC_SPOOLSS_H/* spoolss pipe: this are the calls which are not implemented ...#define SPOOLSS_GETPRINTERDRIVER 0x0b#define SPOOLSS_READPRINTER 0x16#define SPOOLSS_WAITFORPRINTERCHANGE 0x1c#define SPOOLSS_ADDPORT 0x25#define SPOOLSS_CONFIGUREPORT 0x26#define SPOOLSS_DELETEPORT 0x27#define SPOOLSS_CREATEPRINTERIC 0x28#define SPOOLSS_PLAYGDISCRIPTONPRINTERIC 0x29#define SPOOLSS_DELETEPRINTERIC 0x2a#define SPOOLSS_ADDPRINTERCONNECTION 0x2b#define SPOOLSS_DELETEPRINTERCONNECTION 0x2c#define SPOOLSS_PRINTERMESSAGEBOX 0x2d#define SPOOLSS_ADDMONITOR 0x2e#define SPOOLSS_DELETEMONITOR 0x2f#define SPOOLSS_DELETEPRINTPROCESSOR 0x30#define SPOOLSS_ADDPRINTPROVIDOR 0x31#define SPOOLSS_DELETEPRINTPROVIDOR 0x32#define SPOOLSS_FINDFIRSTPRINTERCHANGENOTIFICATION 0x36#define SPOOLSS_FINDNEXTPRINTERCHANGENOTIFICATION 0x37#define SPOOLSS_ROUTERFINDFIRSTPRINTERNOTIFICATIONOLD 0x39#define SPOOLSS_ADDPORTEX 0x3d#define SPOOLSS_REMOTEFINDFIRSTPRINTERCHANGENOTIFICATION0x3e#define SPOOLSS_SPOOLERINIT 0x3f#define SPOOLSS_RESETPRINTEREX 0x40*//* those are implemented */#define SPOOLSS_ENUMPRINTERS 0x00#define SPOOLSS_OPENPRINTER 0x01#define SPOOLSS_SETJOB 0x02#define SPOOLSS_GETJOB 0x03#define SPOOLSS_ENUMJOBS 0x04#define SPOOLSS_ADDPRINTER 0x05#define SPOOLSS_DELETEPRINTER 0x06#define SPOOLSS_SETPRINTER 0x07#define SPOOLSS_GETPRINTER 0x08#define SPOOLSS_ADDPRINTERDRIVER 0x09#define SPOOLSS_ENUMPRINTERDRIVERS 0x0a#define SPOOLSS_GETPRINTERDRIVERDIRECTORY 0x0c#define SPOOLSS_DELETEPRINTERDRIVER 0x0d#define SPOOLSS_ADDPRINTPROCESSOR 0x0e#define SPOOLSS_ENUMPRINTPROCESSORS 0x0f#define SPOOLSS_GETPRINTPROCESSORDIRECTORY 0x10#define SPOOLSS_STARTDOCPRINTER 0x11#define SPOOLSS_STARTPAGEPRINTER 0x12#define SPOOLSS_WRITEPRINTER 0x13#define SPOOLSS_ENDPAGEPRINTER 0x14#define SPOOLSS_ABORTPRINTER 0x15#define SPOOLSS_ENDDOCPRINTER 0x17#define SPOOLSS_ADDJOB 0x18#define SPOOLSS_SCHEDULEJOB 0x19#define SPOOLSS_GETPRINTERDATA 0x1a#define SPOOLSS_SETPRINTERDATA 0x1b#define SPOOLSS_CLOSEPRINTER 0x1d#define SPOOLSS_ADDFORM 0x1e#define SPOOLSS_DELETEFORM 0x1f#define SPOOLSS_GETFORM 0x20#define SPOOLSS_SETFORM 0x21#define SPOOLSS_ENUMFORMS 0x22#define SPOOLSS_ENUMPORTS 0x23#define SPOOLSS_ENUMMONITORS 0x24#define SPOOLSS_ENUMPRINTPROCDATATYPES 0x33#define SPOOLSS_RESETPRINTER 0x34#define SPOOLSS_GETPRINTERDRIVER2 0x35#define SPOOLSS_FCPN 0x38 /* FindClosePrinterNotify */#define SPOOLSS_REPLYOPENPRINTER 0x3a#define SPOOLSS_ROUTERREPLYPRINTER 0x3b#define SPOOLSS_REPLYCLOSEPRINTER 0x3c#define SPOOLSS_RFFPCNEX 0x41 /* RemoteFindFirstPrinterChangeNotifyEx */#define SPOOLSS_RRPCN 0x42 /* RouteRefreshPrinterChangeNotification */#define SPOOLSS_RFNPCNEX 0x43 /* RemoteFindNextPrinterChangeNotifyEx */#define SPOOLSS_OPENPRINTEREX 0x45#define SPOOLSS_ADDPRINTEREX 0x46#define SPOOLSS_ENUMPRINTERDATA 0x48#define SPOOLSS_DELETEPRINTERDATA 0x49#define SPOOLSS_SETPRINTERDATAEX 0x4d#define SPOOLSS_GETPRINTERDATAEX 0x4e#define SPOOLSS_ENUMPRINTERDATAEX 0x4f#define SPOOLSS_ENUMPRINTERKEY 0x50#define SPOOLSS_DELETEPRINTERDATAEX 0x51#define SPOOLSS_DELETEPRINTERKEY 0x52#define SPOOLSS_DELETEPRINTERDRIVEREX 0x54#define SPOOLSS_ADDPRINTERDRIVEREX 0x59#define PRINTER_CONTROL_UNPAUSE 0x00000000#define PRINTER_CONTROL_PAUSE 0x00000001#define PRINTER_CONTROL_RESUME 0x00000002#define PRINTER_CONTROL_PURGE 0x00000003#define PRINTER_CONTROL_SET_STATUS 0x00000004#define PRINTER_STATUS_OK 0x00000000#define PRINTER_STATUS_PAUSED 0x00000001#define PRINTER_STATUS_ERROR 0x00000002#define PRINTER_STATUS_PENDING_DELETION 0x00000004#define PRINTER_STATUS_PAPER_JAM 0x00000008#define PRINTER_STATUS_PAPER_OUT 0x00000010#define PRINTER_STATUS_MANUAL_FEED 0x00000020#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040#define PRINTER_STATUS_OFFLINE 0x00000080#define PRINTER_STATUS_IO_ACTIVE 0x00000100#define PRINTER_STATUS_BUSY 0x00000200#define PRINTER_STATUS_PRINTING 0x00000400#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000#define PRINTER_STATUS_WAITING 0x00002000#define PRINTER_STATUS_PROCESSING 0x00004000#define PRINTER_STATUS_INITIALIZING 0x00008000#define PRINTER_STATUS_WARMING_UP 0x00010000#define PRINTER_STATUS_TONER_LOW 0x00020000#define PRINTER_STATUS_NO_TONER 0x00040000#define PRINTER_STATUS_PAGE_PUNT 0x00080000#define PRINTER_STATUS_USER_INTERVENTION 0x00100000#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000#define PRINTER_STATUS_DOOR_OPEN 0x00400000#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000#define PRINTER_STATUS_POWER_SAVE 0x01000000#define SERVER_ACCESS_ADMINISTER 0x00000001#define SERVER_ACCESS_ENUMERATE 0x00000002#define PRINTER_ACCESS_ADMINISTER 0x00000004#define PRINTER_ACCESS_USE 0x00000008#define JOB_ACCESS_ADMINISTER 0x00000010/* JOB status codes. */#define JOB_STATUS_QUEUED 0x0000#define JOB_STATUS_PAUSED 0x0001#define JOB_STATUS_ERROR 0x0002#define JOB_STATUS_DELETING 0x0004#define JOB_STATUS_SPOOLING 0x0008#define JOB_STATUS_PRINTING 0x0010#define JOB_STATUS_OFFLINE 0x0020#define JOB_STATUS_PAPEROUT 0x0040#define JOB_STATUS_PRINTED 0x0080#define JOB_STATUS_DELETED 0x0100#define JOB_STATUS_BLOCKED 0x0200#define JOB_STATUS_USER_INTERVENTION 0x0400/* Access rights for print servers */#define SERVER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE#define SERVER_READ STANDARD_RIGHTS_READ_ACCESS|SERVER_ACCESS_ENUMERATE#define SERVER_WRITE STANDARD_RIGHTS_WRITE_ACCESS|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE#define SERVER_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|SERVER_ACCESS_ENUMERATE/* Access rights for printers */#define PRINTER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE#define PRINTER_READ STANDARD_RIGHTS_READ_ACCESS|PRINTER_ACCESS_USE#define PRINTER_WRITE STANDARD_RIGHTS_WRITE_ACCESS|PRINTER_ACCESS_USE#define PRINTER_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|PRINTER_ACCESS_USE/* Access rights for jobs */#define JOB_ALL_ACCESS STANDARD_RIGHTS_REQUIRED_ACCESS|JOB_ACCESS_ADMINISTER#define JOB_READ STANDARD_RIGHTS_READ_ACCESS|JOB_ACCESS_ADMINISTER#define JOB_WRITE STANDARD_RIGHTS_WRITE_ACCESS|JOB_ACCESS_ADMINISTER#define JOB_EXECUTE STANDARD_RIGHTS_EXECUTE_ACCESS|JOB_ACCESS_ADMINISTER/* ACE masks for the various print permissions */#define PRINTER_ACE_FULL_CONTROL (GENERIC_ALL_ACCESS|PRINTER_ALL_ACCESS)#define PRINTER_ACE_MANAGE_DOCUMENTS (GENERIC_ALL_ACCESS|READ_CONTROL_ACCESS)#define PRINTER_ACE_PRINT (GENERIC_EXECUTE_ACCESS|READ_CONTROL_ACCESS|PRINTER_ACCESS_USE)/* Notify field types */#define NOTIFY_ONE_VALUE 1 /* Notify data is stored in value1 */#define NOTIFY_TWO_VALUE 2 /* Notify data is stored in value2 */#define NOTIFY_POINTER 3 /* Data is a pointer to a buffer */#define NOTIFY_STRING 4 /* Data is a pointer to a buffer w/length */#define NOTIFY_SECDESC 5 /* Data is a security descriptor */#define PRINTER_NOTIFY_TYPE 0x00#define JOB_NOTIFY_TYPE 0x01#define PRINT_TABLE_END 0xFF#define MAX_PRINTER_NOTIFY 26#define MAX_JOB_NOTIFY 24#define MAX_NOTIFY_TYPE_FOR_NOW 26#define PRINTER_NOTIFY_SERVER_NAME 0x00#define PRINTER_NOTIFY_PRINTER_NAME 0x01#define PRINTER_NOTIFY_SHARE_NAME 0x02#define PRINTER_NOTIFY_PORT_NAME 0x03#define PRINTER_NOTIFY_DRIVER_NAME 0x04#define PRINTER_NOTIFY_COMMENT 0x05#define PRINTER_NOTIFY_LOCATION 0x06#define PRINTER_NOTIFY_DEVMODE 0x07#define PRINTER_NOTIFY_SEPFILE 0x08#define PRINTER_NOTIFY_PRINT_PROCESSOR 0x09#define PRINTER_NOTIFY_PARAMETERS 0x0A#define PRINTER_NOTIFY_DATATYPE 0x0B#define PRINTER_NOTIFY_SECURITY_DESCRIPTOR 0x0C#define PRINTER_NOTIFY_ATTRIBUTES 0x0D#define PRINTER_NOTIFY_PRIORITY 0x0E#define PRINTER_NOTIFY_DEFAULT_PRIORITY 0x0F#define PRINTER_NOTIFY_START_TIME 0x10#define PRINTER_NOTIFY_UNTIL_TIME 0x11#define PRINTER_NOTIFY_STATUS 0x12#define PRINTER_NOTIFY_STATUS_STRING 0x13#define PRINTER_NOTIFY_CJOBS 0x14#define PRINTER_NOTIFY_AVERAGE_PPM 0x15#define PRINTER_NOTIFY_TOTAL_PAGES 0x16#define PRINTER_NOTIFY_PAGES_PRINTED 0x17#define PRINTER_NOTIFY_TOTAL_BYTES 0x18#define PRINTER_NOTIFY_BYTES_PRINTED 0x19#define JOB_NOTIFY_PRINTER_NAME 0x00#define JOB_NOTIFY_MACHINE_NAME 0x01#define JOB_NOTIFY_PORT_NAME 0x02#define JOB_NOTIFY_USER_NAME 0x03#define JOB_NOTIFY_NOTIFY_NAME 0x04#define JOB_NOTIFY_DATATYPE 0x05#define JOB_NOTIFY_PRINT_PROCESSOR 0x06#define JOB_NOTIFY_PARAMETERS 0x07#define JOB_NOTIFY_DRIVER_NAME 0x08#define JOB_NOTIFY_DEVMODE 0x09#define JOB_NOTIFY_STATUS 0x0A#define JOB_NOTIFY_STATUS_STRING 0x0B#define JOB_NOTIFY_SECURITY_DESCRIPTOR 0x0C#define JOB_NOTIFY_DOCUMENT 0x0D#define JOB_NOTIFY_PRIORITY 0x0E#define JOB_NOTIFY_POSITION 0x0F#define JOB_NOTIFY_SUBMITTED 0x10#define JOB_NOTIFY_START_TIME 0x11#define JOB_NOTIFY_UNTIL_TIME 0x12#define JOB_NOTIFY_TIME 0x13#define JOB_NOTIFY_TOTAL_PAGES 0x14#define JOB_NOTIFY_PAGES_PRINTED 0x15#define JOB_NOTIFY_TOTAL_BYTES 0x16#define JOB_NOTIFY_BYTES_PRINTED 0x17#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01#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_PRINTER (PRINTER_CHANGE_ADD_PRINTER | \ PRINTER_CHANGE_SET_PRINTER | \ PRINTER_CHANGE_DELETE_PRINTER | \ PRINTER_CHANGE_FAILED_CONNECTION_PRINTER )#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_JOB (PRINTER_CHANGE_ADD_JOB | \ PRINTER_CHANGE_SET_JOB | \ PRINTER_CHANGE_DELETE_JOB | \ PRINTER_CHANGE_WRITE_JOB )#define PRINTER_CHANGE_ADD_FORM 0x00010000#define PRINTER_CHANGE_SET_FORM 0x00020000#define PRINTER_CHANGE_DELETE_FORM 0x00040000#define PRINTER_CHANGE_FORM (PRINTER_CHANGE_ADD_FORM | \ PRINTER_CHANGE_SET_FORM | \ PRINTER_CHANGE_DELETE_FORM )#define PRINTER_CHANGE_ADD_PORT 0x00100000#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000#define PRINTER_CHANGE_DELETE_PORT 0x00400000#define PRINTER_CHANGE_PORT (PRINTER_CHANGE_ADD_PORT | \ PRINTER_CHANGE_CONFIGURE_PORT | \ PRINTER_CHANGE_DELETE_PORT )#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000#define PRINTER_CHANGE_PRINT_PROCESSOR (PRINTER_CHANGE_ADD_PRINT_PROCESSOR | \ PRINTER_CHANGE_DELETE_PRINT_PROCESSOR )#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000#define PRINTER_CHANGE_PRINTER_DRIVER (PRINTER_CHANGE_ADD_PRINTER_DRIVER | \ PRINTER_CHANGE_SET_PRINTER_DRIVER | \ PRINTER_CHANGE_DELETE_PRINTER_DRIVER )#define PRINTER_CHANGE_TIMEOUT 0x80000000#define PRINTER_CHANGE_ALL (PRINTER_CHANGE_JOB | \ PRINTER_CHANGE_FORM | \ PRINTER_CHANGE_PORT | \ PRINTER_CHANGE_PRINT_PROCESSOR | \ PRINTER_CHANGE_PRINTER_DRIVER )#define PRINTER_NOTIFY_INFO_DISCARDED 0x1/* * Set of macros for flagging what changed in the PRINTER_INFO_2 struct * when sending messages to other smbd's */#define PRINTER_MESSAGE_NULL 0x00000000#define PRINTER_MESSAGE_DRIVER 0x00000001#define PRINTER_MESSAGE_COMMENT 0x00000002#define PRINTER_MESSAGE_PRINTERNAME 0x00000004#define PRINTER_MESSAGE_LOCATION 0x00000008#define PRINTER_MESSAGE_DEVMODE 0x00000010 /* not curently supported */#define PRINTER_MESSAGE_SEPFILE 0x00000020#define PRINTER_MESSAGE_PRINTPROC 0x00000040#define PRINTER_MESSAGE_PARAMS 0x00000080#define PRINTER_MESSAGE_DATATYPE 0x00000100#define PRINTER_MESSAGE_SECDESC 0x00000200#define PRINTER_MESSAGE_CJOBS 0x00000400#define PRINTER_MESSAGE_PORT 0x00000800#define PRINTER_MESSAGE_SHARENAME 0x00001000#define PRINTER_MESSAGE_ATTRIBUTES 0x00002000typedef struct printer_message_info { uint32 low; /* PRINTER_CHANGE_XXX */ uint32 high; /* PRINTER_CHANGE_XXX */ fstring printer_name; uint32 flags; /* PRINTER_MESSAGE_XXX */}PRINTER_MESSAGE_INFO;/* * The printer attributes. * I #defined all of them (grabbed form MSDN) * I'm only using: * ( SHARED | NETWORK | RAW_ONLY ) * RAW_ONLY _MUST_ be present otherwise NT will send an EMF file */#define PRINTER_ATTRIBUTE_QUEUED 0x00000001#define PRINTER_ATTRIBUTE_DIRECT 0x00000002#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004#define PRINTER_ATTRIBUTE_SHARED 0x00000008#define PRINTER_ATTRIBUTE_NETWORK 0x00000010#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020#define PRINTER_ATTRIBUTE_LOCAL 0x00000040#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000#define PRINTER_ATTRIBUTE_PUBLISHED 0x00002000#define PRINTER_ATTRIBUTE_SAMBA (PRINTER_ATTRIBUTE_RAW_ONLY|\ PRINTER_ATTRIBUTE_SHARED|\ PRINTER_ATTRIBUTE_LOCAL)#define PRINTER_ATTRIBUTE_NOT_SAMBA (PRINTER_ATTRIBUTE_NETWORK)#define NO_PRIORITY 0#define MAX_PRIORITY 99#define MIN_PRIORITY 1#define DEF_PRIORITY 1/* the flags of the query */#define PRINTER_ENUM_DEFAULT 0x00000001#define PRINTER_ENUM_LOCAL 0x00000002#define PRINTER_ENUM_CONNECTIONS 0x00000004#define PRINTER_ENUM_FAVORITE 0x00000004#define PRINTER_ENUM_NAME 0x00000008#define PRINTER_ENUM_REMOTE 0x00000010#define PRINTER_ENUM_SHARED 0x00000020#define PRINTER_ENUM_NETWORK 0x00000040/* the flags of each printers */#define PRINTER_ENUM_UNKNOWN_8 0x00000008#define PRINTER_ENUM_EXPAND 0x00004000#define PRINTER_ENUM_CONTAINER 0x00008000#define PRINTER_ENUM_ICONMASK 0x00ff0000#define PRINTER_ENUM_ICON1 0x00010000#define PRINTER_ENUM_ICON2 0x00020000#define PRINTER_ENUM_ICON3 0x00040000#define PRINTER_ENUM_ICON4 0x00080000#define PRINTER_ENUM_ICON5 0x00100000#define PRINTER_ENUM_ICON6 0x00200000#define PRINTER_ENUM_ICON7 0x00400000#define PRINTER_ENUM_ICON8 0x00800000/* FLAGS for SPOOLSS_DELETEPRINTERDRIVEREX */#define DPD_DELETE_UNUSED_FILES 0x00000001#define DPD_DELETE_SPECIFIC_VERSION 0x00000002#define DPD_DELETE_ALL_FILES 0x00000004#define DRIVER_ANY_VERSION 0xffffffff#define DRIVER_MAX_VERSION 4/* FLAGS for SPOOLSS_ADDPRINTERDRIVEREX */#define APD_STRICT_UPGRADE 0x00000001#define APD_STRICT_DOWNGRADE 0x00000002#define APD_COPY_ALL_FILES 0x00000004#define APD_COPY_NEW_FILES 0x00000008/* this struct is undocumented *//* thanks to the ddk ... */typedef struct { uint32 size; /* length of user_name & client_name + 2? */ UNISTR2 *client_name; UNISTR2 *user_name; uint32 build; uint32 major; uint32 minor; uint32 processor;} SPOOL_USER_1;typedef struct { uint32 level; union { SPOOL_USER_1 *user1; } user;} SPOOL_USER_CTR;/* * various bits in the DEVICEMODE.fields member */#define DEVMODE_ORIENTATION 0x00000001#define DEVMODE_PAPERSIZE 0x00000002#define DEVMODE_PAPERLENGTH 0x00000004#define DEVMODE_PAPERWIDTH 0x00000008#define DEVMODE_SCALE 0x00000010#define DEVMODE_POSITION 0x00000020#define DEVMODE_NUP 0x00000040#define DEVMODE_COPIES 0x00000100#define DEVMODE_DEFAULTSOURCE 0x00000200#define DEVMODE_PRINTQUALITY 0x00000400#define DEVMODE_COLOR 0x00000800#define DEVMODE_DUPLEX 0x00001000#define DEVMODE_YRESOLUTION 0x00002000#define DEVMODE_TTOPTION 0x00004000#define DEVMODE_COLLATE 0x00008000#define DEVMODE_FORMNAME 0x00010000#define DEVMODE_LOGPIXELS 0x00020000#define DEVMODE_BITSPERPEL 0x00040000#define DEVMODE_PELSWIDTH 0x00080000#define DEVMODE_PELSHEIGHT 0x00100000#define DEVMODE_DISPLAYFLAGS 0x00200000#define DEVMODE_DISPLAYFREQUENCY 0x00400000#define DEVMODE_ICMMETHOD 0x00800000#define DEVMODE_ICMINTENT 0x01000000#define DEVMODE_MEDIATYPE 0x02000000#define DEVMODE_DITHERTYPE 0x04000000#define DEVMODE_PANNINGWIDTH 0x08000000#define DEVMODE_PANNINGHEIGHT 0x10000000/* * Devicemode structure */typedef struct devicemode{ UNISTR devicename; uint16 specversion; uint16 driverversion; uint16 size; uint16 driverextra; uint32 fields; uint16 orientation; uint16 papersize; uint16 paperlength; uint16 paperwidth; uint16 scale; uint16 copies; uint16 defaultsource; uint16 printquality; uint16 color; uint16 duplex; uint16 yresolution; uint16 ttoption; uint16 collate; UNISTR formname; uint16 logpixels; uint32 bitsperpel; uint32 pelswidth; uint32 pelsheight; uint32 displayflags; uint32 displayfrequency; uint32 icmmethod; uint32 icmintent; uint32 mediatype; uint32 dithertype; uint32 reserved1; uint32 reserved2; uint32 panningwidth; uint32 panningheight; uint8 *dev_private;}DEVICEMODE;typedef struct _devmode_cont{ uint32 size; uint32 devmode_ptr; DEVICEMODE *devmode;}DEVMODE_CTR;typedef struct _printer_default{ uint32 datatype_ptr; UNISTR2 datatype; DEVMODE_CTR devmode_cont; uint32 access_required;}PRINTER_DEFAULT;/********************************************/typedef struct { UNISTR2 *printername; PRINTER_DEFAULT printer_default;} SPOOL_Q_OPEN_PRINTER;typedef struct { POLICY_HND handle; /* handle used along all transactions (20*uint8) */ WERROR status;} SPOOL_R_OPEN_PRINTER;/********************************************/typedef struct { UNISTR2 *printername; PRINTER_DEFAULT printer_default; uint32 user_switch; SPOOL_USER_CTR user_ctr;} SPOOL_Q_OPEN_PRINTER_EX;typedef struct { POLICY_HND handle; /* handle used along all transactions (20*uint8) */ WERROR status;} SPOOL_R_OPEN_PRINTER_EX;/********************************************/typedef struct spool_notify_option_type{ uint16 type; uint16 reserved0; uint32 reserved1; uint32 reserved2; uint32 count; uint32 fields_ptr; uint32 count2; uint16 fields[MAX_NOTIFY_TYPE_FOR_NOW];}SPOOL_NOTIFY_OPTION_TYPE;typedef struct spool_notify_option_type_ctr{ uint32 count; SPOOL_NOTIFY_OPTION_TYPE *type;}SPOOL_NOTIFY_OPTION_TYPE_CTR;typedef struct s_header_type{ uint32 type; union { uint32 value; UNISTR string; } data;}HEADER_TYPE;typedef struct spool_q_getprinterdata{ POLICY_HND handle; UNISTR2 valuename; uint32 size;}SPOOL_Q_GETPRINTERDATA;typedef struct spool_r_getprinterdata{ uint32 type; uint32 size; uint8 *data; uint32 needed; WERROR status;}SPOOL_R_GETPRINTERDATA;typedef struct spool_q_deleteprinterdata{ POLICY_HND handle; UNISTR2 valuename;}SPOOL_Q_DELETEPRINTERDATA;typedef struct spool_r_deleteprinterdata{ WERROR status;}SPOOL_R_DELETEPRINTERDATA;typedef struct spool_q_closeprinter{ POLICY_HND handle;}SPOOL_Q_CLOSEPRINTER;typedef struct spool_r_closeprinter{ POLICY_HND handle; WERROR status;}SPOOL_R_CLOSEPRINTER;typedef struct spool_q_startpageprinter{ POLICY_HND handle;}SPOOL_Q_STARTPAGEPRINTER;typedef struct spool_r_startpageprinter{ WERROR status;}SPOOL_R_STARTPAGEPRINTER;typedef struct spool_q_endpageprinter{ POLICY_HND handle;}SPOOL_Q_ENDPAGEPRINTER;typedef struct spool_r_endpageprinter{ WERROR status;}SPOOL_R_ENDPAGEPRINTER;typedef struct spool_q_deleteprinterdriver{ uint32 server_ptr; UNISTR2 server; UNISTR2 arch; UNISTR2 driver;}SPOOL_Q_DELETEPRINTERDRIVER;typedef struct spool_r_deleteprinterdriver{ WERROR status;}SPOOL_R_DELETEPRINTERDRIVER;typedef struct spool_q_deleteprinterdriverex{ uint32 server_ptr; UNISTR2 server; UNISTR2 arch; UNISTR2 driver; uint32 delete_flags; uint32 version;}SPOOL_Q_DELETEPRINTERDRIVEREX;typedef struct spool_r_deleteprinterdriverex{ WERROR status;}SPOOL_R_DELETEPRINTERDRIVEREX;typedef struct spool_doc_info_1{ uint32 p_docname; uint32 p_outputfile; uint32 p_datatype; UNISTR2 docname; UNISTR2 outputfile; UNISTR2 datatype;}DOC_INFO_1;typedef struct spool_doc_info{ uint32 switch_value; DOC_INFO_1 doc_info_1;}DOC_INFO;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -