⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpc_spoolss.h

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/*    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 + -