From 68ce448fbdbe9f7be3db6189110e46ce23aca18a Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 24 Feb 2005 14:05:52 +0000 Subject: r5537: - make use of bitmaps and enums - add and fix some PrinterInfo levels - add and fix some DriverInfo levels - fix EnumPrinterDriver torture test the curent RPC-SPOOLSS now passes on w2k3 metze (This used to be commit 14b88ca20dc64702f1c1b457a09b1f13b1964654) --- source4/librpc/idl/spoolss.idl | 174 +++++++++++++++++++++++++++++++++++------ 1 file changed, 152 insertions(+), 22 deletions(-) (limited to 'source4/librpc') diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl index ee33aa9eea..85c49566b0 100644 --- a/source4/librpc/idl/spoolss.idl +++ b/source4/librpc/idl/spoolss.idl @@ -93,14 +93,83 @@ uint8 private[driverextra]; } spoolss_DeviceMode; - typedef [public] struct { - uint32 flags; + typedef bitmap { + PRINTER_ENUM_DEFAULT = 0x00000001, + PRINTER_ENUM_LOCAL = 0x00000002, + PRINTER_ENUM_CONNECTIONS = 0x00000004, + PRINTER_ENUM_FAVORITE = 0x00000004, + PRINTER_ENUM_NAME = 0x00000008, + PRINTER_ENUM_REMOTE = 0x00000010, + PRINTER_ENUM_SHARED = 0x00000020, + PRINTER_ENUM_NETWORK = 0x00000040, + PRINTER_ENUM_EXPAND = 0x00004000, + PRINTER_ENUM_CONTAINER = 0x00008000, + PRINTER_ENUM_ICON1 = 0x00010000, + PRINTER_ENUM_ICON2 = 0x00020000, + PRINTER_ENUM_ICON3 = 0x00040000, + PRINTER_ENUM_ICON4 = 0x00080000, + PRINTER_ENUM_ICON5 = 0x00100000, + PRINTER_ENUM_ICON6 = 0x00200000, + PRINTER_ENUM_ICON7 = 0x00400000, + PRINTER_ENUM_ICON8 = 0x00800000, + PRINTER_ENUM_HIDE = 0x01000000 + } spoolss_EnumPrinterFlags; + + typedef struct { + spoolss_EnumPrinterFlags flags; [relative] nstring *name; [relative] nstring *description; [relative] nstring *comment; } spoolss_PrinterInfo1; - typedef [public] struct { + typedef bitmap { + PRINTER_ATTRIBUTE_QUEUED = 0x00000001, + PRINTER_ATTRIBUTE_DIRECT = 0x00000002, + PRINTER_ATTRIBUTE_DEFAULT = 0x00000004, + PRINTER_ATTRIBUTE_SHARED = 0x00000008, + PRINTER_ATTRIBUTE_NETWORK = 0x00000010, + PRINTER_ATTRIBUTE_HIDDEN = 0x00000020, + PRINTER_ATTRIBUTE_LOCAL = 0x00000040, + PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080, + PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100, + PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200, + PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400, + PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800, + PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000, + PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000, + PRINTER_ATTRIBUTE_FAX = 0x00004000, + PRINTER_ATTRIBUTE_TS = 0x00008000 + } spoolss_PrinterAttributes; + + typedef bitmap { + PRINTER_STATUS_PAUSED = 0x00000001, + PRINTER_STATUS_ERROR = 0x00000002, + PRINTER_STATUS_PENDING_DELETION = 0x00000004, + PRINTER_STATUS_PAPER_JAM = 0x00000008, + PRINTER_STATUS_PAPER_OUT = 0x00000010, + PRINTER_STATUS_MANUAL_FEED = 0x00000020, + PRINTER_STATUS_PAPER_PROBLEM = 0x00000040, + PRINTER_STATUS_OFFLINE = 0x00000080, + PRINTER_STATUS_IO_ACTIVE = 0x00000100, + PRINTER_STATUS_BUSY = 0x00000200, + PRINTER_STATUS_PRINTING = 0x00000400, + PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800, + PRINTER_STATUS_NOT_AVAILABLE = 0x00001000, + PRINTER_STATUS_WAITING = 0x00002000, + PRINTER_STATUS_PROCESSING = 0x00004000, + PRINTER_STATUS_INITIALIZING = 0x00008000, + PRINTER_STATUS_WARMING_UP = 0x00010000, + PRINTER_STATUS_TONER_LOW = 0x00020000, + PRINTER_STATUS_NO_TONER = 0x00040000, + PRINTER_STATUS_PAGE_PUNT = 0x00080000, + PRINTER_STATUS_USER_INTERVENTION= 0x00100000, + PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000, + PRINTER_STATUS_DOOR_OPEN = 0x00400000, + PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000, + PRINTER_STATUS_POWER_SAVE = 0x01000000 + } spoolss_PrinterStatus; + + typedef struct { [relative] nstring *servername; [relative] nstring *printername; [relative] nstring *sharename; @@ -114,12 +183,12 @@ [relative] nstring *datatype; [relative] nstring *parameters; [relative,subcontext(0)] security_descriptor *secdesc; - uint32 attributes; + spoolss_PrinterAttributes attributes; uint32 priority; uint32 defaultpriority; uint32 starttime; uint32 untiltime; - uint32 status; + spoolss_PrinterStatus status; uint32 cjobs; uint32 averageppm; } spoolss_PrinterInfo2; @@ -131,26 +200,38 @@ typedef struct { [relative] nstring *printername; [relative] nstring *servername; - uint32 attributes; + spoolss_PrinterAttributes attributes; } spoolss_PrinterInfo4; - typedef [public] struct { + typedef struct { [relative] nstring *printername; [relative] nstring *portname; - uint32 attributes; + spoolss_PrinterAttributes attributes; uint32 device_not_selected_timeout; uint32 transmission_retry_timeout; } spoolss_PrinterInfo5; typedef struct { - uint32 unknown; + spoolss_PrinterStatus status; } spoolss_PrinterInfo6; + typedef bitmap { + DSPRINT_PUBLISH = 0x00000001, + DSPRINT_UPDATE = 0x00000002, + DSPRINT_UNPUBLISH = 0x00000004, + DSPRINT_REPUBLISH = 0x00000008, + DSPRINT_PENDING = 0x80000000 + } spoolss_DsPrintAction; + typedef struct { [relative] nstring *guid; /* text form of printer guid */ - uint32 action; + spoolss_DsPrintAction action; } spoolss_PrinterInfo7; + typedef struct { + [relative] spoolss_DeviceMode *devmode; + } spoolss_DeviceModeInfo; + typedef [nodiscriminant,public] union { [case(0)] spoolss_PrinterInfo0 info0; [case(1)] spoolss_PrinterInfo1 info1; @@ -160,21 +241,14 @@ [case(5)] spoolss_PrinterInfo5 info5; [case(6)] spoolss_PrinterInfo6 info6; [case(7)] spoolss_PrinterInfo7 info7; + [case(8)] spoolss_DeviceModeInfo info8; + [case(9)] spoolss_DeviceModeInfo info9; } spoolss_PrinterInfo; - const int PRINTER_ENUM_DEFAULT = 0x00000001; - const int PRINTER_ENUM_LOCAL = 0x00000002; - const int PRINTER_ENUM_CONNECTIONS = 0x00000004; - const int PRINTER_ENUM_FAVORITE = 0x00000004; - const int PRINTER_ENUM_NAME = 0x00000008; - const int PRINTER_ENUM_REMOTE = 0x00000010; - const int PRINTER_ENUM_SHARED = 0x00000020; - const int PRINTER_ENUM_NETWORK = 0x00000040; - /******************/ /* Function: 0x00 */ [noprint,nopull,nopush] WERROR spoolss_EnumPrinters( - [in] uint32 flags, + [in] spoolss_EnumPrinterFlags flags, [in] unistr *server, [in] uint32 level, [in] DATA_BLOB *buffer, @@ -293,8 +367,15 @@ [relative] nstring *driver_name; } spoolss_DriverInfo1; + typedef [v1_enum] enum { + SPOOLSS_DRIVER_VERSION_9X = 0, + SPOOLSS_DRIVER_VERSION_NT35 = 1, + SPOOLSS_DRIVER_VERSION_NT4 = 2, + SPOOLSS_DRIVER_VERSION_200X = 3 + } spoolss_DriverOSVersion; + typedef struct { - uint32 version; + spoolss_DriverOSVersion version; [relative] nstring *driver_name; [relative] nstring *architecture; [relative] nstring *driver_path; @@ -303,7 +384,7 @@ } spoolss_DriverInfo2; typedef struct { - uint32 version; + spoolss_DriverOSVersion version; [relative] nstring *driver_name; [relative] nstring *architecture; [relative] nstring *driver_path; @@ -315,10 +396,59 @@ [relative] nstring *default_datatype; } spoolss_DriverInfo3; + typedef struct { + spoolss_DriverOSVersion version; + [relative] nstring *driver_name; + [relative] nstring *architecture; + [relative] nstring *driver_path; + [relative] nstring *data_file; + [relative] nstring *config_file; + [relative] nstring *help_file; + [relative] nstring *dependent_files; /* array */ + [relative] nstring *monitor_name; + [relative] nstring *default_datatype; + [relative] nstring *previous_names; /* array */ + } spoolss_DriverInfo4; + + typedef struct { + spoolss_DriverOSVersion version; + [relative] nstring *driver_name; + [relative] nstring *architecture; + [relative] nstring *driver_path; + [relative] nstring *data_file; + [relative] nstring *config_file; + uint32 driver_attributes; + uint32 config_version; + uint32 driver_version; + } spoolss_DriverInfo5; + + typedef struct { + spoolss_DriverOSVersion version; + [relative] nstring *driver_name; + [relative] nstring *architecture; + [relative] nstring *driver_path; + [relative] nstring *data_file; + [relative] nstring *config_file; + [relative] nstring *help_file; + [relative] nstring *dependent_files; /* array */ + [relative] nstring *monitor_name; + [relative] nstring *default_datatype; + [relative] nstring *previous_names; /* array */ + NTTIME driver_data; + hyper driver_version; + [relative] nstring *manufacturer_name; + [relative] nstring *manufacturer_url; + [relative] nstring *hardware_id; + [relative] nstring *provider; + } spoolss_DriverInfo6; + typedef [nodiscriminant,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; } spoolss_DriverInfo; /******************/ -- cgit