/* * winspool.h Win32 spooler functions * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #ifndef _WINSPOOL_ #define _WINSPOOL_ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #include #ifdef __cplusplus extern "C" { #endif /* Printer actions */ #define DSPRINT_PUBLISH 0x00000001L #define DSPRINT_UPDATE 0x00000002L #define DSPRINT_UNPUBLISH 0x00000004L #define DSPRINT_REPUBLISH 0x00000008L #define DSPRINT_PENDING 0x80000000L /* SetPrinter() commands */ #define PRINTER_CONTROL_PAUSE 1L #define PRINTER_CONTROL_RESUME 2L #define PRINTER_CONTROL_PURGE 3L #define PRINTER_CONTROL_SET_STATUS 4L /* Printer status flags */ #define PRINTER_STATUS_PAUSED 0x00000001L #define PRINTER_STATUS_ERROR 0x00000002L #define PRINTER_STATUS_PENDING_DELETION 0x00000004L #define PRINTER_STATUS_PAPER_JAM 0x00000008L #define PRINTER_STATUS_PAPER_OUT 0x00000010L #define PRINTER_STATUS_MANUAL_FEED 0x00000020L #define PRINTER_STATUS_PAPER_PROBLEM 0x00000040L #define PRINTER_STATUS_OFFLINE 0x00000080L #define PRINTER_STATUS_IO_ACTIVE 0x00000100L #define PRINTER_STATUS_BUSY 0x00000200L #define PRINTER_STATUS_PRINTING 0x00000400L #define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800L #define PRINTER_STATUS_NOT_AVAILABLE 0x00001000L #define PRINTER_STATUS_WAITING 0x00002000L #define PRINTER_STATUS_PROCESSING 0x00004000L #define PRINTER_STATUS_INITIALIZING 0x00008000L #define PRINTER_STATUS_WARMING_UP 0x00010000L #define PRINTER_STATUS_TONER_LOW 0x00020000L #define PRINTER_STATUS_NO_TONER 0x00040000L #define PRINTER_STATUS_PAGE_PUNT 0x00080000L #define PRINTER_STATUS_USER_INTERVENTION 0x00100000L #define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000L #define PRINTER_STATUS_DOOR_OPEN 0x00400000L #define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000L #define PRINTER_STATUS_POWER_SAVE 0x01000000L #define PRINTER_STATUS_SERVER_OFFLINE 0x02000000L #define PRINTER_STATUS_DRIVER_UPDATE_NEEDED 0x04000000L /* Printer attributes */ #define PRINTER_ATTRIBUTE_QUEUED 0x00000001L #define PRINTER_ATTRIBUTE_DIRECT 0x00000002L #define PRINTER_ATTRIBUTE_DEFAULT 0x00000004L #define PRINTER_ATTRIBUTE_SHARED 0x00000008L #define PRINTER_ATTRIBUTE_NETWORK 0x00000010L #define PRINTER_ATTRIBUTE_HIDDEN 0x00000020L #define PRINTER_ATTRIBUTE_LOCAL 0x00000040L #define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080L #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100L #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200L #define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400L #define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800L #define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000L #define PRINTER_ATTRIBUTE_PUBLISHED 0x00002000L #if (NTDDI_VERSION >= 0x05010000) #define PRINTER_ATTRIBUTE_FAX 0x00004000L #endif #if (NTDDI_VERSION >= 0x05020000) || (((NTDDI_VERSION & 0xFFFF0000L) == 0x05000000L) && \ ((NTDDI_VERSION & 0x0000FF00L) >= 0x00000400L)) #define PRINTER_ATTRIBUTE_TS 0x00008000L #endif #if (NTDDI_VERSION >= 0x06000000) #define PRINTER_ATTRIBUTE_PUSHED_USER 0x00020000L #define PRINTER_ATTRIBUTE_PUSHED_MACHINE 0x00040000L #define PRINTER_ATTRIBUTE_MACHINE 0x00080000L #define PRINTER_ATTRIBUTE_FRIENDLY_NAME 0x00100000L #define PRINTER_ATTRIBUTE_TS_GENERIC_DRIVER 0x00200000L #endif /* Job priority special values */ #define NO_PRIORITY 0L #define MAX_PRIORITY 99L #define MIN_PRIORITY 1L #define DEF_PRIORITY 1L /* SetJob() commands */ #define JOB_CONTROL_PAUSE 1L #define JOB_CONTROL_RESUME 2L #define JOB_CONTROL_CANCEL 3L #define JOB_CONTROL_RESTART 4L #define JOB_CONTROL_DELETE 5L #define JOB_CONTROL_SENT_TO_PRINTER 6L #define JOB_CONTROL_LAST_PAGE_EJECTED 7L #if (NTDDI_VERSION >= 0x06000000) #define JOB_CONTROL_RETAIN 8L #define JOB_CONTROL_RELEASE 9L #endif /* Job status flags */ #define JOB_STATUS_PAUSED 0x00000001L #define JOB_STATUS_ERROR 0x00000002L #define JOB_STATUS_DELETING 0x00000004L #define JOB_STATUS_SPOOLING 0x00000008L #define JOB_STATUS_PRINTING 0x00000010L #define JOB_STATUS_OFFLINE 0x00000020L #define JOB_STATUS_PAPEROUT 0x00000040L #define JOB_STATUS_PRINTED 0x00000080L #define JOB_STATUS_DELETED 0x00000100L #define JOB_STATUS_BLOCKED_DEVQ 0x00000200L #define JOB_STATUS_USER_INTERVENTION 0x00000400L #define JOB_STATUS_RESTART 0x00000800L #if (NTDDI_VERSION >= 0x05010000) #define JOB_STATUS_COMPLETE 0x00001000L #endif #if (NTDDI_VERSION >= 0x06000000) #define JOB_STATUS_RETAINED 0x00002000L #define JOB_STATUS_RENDERING_LOCALLY 0x00004000L #endif /* Job position special value */ #define JOB_POSITION_UNSPECIFIED 0L /* Printer driver attributes */ #define PRINTER_DRIVER_PACKAGE_AWARE 0x00000001L #define PRINTER_DRIVER_SANDBOX_ENABLED 0x00000004L /* Driver attribute flags */ #define DRIVER_KERNELMODE 0x00000001L #define DRIVER_USERMODE 0x00000002L /* DeletePrinterDriverEx() flags */ #define DPD_DELETE_UNUSED_FILES 0x00000001L #define DPD_DELETE_SPECIFIC_VERSION 0x00000002L #define DPD_DELETE_ALL_FILES 0x00000004L /* AddPrinterDriverEx() flags */ #define APD_STRICT_UPGRADE 0x00000001L #define APD_STRICT_DOWNGRADE 0x00000002L #define APD_COPY_ALL_FILES 0x00000004L #define APD_COPY_NEW_FILES 0x00000008L #if (NTDDI_VERSION >= 0x05010000) #define APD_COPY_FROM_DIRECTORY 0x00000010L #endif /* String types */ #if (NTDDI_VERSION >= 0x06000000) #define STRING_NONE 0x00000001L #define STRING_MUIDLL 0x00000002L #define STRING_LANGPAIR 0x00000004L #endif /* Maximum form keyword length */ #if (NTDDI_VERSION >= 0x06000000) #define MAX_FORM_KEYWORD_LENGTH 64 #endif /* Document information modes */ #define DI_CHANNEL 1L /* Document information flags */ #define DI_MEMORYMAP_WRITE 0x00000001L /* Form information flags */ #define FORM_USER 0x00000000L #define FORM_BUILTIN 0x00000001L #define FORM_PRINTER 0x00000002L /* Page order flags */ #if (NTDDI_VERSION >= 0x05010000) #define NORMAL_PRINT 0x00000000L #define REVERSE_PRINT 0x00000001L #endif /* Direction capabilities */ #if (NTDDI_VERSION >= 0x06000000) #define PPCAPS_RIGHT_THEN_DOWN 0x00000001L #define PPCAPS_DOWN_THEN_RIGHT 0x00000002L #define PPCAPS_LEFT_THEN_DOWN 0x00000004L #define PPCAPS_DOWN_THEN_LEFT 0x00000008L #endif /* Border capabilities */ #if (NTDDI_VERSION >= 0x06000000) #define PPCAPS_BORDER_PRINT 0x00000001L #endif /* Booklet handling capabilities */ #if (NTDDI_VERSION >= 0x06000000) #define PPCAPS_BOOKLET_EDGE 0x00000001L #endif /* Duplex handling capabilities */ #if (NTDDI_VERSION >= 0x06000000) #define PPCAPS_REVERSE_PAGES_FOR_REVERSE_DUPLEX 0x00000001L #define PPCAPS_DONT_SEND_EXTRA_PAGES_FOR_DUPLEX 0x00000002L #endif /* Scaling capabilities */ #if (NTDDI_VERSION >= 0x06000000) #define PPCAPS_SQUARE_SCALING 0x00000001L #endif /* Port types */ #define PORT_TYPE_WRITE 0x00000001L #define PORT_TYPE_READ 0x00000002L #define PORT_TYPE_REDIRECTED 0x00000004L #define PORT_TYPE_NET_ATTACHED 0x00000008L /* Port status types */ #define PORT_STATUS_TYPE_ERROR 1L #define PORT_STATUS_TYPE_WARNING 2L #define PORT_STATUS_TYPE_INFO 3L /* Port status */ #define PORT_STATUS_OFFLINE 1L #define PORT_STATUS_PAPER_JAM 2L #define PORT_STATUS_PAPER_OUT 3L #define PORT_STATUS_OUTPUT_BIN_FULL 4L #define PORT_STATUS_PAPER_PROBLEM 5L #define PORT_STATUS_NO_TONER 6L #define PORT_STATUS_DOOR_OPEN 7L #define PORT_STATUS_USER_INTERVENTION 8L #define PORT_STATUS_OUT_OF_MEMORY 9L #define PORT_STATUS_TONER_LOW 10L #define PORT_STATUS_WARMING_UP 11L #define PORT_STATUS_POWER_SAVE 12L /* EnumPrinters() flags */ #define PRINTER_ENUM_DEFAULT 0x00000001L #define PRINTER_ENUM_LOCAL 0x00000002L #define PRINTER_ENUM_CONNECTIONS 0x00000004L #define PRINTER_ENUM_FAVORITE 0x00000004L #define PRINTER_ENUM_NAME 0x00000008L #define PRINTER_ENUM_REMOTE 0x00000010L #define PRINTER_ENUM_SHARED 0x00000020L #define PRINTER_ENUM_NETWORK 0x00000040L #define PRINTER_ENUM_EXPAND 0x00004000L #define PRINTER_ENUM_CONTAINER 0x00008000L #define PRINTER_ENUM_ICONMASK 0x00FF0000L #define PRINTER_ENUM_ICON1 0x00010000L #define PRINTER_ENUM_ICON2 0x00020000L #define PRINTER_ENUM_ICON3 0x00040000L #define PRINTER_ENUM_ICON4 0x00080000L #define PRINTER_ENUM_ICON5 0x00100000L #define PRINTER_ENUM_ICON6 0x00200000L #define PRINTER_ENUM_ICON7 0x00400000L #define PRINTER_ENUM_ICON8 0x00800000L #define PRINTER_ENUM_HIDE 0x01000000L /* Spool file flags */ #define SPOOL_FILE_PERSISTENT 0x00000001L #define SPOOL_FILE_TEMPORARY 0x00000002L /* Spooler notification types */ #define PRINTER_NOTIFY_TYPE 0x0000 #define JOB_NOTIFY_TYPE 0x0001 #define SERVER_NOTIFY_TYPE 0x0002 /* Printer notification fields */ #define PRINTER_NOTIFY_FIELD_SERVER_NAME 0x0000 #define PRINTER_NOTIFY_FIELD_PRINTER_NAME 0x0001 #define PRINTER_NOTIFY_FIELD_SHARE_NAME 0x0002 #define PRINTER_NOTIFY_FIELD_PORT_NAME 0x0003 #define PRINTER_NOTIFY_FIELD_DRIVER_NAME 0x0004 #define PRINTER_NOTIFY_FIELD_COMMENT 0x0005 #define PRINTER_NOTIFY_FIELD_LOCATION 0x0006 #define PRINTER_NOTIFY_FIELD_DEVMODE 0x0007 #define PRINTER_NOTIFY_FIELD_SEPFILE 0x0008 #define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x0009 #define PRINTER_NOTIFY_FIELD_PARAMETERS 0x000A #define PRINTER_NOTIFY_FIELD_DATATYPE 0x000B #define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x000C #define PRINTER_NOTIFY_FIELD_ATTRIBUTES 0x000D #define PRINTER_NOTIFY_FIELD_PRIORITY 0x000E #define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x000F #define PRINTER_NOTIFY_FIELD_START_TIME 0x0010 #define PRINTER_NOTIFY_FIELD_UNTIL_TIME 0x0011 #define PRINTER_NOTIFY_FIELD_STATUS 0x0012 #define PRINTER_NOTIFY_FIELD_STATUS_STARTING 0x0013 #define PRINTER_NOTIFY_FIELD_CJOBS 0x0014 #define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 0x0015 #define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 0x0016 #define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 0x0017 #define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 0x0018 #define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 0x0019 #define PRINTER_NOTIFY_FIELD_OBJECT_GUID 0x001A #if (NTDDI_VERSION >= 0x06000000) #define PRINTER_NOTIFY_FIELD_FRIENDLY_NAME 0x001B #endif /* Job notification fields */ #define JOB_NOTIFY_FIELD_PRINTER_NAME 0x0000 #define JOB_NOTIFY_FIELD_MACHINE_NAME 0x0001 #define JOB_NOTIFY_FIELD_PORT_NAME 0x0002 #define JOB_NOTIFY_FIELD_USER_NAME 0x0003 #define JOB_NOTIFY_FIELD_NOTIFY_NAME 0x0004 #define JOB_NOTIFY_FIELD_DATATYPE 0x0005 #define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x0006 #define JOB_NOTIFY_FIELD_PARAMETERS 0x0007 #define JOB_NOTIFY_FIELD_DRIVER_NAME 0x0008 #define JOB_NOTIFY_FIELD_DEVMODE 0x0009 #define JOB_NOTIFY_FIELD_STATUS 0x000A #define JOB_NOTIFY_FIELD_STATUS_STRING 0x000B #define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x000C #define JOB_NOTIFY_FIELD_DOCUMENT 0x000D #define JOB_NOTIFY_FIELD_PRIORITY 0x000E #define JOB_NOTIFY_FIELD_POSITION 0x000F #define JOB_NOTIFY_FIELD_SUBMITTED 0x0010 #define JOB_NOTIFY_FIELD_START_TIME 0x0011 #define JOB_NOTIFY_FIELD_UNTIL_TIME 0x0012 #define JOB_NOTIFY_FIELD_TIME 0x0013 #define JOB_NOTIFY_FIELD_TOTAL_PAGES 0x0014 #define JOB_NOTIFY_FIELD_PAGES_PRINTED 0x0015 #define JOB_NOTIFY_FIELD_TOTAL_BYTES 0x0016 #define JOB_NOTIFY_FIELD_BYTES_PRINTED 0x0017 #define JOB_NOTIFY_FIELD_REMOTE_JOB_ID 0x0018 /* Server notification fields */ #if (NTDDI_VERSION >= 0x06010000) #define SERVER_NOTIFY_FIELD_PRINT_DRIVER_ISOLATION_GROUP 0x0000 #endif /* Printer notification option flags */ #define PRINTER_NOTIFY_OPTIONS_REFRESH 0x00000001L /* Printer notification information flags */ #define PRINTER_NOTIFY_INFO_DISCARDED 0x00000001L /* Bidirectional actions */ #if (NTDDI_VERSION >= 0x05010000) #define BIDI_ACTION_ENUM_SCHEMA L"EnumSchema" #define BIDI_ACTION_GET L"Get" #define BIDI_ACTION_SET L"Set" #define BIDI_ACTION_GET_ALL L"GetAll" #endif /* Bidirectional access types */ #if (NTDDI_VERSION >= 0x05010000) #define BIDI_ACCESS_ADMINISTRATOR 0x00000001L #define BIDI_ACCESS_USER 0x00000002L #endif /* Bidirectional error codes */ #if (NTDDI_VERSION >= 0x05010000) #define ERROR_BIDI_STATUS_OK 0L #define ERROR_BIDI_NOT_SUPPORTED ERROR_NOT_SUPPORTED #define ERROR_BIDI_ERROR_BASE 13000L #define ERROR_BIDI_STATUS_WARNING (ERROR_BIDI_ERROR_BASE + 1) #define ERROR_BIDI_SCHEMA_READ_ONLY (ERROR_BIDI_ERROR_BASE + 2) #define ERROR_BIDI_SERVER_OFFLINE (ERROR_BIDI_ERROR_BASE + 3) #define ERROR_BIDI_DEVICE_OFFLINE (ERROR_BIDI_ERROR_BASE + 4) #define ERROR_BIDI_SCHEMA_NOT_SUPPORTED (ERROR_BIDI_ERROR_BASE + 5) #endif /* Printer change notification flags */ #define PRINTER_CHANGE_ADD_PRINTER 0x00000001L #define PRINTER_CHANGE_SET_PRINTER 0x00000002L #define PRINTER_CHANGE_DELETE_PRINTER 0x00000004L #define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008L #define PRINTER_CHANGE_PRINTER 0x000000FFL #define PRINTER_CHANGE_ADD_JOB 0x00000100L #define PRINTER_CHANGE_SET_JOB 0x00000200L #define PRINTER_CHANGE_DELETE_JOB 0x00000400L #define PRINTER_CHANGE_WRITE_JOB 0x00000800L #define PRINTER_CHANGE_JOB 0x0000FF00L #define PRINTER_CHANGE_ADD_FORM 0x00010000L #define PRINTER_CHANGE_SET_FORM 0x00020000L #define PRINTER_CHANGE_DELETE_FORM 0x00040000L #define PRINTER_CHANGE_FORM 0x00070000L #define PRINTER_CHANGE_ADD_PORT 0x00100000L #define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000L #define PRINTER_CHANGE_DELETE_PORT 0x00400000L #define PRINTER_CHANGE_PORT 0x00700000L #if (NTDDI_VERSION >= 0x06010000) #define PRINTER_CHANGE_SERVER 0x00800000L #endif #define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000L #define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000L #define PRINTER_CHANGE_PRINT_PROCESSOR 0x07000000L #define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000L #define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000L #define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000L #define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000L #define PRINTER_CHANGE_TIMEOUT 0x80000000L #define PRINTER_CHANGE_ALL 0x7777FFFFL /* PrinterMessageBox() flags */ #define PRINTER_ERROR_INFORMATION 0x80000000L #define PRINTER_ERROR_WARNING 0x40000000L #define PRINTER_ERROR_SEVERE 0x20000000L #define PRINTER_ERROR_OUTOFPAPER 0x00000001L #define PRINTER_ERROR_JAM 0x00000002L #define PRINTER_ERROR_OUTOFTONER 0x00000004L /* Spooler registry values */ #define SPLREG_DEFAULT_SPOOL_DIRECTORY TEXT( "DefaultSpoolDirectory" ) #define SPLREG_PORT_THREAD_PRIORITY_DEFAULT TEXT( "PortThreadPriorityDefault" ) #define SPLREG_PORT_THREAD_PRIORITY TEXT( "PortThreadPriority" ) #define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT \ TEXT( "SchedulerThreadPriorityDefault" ) #define SPLREG_SCHEDULER_THREAD_PRIORITY TEXT( "SchedulerThreadPriority" ) #define SPLREG_BEEP_ENABLED TEXT( "BeepEnabled" ) #define SPLREG_NET_POPUP TEXT( "NetPopup" ) #define SPLREG_RETRY_POPUP TEXT( "RetryPopup" ) #define SPLREG_NET_POPUP_TO_COMPUTER TEXT( "NetPopupToComputer" ) #define SPLREG_EVENT_LOG TEXT( "EventLog" ) #define SPLREG_MAJOR_VERSION TEXT( "MajorVersion" ) #define SPLREG_MINOR_VERSION TEXT( "MinorVersion" ) #define SPLREG_ARCHITECTURE TEXT( "Architecture" ) #if (NTDDI_VERSION >= 0x05010000) #define SPLREG_OS_VERSION TEXT( "OSVersion" ) #endif #define SPLREG_OS_VERSIONEX TEXT( "OSVersionEx" ) #define SPLREG_DS_PRESENT TEXT( "DsPresent" ) #define SPLREG_DS_PRESENT_FOR_USER TEXT( "DsPresentForUser" ) #define SPLREG_REMOTE_FAX TEXT( "RemoteFax" ) #define SPLREG_RESTART_JOB_ON_POOL_ERROR TEXT( "RestartJobOnPoolError" ) #define SPLREG_RESTART_JOB_ON_POOL_ENABLED TEXT( "RestartJobOnPoolEnabled" ) #define SPLREG_DNS_MACHINE_NAME TEXT( "DNSMachineName" ) #if (((NTDDI_VERSION & 0xFFFF0000L) == 0x05010000L) && \ ((NTDDI_VERSION & 0x0000FF00L) >= 0x00000200L)) || (NTDDI_VERSION >= 0x05020000L) #define SPLREG_ALLOW_USER_MANAGEFORMS TEXT( "AllowUserManageForms" ) #endif #if (NTDDI_VERSION >= 0x05020000) #define SPLREG_WEBSHAREMGMT TEXT( "WebShareMgmt" ) #endif #if (NTDDI_VERSION >= 0x06010000) #define SPLREG_PRINT_DRIVER_ISOLATION_GROUPS_SEPARATOR L'\\' #define SPLREG_PRINT_DRIVER_ISOLATION_GROUPS TEXT( "PrintDriverIsolationGroups" ) #define SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE \ TEXT( "PrintDriverIsolationTimeBeforeRecycle" ) #define SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE \ TEXT( "PrintDriverIsolationMaxobjsBeforeRecycle" ) #define SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT \ TEXT( "PrintDriverIsolationIdleTimeout" ) #define SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY \ TEXT( "PrintDriverIsolationExecutionPolicy" ) #define SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY \ TEXT( "PrintDriverIsolationOverrideCompat" ) #endif /* Server access rights */ #define SERVER_ACCESS_ADMINISTER 0x0001L #define SERVER_ACCESS_ENUMERATE 0x0002L #define SERVER_ALL_ACCESS \ (STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE) #define SERVER_READ \ (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE) #define SERVER_WRITE \ (STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE) #define SERVER_EXECUTE \ (STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE) /* Printer access rights */ #define PRINTER_ACCESS_ADMINISTER 0x0004L #define PRINTER_ACCESS_USE 0x0008L #define PRINTER_ALL_ACCESS \ (STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE) #define PRINTER_READ (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE) #define PRINTER_WRITE (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE) #define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE) /* Job access rights */ #define JOB_ACCESS_ADMINISTER 0x00000010L #if (((NTDDI_VERSION & 0xFFFF0000L) == 0x05000000L) && \ ((NTDDI_VERSION & 0x0000FF00L) >= 0x00000300L)) || (NTDDI_VERSION >= 0x05010100L) #define JOB_ACCESS_READ 0x00000020L #define JOB_ALL_ACCESS \ (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER | JOB_ACCESS_READ) #define JOB_READ (STANDARD_RIGHTS_READ | JOB_ACCESS_READ) #else #define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER) #define JOB_READ (STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER) #endif #define JOB_WRITE (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER) #define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER) /* Spooler DS registry values */ #define SPLDS_SPOOLER_KEY TEXT( "DsSpooler" ) #define SPLDS_DRIVER_KEY TEXT( "DsDriver" ) #define SPLDS_USER_KEY TEXT( "DsUser" ) #define SPLDS_ASSET_NUMBER TEXT( "assetNumber" ) #define SPLDS_BYTES_PER_MINUTE TEXT( "bytesPerMinute" ) #define SPLDS_DESCRIPTION TEXT( "description" ) #define SPLDS_DRIVER_NAME TEXT( "driverName" ) #define SPLDS_DRIVER_VERSION TEXT( "driverVersion" ) #define SPLDS_LOCATION TEXT( "location" ) #define SPLDS_PORT_NAME TEXT( "portName" ) #define SPLDS_PRINT_ATTRIBUTES TEXT( "printAttributes" ) #define SPLDS_PRINT_BIN_NAMES TEXT( "printBinNames" ) #define SPLDS_PRINT_COLLATE TEXT( "printCollate" ) #define SPLDS_PRINT_COLOR TEXT( "printColor" ) #define SPLDS_PRINT_DUPLEX_SUPPORTED TEXT( "printDuplexSupported" ) #define SPLDS_PRINT_END_TIME TEXT( "printEndTime" ) #define SPLDS_PRINTER_CLASS TEXT( "printQueue" ) #define SPLDS_PRINTER_NAME TEXT( "printerName" ) #define SPLDS_PRINT_KEEP_PRINTED_JOBS TEXT( "printKeepPrintedJobs" ) #define SPLDS_PRINT_LANGUAGE TEXT( "printLanguage" ) #define SPLDS_PRINT_MAC_ADDRESS TEXT( "printMACAddress" ) #define SPLDS_PRINT_MAX_X_EXTENT TEXT( "printMaxXExtent" ) #define SPLDS_PRINT_MAX_Y_EXTENT TEXT( "printMaxYExtent" ) #define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED TEXT( "printMaxResolutionSupported" ) #define SPLDS_PRINT_MEDIA_READY TEXT( "printMediaReady" ) #define SPLDS_PRINT_MEDIA_SUPPORTED TEXT( "printMediaSupported" ) #define SPLDS_PRINT_MEMORY TEXT( "printMemory" ) #define SPLDS_PRINT_MIN_X_EXTENT TEXT( "printMinXExtent" ) #define SPLDS_PRINT_MIN_Y_EXTENT TEXT( "printMinYExtent" ) #define SPLDS_PRINT_NETWORK_ADDRESS TEXT( "printNetworkAddress" ) #define SPLDS_PRINT_NOTIFY TEXT( "printNotify" ) #define SPLDS_PRINT_NUMBER_UP TEXT( "printNumberUp" ) #define SPLDS_PRINT_ORIENTATIONS_SUPPORTED TEXT( "printOrientationsSupported" ) #define SPLDS_PRINT_OWNER TEXT( "printOwner" ) #define SPLDS_PRINT_PAGES_PER_MINUTE TEXT( "printPagesPerMinute" ) #define SPLDS_PRINT_RATE TEXT( "printRate" ) #define SPLDS_PRINT_RATE_UNIT TEXT( "printRateUnit" ) #define SPLDS_PRINT_SEPARATOR_FILE TEXT( "printSeparatorFile" ) #define SPLDS_PRINT_SHARE_NAME TEXT( "printShareName" ) #define SPLDS_PRINT_SPOOLING TEXT( "printSpooling" ) #define SPLDS_PRINT_STAPLING_SUPPORTED TEXT( "printStaplingSupported" ) #define SPLDS_PRINT_START_TIME TEXT( "printStartTime" ) #define SPLDS_PRINT_STATUS TEXT( "printStatus" ) #define SPLDS_PRIORITY TEXT( "priority" ) #define SPLDS_SERVER_NAME TEXT( "serverName" ) #define SPLDS_SHORT_SERVER_NAME TEXT( "shortServerName" ) #define SPLDS_UNC_NAME TEXT( "uNCName" ) #define SPLDS_URL TEXT( "url" ) #define SPLDS_FLAGS TEXT( "flags" ) #define SPLDS_VERSION_NUMBER TEXT( "versionNumber" ) #define SPLDS_PRINTER_NAME_ALIASES TEXT( "printerNameAliases" ) #define SPLDS_PRINTER_LOCATIONS TEXT( "printerLocations" ) #define SPLDS_PRINTER_MODEL TEXT( "printerModel" ) /* Printer connection flags */ #if (NTDDI_VERSION >= 0x06000000) #define PRINTER_CONNECTION_MISMATCH 0x00000020L #define PRINTER_CONNECTION_NO_UI 0x00000040L #endif /* InstallPrinterDriverFromPackage() flags */ #if (NTDDI_VERSION >= 0x06000000) #define IPDFP_COPY_ALL_FILES 0x00000001L #endif /* UploadPrinterDriverPackage() flags */ #if (NTDDI_VERSION >= 0x06000000) #define UPDP_SILENT_UPLOAD 0x00000001L #define UPDP_UPLOAD_ALWAYS 0x00000002L #define UPDP_CHECK_DRIVERSTORE 0x00000004L #endif /* Printer information (level 1) */ typedef struct _PRINTER_INFO_1A { DWORD Flags; LPSTR pDescription; LPSTR pName; LPSTR pComment; } PRINTER_INFO_1A; typedef PRINTER_INFO_1A *PPRINTER_INFO_1A; typedef PRINTER_INFO_1A *LPPRINTER_INFO_1A; typedef struct _PRINTER_INFO_1W { DWORD Flags; LPWSTR pDescription; LPWSTR pName; LPWSTR pComment; } PRINTER_INFO_1W; typedef PRINTER_INFO_1W *PPRINTER_INFO_1W; typedef PRINTER_INFO_1W *LPPRINTER_INFO_1W; #ifdef UNICODE typedef PRINTER_INFO_1W PRINTER_INFO_1; typedef PPRINTER_INFO_1W PPRINTER_INFO_1; typedef LPPRINTER_INFO_1W LPPRINTER_INFO_1; #else typedef PRINTER_INFO_1A PRINTER_INFO_1; typedef PPRINTER_INFO_1A PPRINTER_INFO_1; typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1; #endif /* Printer information (level 2) */ typedef struct _PRINTER_INFO_2A { LPSTR pServerName; LPSTR pPrinterName; LPSTR pShareName; LPSTR pPortName; LPSTR pDriverName; LPSTR pComment; LPSTR pLocation; LPDEVMODEA pDevMode; LPSTR pSepFile; LPSTR pPrintProcessor; LPSTR pDatatype; LPSTR pParameters; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD Attributes; DWORD Priority; DWORD DefaultPriority; DWORD StartTime; DWORD UntilTime; DWORD Status; DWORD cJobs; DWORD AveragePPM; } PRINTER_INFO_2A; typedef PRINTER_INFO_2A *PPRINTER_INFO_2A; typedef PRINTER_INFO_2A *LPPRINTER_INFO_2A; typedef struct _PRINTER_INFO_2W { LPWSTR pServerName; LPWSTR pPrinterName; LPWSTR pShareName; LPWSTR pPortName; LPWSTR pDriverName; LPWSTR pComment; LPWSTR pLocation; LPDEVMODEW pDevMode; LPWSTR pSepFile; LPWSTR pPrintProcessor; LPWSTR pDatatype; LPWSTR pParameters; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD Attributes; DWORD Priority; DWORD DefaultPriority; DWORD StartTime; DWORD UntilTime; DWORD Status; DWORD cJobs; DWORD AveragePPM; } PRINTER_INFO_2W; typedef PRINTER_INFO_2W *PPRINTER_INFO_2W; typedef PRINTER_INFO_2W *LPPRINTER_INFO_2W; #ifdef UNICODE typedef PRINTER_INFO_2W PRINTER_INFO_2; typedef PPRINTER_INFO_2W PPRINTER_INFO_2; typedef LPPRINTER_INFO_2W LPPRINTER_INFO_2; #else typedef PRINTER_INFO_2A PRINTER_INFO_2; typedef PPRINTER_INFO_2A PPRINTER_INFO_2; typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2; #endif /* Printer information (level 3) */ typedef struct _PRINTER_INFO_3 { PSECURITY_DESCRIPTOR pSecurityDescriptor; } PRINTER_INFO_3; typedef PRINTER_INFO_3 *PPRINTER_INFO_3; typedef PRINTER_INFO_3 *LPPRINTER_INFO_3; /* Printer information (level 4) */ typedef struct _PRINTER_INFO_4A { LPSTR pPrinterName; LPSTR pServerName; DWORD Attributes; } PRINTER_INFO_4A; typedef PRINTER_INFO_4A *PPRINTER_INFO_4A; typedef PRINTER_INFO_4A *LPPRINTER_INFO_4A; typedef struct _PRINTER_INFO_4W { LPWSTR pPrinterName; LPWSTR pServerName; DWORD Attributes; } PRINTER_INFO_4W; typedef PRINTER_INFO_4W *PPRINTER_INFO_4W; typedef PRINTER_INFO_4W *LPPRINTER_INFO_4W; #ifdef UNICODE typedef PRINTER_INFO_4W PRINTER_INFO_4; typedef PPRINTER_INFO_4W PPRINTER_INFO_4; typedef LPPRINTER_INFO_4W LPPRINTER_INFO_4; #else typedef PRINTER_INFO_4A PRINTER_INFO_4; typedef PPRINTER_INFO_4A PPRINTER_INFO_4; typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4; #endif /* Printer information (level 5) */ typedef struct _PRINTER_INFO_5A { LPSTR pPrinterName; LPSTR pPortName; DWORD Attributes; DWORD DeviceNotSelectedTimeout; DWORD TransmissionRetryTimeout; } PRINTER_INFO_5A; typedef PRINTER_INFO_5A *PPRINTER_INFO_5A; typedef PRINTER_INFO_5A *LPPRINTER_INFO_5A; typedef struct _PRINTER_INFO_5W { LPWSTR pPrinterName; LPWSTR pPortName; DWORD Attributes; DWORD DeviceNotSelectedTimeout; DWORD TransmissionRetryTimeout; } PRINTER_INFO_5W; typedef PRINTER_INFO_5W *PPRINTER_INFO_5W; typedef PRINTER_INFO_5W *LPPRINTER_INFO_5W; #ifdef UNICODE typedef PRINTER_INFO_5W PRINTER_INFO_5; typedef PPRINTER_INFO_5W PPRINTER_INFO_5; typedef LPPRINTER_INFO_5W LPPRINTER_INFO_5; #else typedef PRINTER_INFO_5A PRINTER_INFO_5; typedef PPRINTER_INFO_5A PPRINTER_INFO_5; typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5; #endif /* Printer information (level 6) */ typedef struct _PRINTER_INFO_6 { DWORD dwStatus; } PRINTER_INFO_6; typedef PRINTER_INFO_6 *PPRINTER_INFO_6; typedef PRINTER_INFO_6 *LPPRINTER_INFO_6; /* Printer information (level 7) */ typedef struct _PRINTER_INFO_7A { LPSTR pszObjectGUID; DWORD dwAction; } PRINTER_INFO_7A; typedef PRINTER_INFO_7A *PPRINTER_INFO_7A; typedef PRINTER_INFO_7A *LPPRINTER_INFO_7A; typedef struct _PRINTER_INFO_7W { LPWSTR pszObjectGUID; DWORD dwAction; } PRINTER_INFO_7W; typedef PRINTER_INFO_7W *PPRINTER_INFO_7W; typedef PRINTER_INFO_7W *LPPRINTER_INFO_7W; #ifdef UNICODE typedef PRINTER_INFO_7W PRINTER_INFO_7; typedef PPRINTER_INFO_7W PPRINTER_INFO_7; typedef LPPRINTER_INFO_7W LPPRINTER_INFO_7; #else typedef PRINTER_INFO_7A PRINTER_INFO_7; typedef PPRINTER_INFO_7A PPRINTER_INFO_7; typedef LPPRINTER_INFO_7A LPPRINTER_INFO_7; #endif /* Printer information (level 8) */ typedef struct _PRINTER_INFO_8A { LPDEVMODEA pDevMode; } PRINTER_INFO_8A; typedef PRINTER_INFO_8A *PPRINTER_INFO_8A; typedef PRINTER_INFO_8A *LPPRINTER_INFO_8A; typedef struct _PRINTER_INFO_8W { LPDEVMODEW pDevMode; } PRINTER_INFO_8W; typedef PRINTER_INFO_8W *PPRINTER_INFO_8W; typedef PRINTER_INFO_8W *LPPRINTER_INFO_8W; #ifdef UNICODE typedef PRINTER_INFO_8W PRINTER_INFO_8; typedef PPRINTER_INFO_8W PPRINTER_INFO_8; typedef LPPRINTER_INFO_8W LPPRINTER_INFO_8; #else typedef PRINTER_INFO_8A PRINTER_INFO_8; typedef PPRINTER_INFO_8A PPRINTER_INFO_8; typedef LPPRINTER_INFO_8A LPPRINTER_INFO_8; #endif /* Printer information (level 9) */ typedef struct _PRINTER_INFO_9A { LPDEVMODEA pDevMode; } PRINTER_INFO_9A; typedef PRINTER_INFO_9A *PPRINTER_INFO_9A; typedef PRINTER_INFO_9A *LPPRINTER_INFO_9A; typedef struct _PRINTER_INFO_9W { LPDEVMODEW pDevMode; } PRINTER_INFO_9W; typedef PRINTER_INFO_9W *PPRINTER_INFO_9W; typedef PRINTER_INFO_9W *LPPRINTER_INFO_9W; #ifdef UNICODE typedef PRINTER_INFO_9W PRINTER_INFO_9; typedef PPRINTER_INFO_9W PPRINTER_INFO_9; typedef LPPRINTER_INFO_9W LPPRINTER_INFO_9; #else typedef PRINTER_INFO_9A PRINTER_INFO_9; typedef PPRINTER_INFO_9A PPRINTER_INFO_9; typedef LPPRINTER_INFO_9A LPPRINTER_INFO_9; #endif /* Job information (level 1) */ typedef struct _JOB_INFO_1A { DWORD JobId; LPSTR pPrinterName; LPSTR pMachineName; LPSTR pUserName; LPSTR pDocument; LPSTR pDatatype; LPSTR pStatus; DWORD Status; DWORD Priority; DWORD Position; DWORD TotalPages; DWORD PagesPrinted; SYSTEMTIME Submitted; } JOB_INFO_1A; typedef JOB_INFO_1A *PJOB_INFO_1A; typedef JOB_INFO_1A *LPJOB_INFO_1A; typedef struct _JOB_INFO_1W { DWORD JobId; LPWSTR pPrinterName; LPWSTR pMachineName; LPWSTR pUserName; LPWSTR pDocument; LPWSTR pDatatype; LPWSTR pStatus; DWORD Status; DWORD Priority; DWORD Position; DWORD TotalPages; DWORD PagesPrinted; SYSTEMTIME Submitted; } JOB_INFO_1W; typedef JOB_INFO_1W *PJOB_INFO_1W; typedef JOB_INFO_1W *LPJOB_INFO_1W; #ifdef UNICODE typedef JOB_INFO_1W JOB_INFO_1; typedef PJOB_INFO_1W PJOB_INFO_1; typedef LPJOB_INFO_1W LPJOB_INFO_1; #else typedef JOB_INFO_1A JOB_INFO_1; typedef PJOB_INFO_1A PJOB_INFO_1; typedef LPJOB_INFO_1A LPJOB_INFO_1; #endif /* Job information (level 2) */ typedef struct _JOB_INFO_2A { DWORD JobId; LPSTR pPrinterName; LPSTR pMachineName; LPSTR pUserName; LPSTR pDocument; LPSTR pNotifyName; LPSTR pDatatype; LPSTR pPrintProcessor; LPSTR pParameters; LPSTR pDriverName; LPDEVMODEA pDevMode; LPSTR pStatus; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD Status; DWORD Priority; DWORD Position; DWORD StartTime; DWORD UntilTime; DWORD TotalPages; DWORD Size; SYSTEMTIME Submitted; DWORD Time; DWORD PagesPrinted; } JOB_INFO_2A; typedef JOB_INFO_2A *PJOB_INFO_2A; typedef JOB_INFO_2A *LPJOB_INFO_2A; typedef struct _JOB_INFO_2W { DWORD JobId; LPWSTR pPrinterName; LPWSTR pMachineName; LPWSTR pUserName; LPWSTR pDocument; LPWSTR pNotifyName; LPWSTR pDatatype; LPWSTR pPrintProcessor; LPWSTR pParameters; LPWSTR pDriverName; LPDEVMODEW pSecurityDescriptor; DWORD Status; DWORD Priority; DWORD Position; DWORD StartTime; DWORD UntilTime; DWORD TotalPages; DWORD Size; SYSTEMTIME Submitted; DWORD Time; DWORD PagesPrinted; } JOB_INFO_2W; typedef JOB_INFO_2W *PJOB_INFO_2W; typedef JOB_INFO_2W *LPJOB_INFO_2W; #ifdef UNICODE typedef JOB_INFO_2W JOB_INFO_2; typedef PJOB_INFO_2W PJOB_INFO_2; typedef LPJOB_INFO_2W LPJOB_INFO_2; #else typedef JOB_INFO_2A JOB_INFO_2; typedef PJOB_INFO_2A PJOB_INFO_2; typedef LPJOB_INFO_2A LPJOB_INFO_2; #endif /* Job information (level 3) */ typedef struct _JOB_INFO_3 { DWORD JobId; DWORD NextJobId; DWORD Reserved; } JOB_INFO_3; typedef JOB_INFO_3 *PJOB_INFO_3; typedef JOB_INFO_3 *LPJOB_INFO_3; /* Job information (level 4) */ typedef struct _JOB_INFO_4A { DWORD JobId; LPSTR pPrinterName; LPSTR pMachineName; LPSTR pUserName; LPSTR pDocument; LPSTR pNotifyName; LPSTR pDatatype; LPSTR pPrintProcessor; LPSTR pParameters; LPSTR pDriverName; LPDEVMODEA pDevMode; LPSTR pStatus; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD Status; DWORD Priority; DWORD Position; DWORD StartTime; DWORD UntilTime; DWORD TotalPages; DWORD Size; SYSTEMTIME Submitted; DWORD Time; DWORD PagesPrinted; LONG SizeHigh; } JOB_INFO_4A; typedef JOB_INFO_4A *PJOB_INFO_4A; typedef JOB_INFO_4A *LPJOB_INFO_4A; typedef struct _JOB_INFO_4W { DWORD JobId; LPWSTR pPrinterName; LPWSTR pMachineName; LPWSTR pUserName; LPWSTR pDocument; LPWSTR pNotifyName; LPWSTR pDatatype; LPWSTR pPrintProcessor; LPWSTR pParameters; LPWSTR pDriverName; LPDEVMODEW pDevMode; LPWSTR pStatus; PSECURITY_DESCRIPTOR pSecurityDescriptor; DWORD Status; DWORD Priority; DWORD Position; DWORD StartTime; DWORD UntilTime; DWORD TotalPages; DWORD Size; SYSTEMTIME Submitted; DWORD Time; DWORD PagePrinted; LONG SizeHigh; } JOB_INFO_4W; typedef JOB_INFO_4W *PJOB_INFO_4W; typedef JOB_INFO_4W *LPJOB_INFO_4W; #ifdef UNICODE typedef JOB_INFO_4W JOB_INFO_4; typedef PJOB_INFO_4W PJOB_INFO_4; typedef LPJOB_INFO_4W LPJOB_INFO_4; #else typedef JOB_INFO_4A JOB_INFO_4; typedef PJOB_INFO_4A PJOB_INFO_4; typedef LPJOB_INFO_4A LPJOB_INFO_4; #endif /* AddJob() information (level 1) */ typedef struct _ADDJOB_INFO_1A { LPSTR Path; DWORD JobId; } ADDJOB_INFO_1A; typedef ADDJOB_INFO_1A *PADDJOB_INFO_1A; typedef ADDJOB_INFO_1A *LPADDJOB_INFO_1A; typedef struct _ADDJOB_INFO_1W { LPWSTR Path; DWORD JobId; } ADDJOB_INFO_1W; typedef ADDJOB_INFO_1W *PADDJOB_INFO_1W; typedef ADDJOB_INFO_1W *LPADDJOB_INFO_1W; #ifdef UNICODE typedef ADDJOB_INFO_1W ADDJOB_INFO_1; typedef PADDJOB_INFO_1W PADDJOB_INFO_1; typedef LPADDJOB_INFO_1W LPADDJOB_INFO_1; #else typedef ADDJOB_INFO_1A ADDJOB_INFO_1; typedef PADDJOB_INFO_1A PADDJOB_INFO_1; typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1; #endif /* Driver information (level 1) */ typedef struct _DRIVER_INFO_1A { LPSTR pName; } DRIVER_INFO_1A; typedef DRIVER_INFO_1A *PDRIVER_INFO_1A; typedef DRIVER_INFO_1A *LPDRIVER_INFO_1A; typedef struct _DRIVER_INFO_1W { LPWSTR pName; } DRIVER_INFO_1W; typedef DRIVER_INFO_1W *PDRIVER_INFO_1W; typedef DRIVER_INFO_1W *LPDRIVER_INFO_1W; #ifdef UNICODE typedef DRIVER_INFO_1W DRIVER_INFO_1; typedef PDRIVER_INFO_1W PDRIVER_INFO_1; typedef LPDRIVER_INFO_1W LPDRIVER_INFO_1; #else typedef DRIVER_INFO_1A DRIVER_INFO_1; typedef PDRIVER_INFO_1A PDRIVER_INFO_1; typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1; #endif /* Driver information (level 2) */ typedef struct _DRIVER_INFO_2A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; } DRIVER_INFO_2A; typedef DRIVER_INFO_2A *PDRIVER_INFO_2A; typedef DRIVER_INFO_2A *LPDRIVER_INFO_2A; typedef struct _DRIVER_INFO_2W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; } DRIVER_INFO_2W; typedef DRIVER_INFO_2W *PDRIVER_INFO_2W; typedef DRIVER_INFO_2W *LPDRIVER_INFO_2W; #ifdef UNICODE typedef DRIVER_INFO_2W DRIVER_INFO_2; typedef PDRIVER_INFO_2W PDRIVER_INFO_2; typedef LPDRIVER_INFO_2W LPDRIVER_INFO_2; #else typedef DRIVER_INFO_2A DRIVER_INFO_2; typedef PDRIVER_INFO_2A PDRIVER_INFO_2; typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2; #endif /* Driver information (level 3) */ typedef struct _DRIVER_INFO_3A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; LPSTR pHelpFile; LPSTR pDependentFiles; LPSTR pMonitorFile; LPSTR pDefaultDataType; } DRIVER_INFO_3A; typedef DRIVER_INFO_3A *PDRIVER_INFO_3A; typedef DRIVER_INFO_3A *LPDRIVER_INFO_3A; typedef struct _DRIVER_INFO_3W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; LPWSTR pHelpFile; LPWSTR pDependentFiles; LPWSTR pMonitorFile; LPWSTR pDefaultDataType; } DRIVER_INFO_3W; typedef DRIVER_INFO_3W *PDRIVER_INFO_3W; typedef DRIVER_INFO_3W *LPDRIVER_INFO_3W; #ifdef UNICODE typedef DRIVER_INFO_3W DRIVER_INFO_3; typedef PDRIVER_INFO_3W PDRIVER_INFO_3; typedef LPDRIVER_INFO_3W LPDRIVER_INFO_3; #else typedef DRIVER_INFO_3A DRIVER_INFO_3; typedef PDRIVER_INFO_3A PDRIVER_INFO_3; typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3; #endif /* Driver information (level 4) */ typedef struct _DRIVER_INFO_4A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; LPSTR pHelpFile; LPSTR pDependentFiles; LPSTR pMonitorFile; LPSTR pDefaultDataType; LPSTR pszzPreviousNames; } DRIVER_INFO_4A; typedef DRIVER_INFO_4A *PDRIVER_INFO_4A; typedef DRIVER_INFO_4A *LPDRIVER_INFO_4A; typedef struct _DRIVER_INFO_4W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; LPWSTR pHelpFile; LPWSTR pDependentFiles; LPWSTR pMonitorFile; LPWSTR pDefaultDataType; LPWSTR pszzPreviousNames; } DRIVER_INFO_4W; typedef DRIVER_INFO_4W *PDRIVER_INFO_4W; typedef DRIVER_INFO_4W *LPDRIVER_INFO_4W; #ifdef UNICODE typedef DRIVER_INFO_4W DRIVER_INFO_4; typedef PDRIVER_INFO_4W PDRIVER_INFO_4; typedef LPDRIVER_INFO_4W LPDRIVER_INFO_4; #else typedef DRIVER_INFO_4A DRIVER_INFO_4; typedef PDRIVER_INFO_4A PDRIVER_INFO_4; typedef LPDRIVER_INFO_4A LPDRIVER_INFO_4; #endif /* Driver information (level 5) */ typedef struct _DRIVER_INFO_5A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; DWORD dwDriverAttributes; DWORD dwConfigVersion; DWORD dwDriverVersion; } DRIVER_INFO_5A; typedef DRIVER_INFO_5A *PDRIVER_INFO_5A; typedef DRIVER_INFO_5A *LPDRIVER_INFO_5A; typedef struct _DRIVER_INFO_5W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; DWORD dwDriverAttributes; DWORD dwConfigVersion; DWORD dwDriverVersion; } DRIVER_INFO_5W; typedef DRIVER_INFO_5W *PDRIVER_INFO_5W; typedef DRIVER_INFO_5W *LPDRIVER_INFO_5W; #ifdef UNICODE typedef DRIVER_INFO_5W DRIVER_INFO_5; typedef PDRIVER_INFO_5W PDRIVER_INFO_5; typedef LPDRIVER_INFO_5W LPDRIVER_INFO_5; #else typedef DRIVER_INFO_5A DRIVER_INFO_5; typedef PDRIVER_INFO_5A PDRIVER_INFO_5; typedef LPDRIVER_INFO_5A LPDRIVER_INFO_5; #endif /* Driver information (level 6) */ typedef struct _DRIVER_INFO_6A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; LPSTR pHelpFile; LPSTR pDependentFiles; LPSTR pMonitorName; LPSTR pDefaultDataType; LPSTR pszzPreviousNames; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; LPSTR pszMfgName; LPSTR pszOEMUrl; LPSTR pszHardwareID; LPSTR pszProvider; } DRIVER_INFO_6A; typedef DRIVER_INFO_6A *PDRIVER_INFO_6A; typedef DRIVER_INFO_6A *LPDRIVER_INFO_6A; typedef struct _DRIVER_INFO_6W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; LPWSTR pHelpFile; LPWSTR pDependentFiles; LPWSTR pMonitorName; LPWSTR pDefaultDataType; LPWSTR pszzPreviousNames; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; LPWSTR pszMfgName; LPWSTR pszOEMUrl; LPWSTR pszHardwareID; LPWSTR pszProvider; } DRIVER_INFO_6W; typedef DRIVER_INFO_6W *PDRIVER_INFO_6W; typedef DRIVER_INFO_6W *LPDRIVER_INFO_6W; #ifdef UNICODE typedef DRIVER_INFO_6W DRIVER_INFO_6; typedef PDRIVER_INFO_6W PDRIVER_INFO_6; typedef LPDRIVER_INFO_6W LPDRIVER_INFO_6; #else typedef DRIVER_INFO_6A DRIVER_INFO_6; typedef PDRIVER_INFO_6A PDRIVER_INFO_6; typedef LPDRIVER_INFO_6A LPDRIVER_INFO_6; #endif /* Driver information (level 8) */ typedef struct _DRIVER_INFO_8A { DWORD cVersion; LPSTR pName; LPSTR pEnvironment; LPSTR pDriverPath; LPSTR pDataFile; LPSTR pConfigFile; LPSTR pHelpFile; LPSTR pDependentFiles; LPSTR pMonitorName; LPSTR pDefaultDataType; LPSTR pszzPreviousNames; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; LPSTR pszMfgName; LPSTR pszOEMUrl; LPSTR pszHardwareID; LPSTR pszProvider; LPSTR pszPrintProcessor; LPSTR pszVendorSetup; LPSTR pszzColorProfiles; LPSTR pszInfPath; DWORD dwPrinterDriverAttributes; LPSTR pszzCoreDriverDependencies; FILETIME ftMinInboxDriverVerDate; DWORDLONG dwlMinInboxDriverVerVersion; } DRIVER_INFO_8A; typedef DRIVER_INFO_8A *PDRIVER_INFO_8A; typedef DRIVER_INFO_8A *LPDRIVER_INFO_8A; typedef struct _DRIVER_INFO_8W { DWORD cVersion; LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDriverPath; LPWSTR pDataFile; LPWSTR pConfigFile; LPWSTR pHelpFile; LPWSTR pDependentFiles; LPWSTR pMonitorName; LPWSTR pDefaultDataType; LPWSTR pszzPreviousNames; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; LPWSTR pszMfgName; LPWSTR pszOEMUrl; LPWSTR pszHardwareID; LPWSTR pszProvider; LPWSTR pszPrintProcessor; LPWSTR pszVendorSetup; LPWSTR pszzColorProfiles; LPWSTR pszInfPath; DWORD dwPrinterDriverAttributes; LPWSTR pszzCoreDriverDependencies; FILETIME ftMinInboxDriverVerDate; DWORDLONG dwlMinInboxDriverVerVersion; } DRIVER_INFO_8W; typedef DRIVER_INFO_8W *PDRIVER_INFO_8W; typedef DRIVER_INFO_8W *LPDRIVER_INFO_8W; #ifdef UNICODE typedef DRIVER_INFO_8W DRIVER_INFO_8; typedef PDRIVER_INFO_8W PDRIVER_INFO_8; typedef LPDRIVER_INFO_8W LPDRIVER_INFO_8; #else typedef DRIVER_INFO_8A DRIVER_INFO_8; typedef PDRIVER_INFO_8A PDRIVER_INFO_8; typedef LPDRIVER_INFO_8A LPDRIVER_INFO_8; #endif /* Document information (level 1) */ typedef struct _DOC_INFO_1A { LPSTR pDocName; LPSTR pOutputFile; LPSTR pDatatype; } DOC_INFO_1A; typedef DOC_INFO_1A *PDOC_INFO_1A; typedef DOC_INFO_1A *LPDOC_INFO_1A; typedef struct _DOC_INFO_1W { LPWSTR pDocName; LPWSTR pOutputFile; LPWSTR pDatatype; } DOC_INFO_1W; typedef DOC_INFO_1W *PDOC_INFO_1W; typedef DOC_INFO_1W *LPDOC_INFO_1W; #ifdef UNICODE typedef DOC_INFO_1W DOC_INFO_1; typedef PDOC_INFO_1W PDOC_INFO_1; typedef LPDOC_INFO_1W LPDOC_INFO_1; #else typedef DOC_INFO_1A DOC_INFO_1; typedef PDOC_INFO_1A PDOC_INFO_1; typedef LPDOC_INFO_1A LPDOC_INFO_1; #endif /* Document information (level 2) */ typedef struct _DOC_INFO_2A { LPSTR pDocName; LPSTR pOutputFile; LPSTR pDatatype; DWORD dwMode; DWORD JobId; } DOC_INFO_2A; typedef DOC_INFO_2A *PDOC_INFO_2A; typedef DOC_INFO_2A *LPDOC_INFO_2A; typedef struct _DOC_INFO_2W { LPWSTR pDocName; LPWSTR pOutputFile; LPWSTR pDatatype; DWORD dwMode; DWORD JobId; } DOC_INFO_2W; typedef DOC_INFO_2W *PDOC_INFO_2W; typedef DOC_INFO_2W *LPDOC_INFO_2W; #ifdef UNICODE typedef DOC_INFO_2W DOC_INFO_2; typedef PDOC_INFO_2W PDOC_INFO_2; typedef LPDOC_INFO_2W LPDOC_INFO_2; #else typedef DOC_INFO_2A DOC_INFO_2; typedef PDOC_INFO_2A PDOC_INFO_2; typedef LPDOC_INFO_2A LPDOC_INFO_2; #endif /* Document information (level 3) */ typedef struct _DOC_INFO_3A { LPSTR pDocName; LPSTR pOutputFile; LPSTR pDatatype; DWORD dwFlags; } DOC_INFO_3A; typedef DOC_INFO_3A *PDOC_INFO_3A; typedef DOC_INFO_3A *LPDOC_INFO_3A; typedef struct _DOC_INFO_3W { LPWSTR pDocName; LPWSTR pOutputFile; LPWSTR pDatatype; DWORD dwFlags; } DOC_INFO_3W; typedef DOC_INFO_3W *PDOC_INFO_3W; typedef DOC_INFO_3W *LPDOC_INFO_3W; #ifdef UNICODE typedef DOC_INFO_3W DOC_INFO_3; typedef PDOC_INFO_3W PDOC_INFO_3; typedef LPDOC_INFO_3W LPDOC_INFO_3; #else typedef DOC_INFO_3A DOC_INFO_3; typedef PDOC_INFO_3A PDOC_INFO_3; typedef LPDOC_INFO_3A LPDOC_INFO_3; #endif /* Form information (level 1) */ typedef struct _FORM_INFO_1A { DWORD Flags; LPSTR pName; SIZEL Size; RECTL ImageableArea; } FORM_INFO_1A; typedef FORM_INFO_1A *PFORM_INFO_1A; typedef FORM_INFO_1A *LPFORM_INFO_1A; typedef struct _FORM_INFO_1W { DWORD Flags; LPWSTR pName; SIZEL Size; RECTL ImageableArea; } FORM_INFO_1W; typedef FORM_INFO_1W *PFORM_INFO_1W; typedef FORM_INFO_1W *LPFORM_INFO_1W; #ifdef UNICODE typedef FORM_INFO_1W FORM_INFO_1; typedef PFORM_INFO_1W PFORM_INFO_1; typedef LPFORM_INFO_1W LPFORM_INFO_1; #else typedef FORM_INFO_1A FORM_INFO_1; typedef PFORM_INFO_1A PFORM_INFO_1; typedef LPFORM_INFO_1A LPFORM_INFO_1; #endif /* Form information (level 2) */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _FORM_INFO_2A { DWORD Flags; LPCSTR pName; SIZEL Size; RECTL ImageableArea; LPCSTR pKeyword; DWORD StringType; LPCSTR pMuiDll; DWORD dwResourceId; LPCSTR pDisplayName; LANGID wLangId; } FORM_INFO_2A; typedef FORM_INFO_2A *PFORM_INFO_2A; typedef FORM_INFO_2A *LPFORM_INFO_2A; typedef struct _FORM_INFO_2W { DWORD Flags; LPCWSTR pName; SIZEL Size; RECTL ImageableArea; LPCWSTR pKeyword; DWORD StringType; LPCWSTR pMuiDll; DWORD dwResourceId; LPCWSTR pDisplayName; LANGID wLangId; } FORM_INFO_2W; typedef FORM_INFO_2W *PFORM_INFO_2W; typedef FORM_INFO_2W *LPFORM_INFO_2W; #ifdef UNICODE typedef FORM_INFO_2W FORM_INFO_2; typedef PFORM_INFO_2W PFORM_INFO_2; typedef LPFORM_INFO_2W LPFORM_INFO_2; #else typedef FORM_INFO_2A FORM_INFO_2; typedef PFORM_INFO_2A PFORM_INFO_2; typedef LPFORM_INFO_2A LPFORM_INFO_2; #endif #endif /* Print processor information (level 1) */ typedef struct _PRINTPROCESSOR_INFO_1A { LPSTR pName; } PRINTPROCESSOR_INFO_1A; typedef PRINTPROCESSOR_INFO_1A *PPRINTPROCESSOR_INFO_1A; typedef PRINTPROCESSOR_INFO_1A *LPPRINTPROCESSOR_INFO_1A; typedef struct _PRINTPROCESSOR_INFO_1W { LPWSTR pName; } PRINTPROCESSOR_INFO_1W; typedef PRINTPROCESSOR_INFO_1W *PPRINTPROCESSOR_INFO_1W; typedef PRINTPROCESSOR_INFO_1W *LPPRINTPROCESSOR_INFO_1W; #ifdef UNICODE typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; typedef PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1; typedef LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1; #else typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1; typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1; #endif /* Print processor capabilities (level 1) */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _PRINTPROCESSOR_CAPS_1 { DWORD dwLevel; DWORD dwNupOptions; DWORD dwPageOrderFlags; DWORD dwNumberOfCopies; } PRINTPROCESSOR_CAPS_1; typedef PRINTPROCESSOR_CAPS_1 *PPRINTPROCESSOR_CAPS_1; #endif /* Print processor capabilities (level 2) */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _PRINTPROCESSOR_CAPS_2 { DWORD dwLevel; DWORD dwNupOptions; DWORD dwPageOrderFlags; DWORD dwNumberOfCopies; DWORD dwDuplexHandlingCaps; DWORD dwNupDirectionCaps; DWORD dwNupBorderCaps; DWORD dwBookletHandlingCaps; DWORD dwScalingCaps; } PRINTPROCESSOR_CAPS_2; typedef PRINTPROCESSOR_CAPS_2 *PPRINTPROCESSOR_CAPS_2; #endif /* Port information (level 1) */ typedef struct _PORT_INFO_1A { LPSTR pName; } PORT_INFO_1A; typedef PORT_INFO_1A *PPORT_INFO_1A; typedef PORT_INFO_1A *LPPORT_INFO_1A; typedef struct _PORT_INFO_1W { LPWSTR pName; } PORT_INFO_1W; typedef PORT_INFO_1W *PPORT_INFO_1W; typedef PORT_INFO_1W *LPPORT_INFO_1W; #ifdef UNICODE typedef PORT_INFO_1A PORT_INFO_1A; typedef PPORT_INFO_1A PPORT_INFO_1A; typedef LPPORT_INFO_1A LPPORT_INFO_1A; #else typedef PORT_INFO_1W PORT_INFO_1W; typedef PPORT_INFO_1W PPORT_INFO_1W; typedef LPPORT_INFO_1W LPPORT_INFO_1W; #endif /* Port information (level 2) */ typedef struct _PORT_INFO_2A { LPSTR pPortName; LPSTR pMonitorName; LPSTR pDescription; DWORD fPortType; DWORD Reserved; } PORT_INFO_2A; typedef PORT_INFO_2A *PPORT_INFO_2A; typedef PORT_INFO_2A *LPPORT_INFO_2A; typedef struct _PORT_INFO_2W { LPWSTR pPortName; LPWSTR pMonitorName; LPWSTR pDescription; DWORD fPortType; DWORD Reserved; } PORT_INFO_2W; typedef PORT_INFO_2W *PPORT_INFO_2W; typedef PORT_INFO_2W *LPPORT_INFO_2W; #ifdef UNICODE typedef PORT_INFO_2W PORT_INFO_2; typedef PPORT_INFO_2W PPORT_INFO_2; typedef LPPORT_INFO_2W LPPORT_INFO_2; #else typedef PORT_INFO_2A PORT_INFO_2; typedef PPORT_INFO_2A PPORT_INFO_2; typedef LPPORT_INFO_2A LPPORT_INFO_2; #endif /* Port information (level 3) */ typedef struct _PORT_INFO_3A { DWORD dwStatus; LPSTR pszStatus; DWORD dwSeverity; } PORT_INFO_3A; typedef PORT_INFO_3A *PPORT_INFO_3A; typedef PORT_INFO_3A *LPPORT_INFO_3A; typedef struct _PORT_INFO_3W { DWORD dwStatus; LPWSTR pszStatus; DWORD dwSeverity; } PORT_INFO_3W; typedef PORT_INFO_3W *PPORT_INFO_3W; typedef PORT_INFO_3W *LPPORT_INFO_3W; #ifdef UNICODE typedef PORT_INFO_3W PORT_INFO_3; typedef PPORT_INFO_3W PPORT_INFO_3; typedef LPPORT_INFO_3W LPPORT_INFO_3; #else typedef PORT_INFO_3A PORT_INFO_3; typedef PPORT_INFO_3A PPORT_INFO_3; typedef LPPORT_INFO_3A LPPORT_INFO_3; #endif /* Monitor information (level 1) */ typedef struct _MONITOR_INFO_1A { LPSTR pName; } MONITOR_INFO_1A; typedef MONITOR_INFO_1A *PMONITOR_INFO_1A; typedef MONITOR_INFO_1A *LPMONITOR_INFO_1A; typedef struct _MONITOR_INFO_1W { LPWSTR pName; } MONITOR_INFO_1W; typedef MONITOR_INFO_1W *PMONITOR_INFO_1W; typedef MONITOR_INFO_1W *LPMONITOR_INFO_1W; #ifdef UNICODE typedef MONITOR_INFO_1W MONITOR_INFO_1; typedef PMONITOR_INFO_1W PMONITOR_INFO_1; typedef LPMONITOR_INFO_1W LPMONITOR_INFO_1; #else typedef MONITOR_INFO_1A MONITOR_INFO_1; typedef PMONITOR_INFO_1A PMONITOR_INFO_1; typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1; #endif /* Monitor information (level 2) */ typedef struct _MONITOR_INFO_2A { LPSTR pName; LPSTR pEnvironment; LPSTR pDLLName; } MONITOR_INFO_2A; typedef MONITOR_INFO_2A *PMONITOR_INFO_2A; typedef MONITOR_INFO_2A *LPMONITOR_INFO_2A; typedef struct _MONITOR_INFO_2W { LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDLLName; } MONITOR_INFO_2W; typedef MONITOR_INFO_2W *PMONITOR_INFO_2W; typedef MONITOR_INFO_2W *LPMONITOR_INFO_2W; #ifdef UNICODE typedef MONITOR_INFO_2W MONITOR_INFO_2; typedef PMONITOR_INFO_2W PMONITOR_INFO_2; typedef LPMONITOR_INFO_2W LPMONITOR_INFO_2; #else typedef MONITOR_INFO_2A MONITOR_INFO_2; typedef PMONITOR_INFO_2A PMONITOR_INFO_2; typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2; #endif /* Data types information (level 1) */ typedef struct _DATATYPES_INFO_1A { LPSTR pName; } DATATYPES_INFO_1A; typedef DATATYPES_INFO_1A *PDATATYPES_INFO_1A; typedef DATATYPES_INFO_1A *LPDATATYPES_INFO_1A; typedef struct _DATATYPES_INFO_1W { LPWSTR pName; } DATATYPES_INFO_1W; typedef DATATYPES_INFO_1W *PDATATYPES_INFO_1W; typedef DATATYPES_INFO_1W *LPDATATYPES_INFO_1W; #ifdef UNICODE typedef DATATYPES_INFO_1W DATATYPES_INFO_1; typedef PDATATYPES_INFO_1W PDATATYPES_INFO_1; typedef LPDATATYPES_INFO_1W LPDATATYPES_INFO_1; #else typedef DATATYPES_INFO_1A DATATYPES_INFO_1; typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1; typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1; #endif /* Printer defaults */ typedef struct _PRINTER_DEFAULTSA { LPSTR pDatatype; LPDEVMODEA pDevMode; ACCESS_MASK DesiredAccess; } PRINTER_DEFAULTSA; typedef PRINTER_DEFAULTSA *PPRINTER_DEFAULTSA; typedef PRINTER_DEFAULTSA *LPPRINTER_DEFAULTSA; typedef struct _PRINTER_DEFAULTSW { LPWSTR pDatatype; LPDEVMODEW pDevMode; ACCESS_MASK DesiredAccess; } PRINTER_DEFAULTSW; typedef PRINTER_DEFAULTSW *PPRINTER_DEFAULTSW; typedef PRINTER_DEFAULTSW *LPPRINTER_DEFAULTSW; #ifdef UNICODE typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS; typedef PPRINTER_DEFAULTSW PPRINTER_DEFAULTS; typedef LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS; #else typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS; typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS; typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS; #endif /* Printer enumeration values */ typedef struct _PRINTER_ENUM_VALUESA { LPSTR pValueName; DWORD cbValueName; DWORD dwType; LPBYTE pData; DWORD cbData; } PRINTER_ENUM_VALUESA; typedef PRINTER_ENUM_VALUESA *PPRINTER_ENUM_VALUESA; typedef PRINTER_ENUM_VALUESA *LPPRINTER_ENUM_VALUESA; typedef struct _PRINTER_ENUM_VALUESW { LPWSTR pValueName; DWORD cbValueName; DWORD dwType; LPBYTE pData; DWORD cbData; } PRINTER_ENUM_VALUESW; typedef PRINTER_ENUM_VALUESW *PPRINTER_ENUM_VALUESW; typedef PRINTER_ENUM_VALUESW *LPPRINTER_ENUM_VALUESW; #ifdef UNICODE typedef PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES; typedef PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES; typedef LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES; #else typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES; typedef PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES; typedef LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES; #endif /* Printer notification options type */ typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE { WORD Type; WORD Reserved0; DWORD Reserved1; DWORD Reserved2; DWORD Count; PWORD pFields; } PRINTER_NOTIFY_OPTIONS_TYPE; typedef PRINTER_NOTIFY_OPTIONS_TYPE *PPRINTER_NOTIFY_OPTIONS_TYPE; /* Printer notification options */ typedef struct _PRINTER_NOTIFY_OPTIONS { DWORD Version; DWORD Flags; DWORD Count; PPRINTER_NOTIFY_OPTIONS_TYPE pTypes; } PRINTER_NOTIFY_OPTIONS; typedef PRINTER_NOTIFY_OPTIONS *PPRINTER_NOTIFY_OPTIONS; /* Printer notification information data */ typedef struct _PRINTER_NOTIFY_INFO_DATA { WORD Type; WORD Field; DWORD Reserved; DWORD Id; union { DWORD adwData[2]; struct { DWORD cbBuf; LPVOID pBuf; } Data; } NotifyData; } PRINTER_NOTIFY_INFO_DATA; typedef PRINTER_NOTIFY_INFO_DATA *PPRINTER_NOTIFY_INFO_DATA; typedef PRINTER_NOTIFY_INFO_DATA *LPPRINTER_NOTIFY_INFO_DATA; /* Printer notification information */ typedef struct _PRINTER_NOTIFY_INFO { DWORD Version; DWORD Flags; DWORD Count; PRINTER_NOTIFY_INFO_DATA aData[1]; } PRINTER_NOTIFY_INFO; typedef PRINTER_NOTIFY_INFO *PPRINTER_NOTIFY_INFO; typedef PRINTER_NOTIFY_INFO *LPPRINTER_NOTIFY_INFO; /* Binary container */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _BINARY_CONTAINER { DWORD cbBuf; LPBYTE pData; } BINARY_CONTAINER; typedef BINARY_CONTAINER *PBINARY_CONTAINER; #endif /* Bidirectional data */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _BIDI_DATA { DWORD dwBidiType; union { BOOL bData; LONG iData; LPWSTR sData; FLOAT fData; BINARY_CONTAINER biData; } u; } BIDI_DATA; typedef BIDI_DATA *PBIDI_DATA; typedef BIDI_DATA *LPBIDI_DATA; #endif /* Bidirectional request data */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _BIDI_REQUEST_DATA { DWORD dwReqNumber; LPWSTR pSchema; BIDI_DATA data; } BIDI_REQUEST_DATA; typedef BIDI_REQUEST_DATA *PBIDI_REQUEST_DATA; typedef BIDI_REQUEST_DATA *LPBIDI_REQUEST_DATA; #endif /* Bidirectional request container */ #if (NTDDI_VERISON >= 0x05010000) typedef struct _BIDI_REQUEST_CONTAINER { DWORD Version; DWORD Flags; DWORD Count; BIDI_REQUEST_DATA aData[1]; } BIDI_REQUEST_CONTAINER; typedef BIDI_REQUEST_CONTAINER *PBIDI_REQUEST_CONTAINER; typedef BIDI_REQUEST_CONTAINER *LPBIDI_REQUEST_CONTAINER; #endif /* Bidirectional response data */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _BIDI_RESPONSE_DATA { DWORD dwResult; DWORD dwReqNumber; LPWSTR pSchema; BIDI_DATA data; } BIDI_RESPONSE_DATA; typedef BIDI_RESPONSE_DATA *PBIDI_RESPONSE_DATA; typedef BIDI_RESPONSE_DATA *LPBIDI_RESPONSE_DATA; #endif /* Bidirectional response container */ #if (NTDDI_VERSION >= 0x05010000) typedef struct _BIDI_RESPONSE_CONTAINER { DWORD Version; DWORD Flags; DWORD Count; BIDI_RESPONSE_DATA aData[1]; } BIDI_RESPONSE_CONTAINER; typedef BIDI_RESPONSE_CONTAINER *PBIDI_RESPONSE_CONTAINER; typedef BIDI_RESPONSE_CONTAINER *LPBIDI_RESPONSE_CONTAINER; #endif /* Bidirectional types */ #if (NTDDI_VERSION >= 0x05010000) typedef enum { BIDI_NULL = 0, BIDI_INT = 1, BIDI_FLOAT = 2, BIDI_BOOL = 3, BIDI_STRING = 4, BIDI_TEXT = 5, BIDI_ENUM = 6, BIDI_BLOB = 7 } BIDI_TYPE; #endif /* Providor information (level 1) */ typedef struct _PROVIDOR_INFO_1A { LPSTR pName; LPSTR pEnvironment; LPSTR pDLLName; } PROVIDOR_INFO_1A; typedef PROVIDOR_INFO_1A *PPROVIDOR_INFO_1A; typedef PROVIDOR_INFO_1A *LPPROVIDOR_INFO_1A; typedef struct _PROVIDOR_INFO_1W { LPWSTR pName; LPWSTR pEnvironment; LPWSTR pDLLName; } PROVIDOR_INFO_1W; typedef PROVIDOR_INFO_1W *PPROVIDOR_INFO_1W; typedef PROVIDOR_INFO_1W *LPPROVIDOR_INFO_1W; #ifdef UNICODE typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1; typedef PPROVIDOR_INFO_1W PPROVIDOR_INFO_1; typedef LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1; #else typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1; typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1; typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1; #endif /* Providor information (level 2) */ typedef struct _PROVIDOR_INFO_2A { LPSTR pOrder; } PROVIDOR_INFO_2A; typedef PROVIDOR_INFO_2A *PPROVIDOR_INFO_2A; typedef PROVIDOR_INFO_2A *LPPROVIDOR_INFO_2A; typedef struct _PROVIDOR_INFO_2W { LPWSTR pOrder; } PROVIDOR_INFO_2W; typedef PROVIDOR_INFO_2W *PPROVIDOR_INFO_2W; typedef PROVIDOR_INFO_2W *LPPROVIDOR_INFO_2W; #ifdef UNICODE typedef PROVIDOR_INFO_2W PROVIDOR_INFO_2; typedef PPROVIDOR_INFO_2W PPROVIDOR_INFO_2; typedef LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2; #else typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2; typedef PPROVIDOR_INFO_2A PPROVIDOR_INFO_2; typedef LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2; #endif /* Printer option flags */ #if (NTDDI_VERSION >= 0x06000000) typedef enum _PRINTER_OPTION_FLAGS { PRINTER_OPTION_NO_CACHE = 0x00000001L, PRINTER_OPTION_CACHE = 0x00000002L, PRINTER_OPTION_CLIENT_CHANGE = 0x00000004L, PRINTER_OPTION_NO_CLIENT_DATA = 0x00000008L } PRINTER_OPTION_FLAGS; #endif /* Printer options */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _PRINTER_OPTIONSA { UINT cbSize; DWORD dwFlags; } PRINTER_OPTIONSA; typedef PRINTER_OPTIONSA *PPRINTER_OPTIONSA; typedef PRINTER_OPTIONSA *LPPRINTER_OPTIONSA; typedef struct _PRINTER_OPTIONSW { UINT cbSize; DWORD dwFlags; } PRINTER_OPTIONSW; typedef PRINTER_OPTIONSW *PPRINTER_OPTIONSW; typedef PRINTER_OPTIONSW *LPPRINTER_OPTIONSW; #ifdef UNICODE typedef PRINTER_OPTIONSW PRINTER_OPTIONS; typedef PPRINTER_OPTIONSW PPRINTER_OPTIONS; typedef LPPRINTER_OPTIONSW LPPRINTER_OPTIONS; #else typedef PRINTER_OPTIONSA PRINTER_OPTIONS; typedef PPRINTER_OPTIONSA PPRINTER_OPTIONS; typedef LPPRINTER_OPTIONSA LPPRINTER_OPTIONS; #endif #endif /* Printer connection information */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _PRINTER_CONNECTION_INFO_1A { DWORD dwFlags; LPSTR pszDriverName; } PRINTER_CONNECTION_INFO_1A; typedef PRINTER_CONNECTION_INFO_1A *PPRINTER_CONNECTION_INFO_1A; typedef struct _PRINTER_CONNECTION_INFO_1W { DWORD dwFlags; LPWSTR pszDriverName; } PRINTER_CONNECTION_INFO_1W; typedef PRINTER_CONNECTION_INFO_1W *PPRINTER_CONNECTION_INFO_1W; #ifdef UNICODE typedef PRINTER_CONNECTION_INFO_1W PRINTER_CONNECTION_INFO_1; typedef PPRINTER_CONNECTION_INFO_1W PPRINTER_CONNECTION_INFO_1; #else typedef PRINTER_CONNECTION_INFO_1A PRINTER_CONNECTION_INFO_1; typedef PPRINTER_CONNECTION_INFO_1A PPRINTER_CONNECTION_INFO_1; #endif #endif /* Core printer driver */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _CORE_PRINTER_DRIVERA { GUID CoreDriverGUID; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; CHAR szPackageID[MAX_PATH]; } CORE_PRINTER_DRIVERA; typedef CORE_PRINTER_DRIVERA *PCORE_PRINTER_DRIVERA; typedef struct _CORE_PRINTER_DRIVERW { GUID CoreDriverGUID; FILETIME ftDriverDate; DWORDLONG dwlDriverVersion; WCHAR szPackageID[MAX_PATH]; } CORE_PRINTER_DRIVERW; typedef CORE_PRINTER_DRIVERW *PCORE_PRINTER_DRIVERW; #ifdef UNICODE typedef CORE_PRINTER_DRIVERW CORE_PRINTER_DRIVER; typedef PCORE_PRINTER_DRIVERW PCORE_PRINTER_DRIVER; #else typedef CORE_PRINTER_DRIVERA CORE_PRINTER_DRIVER; typedef PCORE_PRINTER_DRIVERA PCORE_PRINTER_DRIVER; #endif #endif /* Print property types */ #if (NTDDI_VERSION >= 0x06000000) typedef enum { kPropertyTypeString = 1, kPropertyTypeInt32 = 2, kPropertyTypeInt64 = 3, kPropertyTypeByte = 4, kPropertyTypeTime = 5, kPropertyTypeDevMode = 6, kPropertyTypeSD = 7, kPropertyTypeNotificationReply = 8, kPropertyTypeNotificationOptions = 9, kPropertyTypeBuffer = 10 } EPrintPropertyType; #endif /* Print XPS job progress values */ #if (NTDDI_VERSION >= 0x06000000) typedef enum { kAddingDocumentSequence = 0, kDocumentSequenceAdded = 1, kAddingFixedDocument = 2, kFixedDocumentAdded = 3, kAddingFixedPage = 4, kFixedPageAdded = 5, kResourceAdded = 6, kFontAdded = 7, kImageAdded = 8, kXpsDocumentCommitted = 9 } EPrintXPSJobProgress; #endif /* Print XPS job operations */ #if (NTDDI_VERSION >= 0x06000000) typedef enum { kJobProduction = 1, kJobConsumption = 2 } EPrintXPSJobOperation; #endif /* Print property value */ #if (NTDDI_VERSION >= 0x06000000) typedef struct { EPrintPropertyType ePropertyType; union { BYTE propertyByte; PWSTR propertyString; LONG propertyInt32; LONGLONG propertyInt64; struct { DWORD cbBuf; LPVOID pBuf; } propertyBlob; } value; } PrintPropertyValue; #endif /* Print named property */ #if (NTDDI_VERSION >= 0x06000000) typedef struct { WCHAR *propertyName; PrintPropertyValue propertyValue; } PrintNamedProperty; #endif /* Print properties collection */ #if (NTDDI_VERSION >= 0x06000000) typedef struct { ULONG numberOfProperties; PrintNamedProperty *propertiesCollection; } PrintPropertiesCollection; #endif /* Print execution contexts */ #if (NTDDI_VERSION >= 0x06010000) typedef enum { PRINT_EXECUTION_CONTEXT_APPLICATION = 0, PRINT_EXECUTION_CONTEXT_SPOOLER_SERVICE = 1, PRINT_EXECUTION_CONTEXT_SPOOLER_ISOLATION_HOST = 2, PRINT_EXECUTION_CONTEXT_FILTER_PIPELINE = 3, PRINT_EXECUTION_CONTEXT_WOW64 = 4 } PRINT_EXECUTION_CONTEXT; #endif /* Print execution data */ #if (NTDDI_VERSION >= 0x06010000) typedef struct { PRINT_EXECUTION_CONTEXT context; DWORD clientAppPID; } PRINT_EXECUTION_DATA; #endif /* Functions in WINSPOOL.DRV */ WINSPOOLAPI BOOL WINAPI AbortPrinter( HANDLE ); WINSPOOLAPI BOOL WINAPI AddFormA( HANDLE, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddFormW( HANDLE, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddJobA( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI AddJobW( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI AddMonitorA( LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddMonitorW( LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddPortA( LPSTR, HWND, LPSTR ); WINSPOOLAPI BOOL WINAPI AddPortW( LPWSTR, HWND, LPWSTR ); WINSPOOLAPI BOOL WINAPI AddPrintProcessorA( LPSTR, LPSTR, LPSTR, LPSTR ); WINSPOOLAPI BOOL WINAPI AddPrintProcessorW( LPWSTR, LPWSTR, LPWSTR, LPWSTR ); WINSPOOLAPI BOOL WINAPI AddPrintProvidorA( LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddPrintProvidorW( LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI HANDLE WINAPI AddPrinterA( LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddPrinterConnectionA( LPSTR ); WINSPOOLAPI BOOL WINAPI AddPrinterConnectionW( LPWSTR ); WINSPOOLAPI BOOL WINAPI AddPrinterDriverA( LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI AddPrinterDriverExA( LPSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI BOOL WINAPI AddPrinterDriverExW( LPWSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI BOOL WINAPI AddPrinterDriverW( LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI HANDLE WINAPI AddPrinterW( LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI LONG WINAPI AdvancedDocumentPropertiesA( HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA ); WINSPOOLAPI LONG WINAPI AdvancedDocumentPropertiesW( HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW ); WINSPOOLAPI BOOL WINAPI ClosePrinter( HANDLE ); WINSPOOLAPI BOOL WINAPI CloseSpoolFileHandle( HANDLE, HANDLE ); WINSPOOLAPI HANDLE WINAPI CommitSpoolData( HANDLE, HANDLE, DWORD ); WINSPOOLAPI BOOL WINAPI ConfigurePortA( LPSTR, HWND, LPSTR ); WINSPOOLAPI BOOL WINAPI ConfigurePortW( LPWSTR, HWND, LPWSTR ); WINSPOOLAPI HANDLE WINAPI ConnectToPrinterDlg( HWND, DWORD ); WINSPOOLAPI BOOL WINAPI DeleteFormA( HANDLE, LPSTR ); WINSPOOLAPI BOOL WINAPI DeleteFormW( HANDLE, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeleteMonitorA( LPSTR, LPSTR, LPSTR ); WINSPOOLAPI BOOL WINAPI DeleteMonitorW( LPWSTR, LPWSTR, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeletePortA( LPSTR, HWND, LPSTR ); WINSPOOLAPI BOOL WINAPI DeletePortW( LPWSTR, HWND, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeletePrintProcessorA( LPSTR, LPSTR, LPSTR ); WINSPOOLAPI BOOL WINAPI DeletePrintProcessorW( LPWSTR, LPWSTR, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeletePrintProvidorA( LPSTR, LPSTR, LPSTR ); WINSPOOLAPI BOOL WINAPI DeletePrintProvidorW( LPWSTR, LPWSTR, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeletePrinter( HANDLE ); WINSPOOLAPI BOOL WINAPI DeletePrinterConnectionA( LPSTR ); WINSPOOLAPI BOOL WINAPI DeletePrinterConnectionW( LPWSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterDataA( HANDLE, LPSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterDataExA( HANDLE, LPCSTR, LPCSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterDataExW( HANDLE, LPCWSTR, LPCWSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterDataW( HANDLE, LPWSTR ); WINSPOOLAPI BOOL WINAPI DeletePrinterDriverA( LPSTR, LPSTR, LPSTR ); WINSPOOLAPI BOOL WINAPI DeletePrinterDriverExA( LPSTR, LPSTR, LPSTR, DWORD, DWORD ); WINSPOOLAPI BOOL WINAPI DeletePrinterDriverExW( LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD ); WINSPOOLAPI BOOL WINAPI DeletePrinterDriverW( LPWSTR, LPWSTR, LPWSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterKeyA( HANDLE, LPCSTR ); WINSPOOLAPI DWORD WINAPI DeletePrinterKeyW( HANDLE, LPCWSTR ); WINSPOOLAPI LONG WINAPI DocumentPropertiesA( HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD ); WINSPOOLAPI LONG WINAPI DocumentPropertiesW( HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD ); WINSPOOLAPI BOOL WINAPI EndDocPrinter( HANDLE ); WINSPOOLAPI BOOL WINAPI EndPagePrinter( HANDLE ); WINSPOOLAPI BOOL WINAPI EnumFormsA( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumFormsW( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumJobsA( HANDLE, DWORD, DWORD, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumJobsW( HANDLE, DWORD, DWORD, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumMonitorsA( LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumMonitorsW( LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPortsA( LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPortsW( LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintProcessorDatatypesA( LPSTR, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintProcessorDatatypesW( LPWSTR, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintProcessorsA( LPSTR, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintProcessorsW( LPWSTR, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterDataA( HANDLE, DWORD, LPSTR, DWORD, LPDWORD, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterDataExA( HANDLE, LPCSTR, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterDataExW( HANDLE, LPCWSTR, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterDataW( HANDLE, DWORD, LPWSTR, DWORD, LPDWORD, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrinterDriversA( LPSTR, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrinterDriversW( LPWSTR, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterKeyA( HANDLE, LPCSTR, LPSTR, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI EnumPrinterKeyW( HANDLE, LPCWSTR, LPWSTR, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintersA( DWORD, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI EnumPrintersW( DWORD, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI FindClosePrinterChangeNotification( HANDLE ); WINSPOOLAPI HANDLE WINAPI FindFirstPrinterChangeNotification( HANDLE, DWORD, DWORD, PVOID ); WINSPOOLAPI BOOL WINAPI FindNextPrinterChangeNotification( HANDLE, PDWORD, LPVOID, LPVOID * ); WINSPOOLAPI BOOL WINAPI FlushPrinter( HANDLE, LPVOID, DWORD, LPDWORD, DWORD ); WINSPOOLAPI BOOL WINAPI FreePrinterNotifyInfo( PPRINTER_NOTIFY_INFO ); WINSPOOLAPI BOOL WINAPI GetDefaultPrinterA( LPSTR, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetDefaultPrinterW( LPWSTR, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetFormA( HANDLE, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetFormW( HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetJobA( HANDLE, DWORD, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetJobW( HANDLE, DWORD, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrintProcessorDirectoryA( LPSTR, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrintProcessorDirectoryW( LPWSTR, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterA( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI GetPrinterDataA( HANDLE, LPSTR, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI GetPrinterDataExA( HANDLE, LPCSTR, LPCSTR, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI GetPrinterDataExW( HANDLE, LPCWSTR, LPCWSTR, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI DWORD WINAPI GetPrinterDataW( HANDLE, LPWSTR, LPDWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterDriverA( HANDLE, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterDriverDirectoryA( LPSTR, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterDriverDirectoryW( LPWSTR, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterDriverW( HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterW( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI HANDLE WINAPI GetSpoolFileHandle( HANDLE ); WINSPOOLAPI BOOL WINAPI OpenPrinterA( LPSTR, LPHANDLE, LPPRINTER_DEFAULTSA ); WINSPOOLAPI BOOL WINAPI OpenPrinterW( LPWSTR, LPHANDLE, LPPRINTER_DEFAULTSW ); WINSPOOLAPI DWORD WINAPI PrinterMessageBoxA( HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD ); WINSPOOLAPI DWORD WINAPI PrinterMessageBoxW( HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD ); WINSPOOLAPI BOOL WINAPI PrinterProperties( HWND, HANDLE ); WINSPOOLAPI BOOL WINAPI ReadPrinter( HANDLE, LPVOID, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI ResetPrinterA( HANDLE, LPPRINTER_DEFAULTSA ); WINSPOOLAPI BOOL WINAPI ResetPrinterW( HANDLE, LPPRINTER_DEFAULTSW ); WINSPOOLAPI BOOL WINAPI ScheduleJob( HANDLE, DWORD ); WINSPOOLAPI BOOL WINAPI SetDefaultPrinterA( LPCSTR ); WINSPOOLAPI BOOL WINAPI SetDefaultPrinterW( LPCWSTR ); WINSPOOLAPI BOOL WINAPI SetFormA( HANDLE, LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI SetFormW( HANDLE, LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI SetJobA( HANDLE, DWORD, DWORD, LPBYTE, DWORD ); WINSPOOLAPI BOOL WINAPI SetJobW( HANDLE, DWORD, DWORD, LPBYTE, DWORD ); WINSPOOLAPI BOOL WINAPI SetPortA( LPSTR, LPSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI SetPortW( LPWSTR, LPWSTR, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI SetPrinterA( HANDLE, DWORD, LPBYTE, DWORD ); WINSPOOLAPI DWORD WINAPI SetPrinterDataA( HANDLE, LPSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI DWORD WINAPI SetPrinterDataExA( HANDLE, LPCSTR, LPCSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI DWORD WINAPI SetPrinterDataExW( HANDLE, LPCWSTR, LPCWSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI DWORD WINAPI SetPrinterDataW( HANDLE, LPWSTR, DWORD, LPBYTE, DWORD ); WINSPOOLAPI BOOL WINAPI SetPrinterW( HANDLE, DWORD, LPBYTE, DWORD ); WINSPOOLAPI DWORD WINAPI StartDocPrinterA( HANDLE, DWORD, LPBYTE ); WINSPOOLAPI DWORD WINAPI StartDocPrinterW( HANDLE, DWORD, LPBYTE ); WINSPOOLAPI BOOL WINAPI StartPagePrinter( HANDLE ); WINSPOOLAPI DWORD WINAPI WaitForPrinterChange( HANDLE, DWORD ); WINSPOOLAPI BOOL WINAPI WritePrinter( HANDLE, LPVOID, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI XcvDataW( HANDLE, PCWSTR, PBYTE, DWORD, PBYTE, DWORD, PDWORD, PDWORD ); #if (NTDDI_VERSION >= 0x05010100) WINSPOOLAPI LONG WINAPI ExtDeviceMode( HWND, HANDLE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, DWORD ); #endif #if (NTDDI_VERSION >= 0x05010200) WINSPOOLAPI BOOL WINAPI IsValidDevmodeA( PDEVMODEA, size_t ); WINSPOOLAPI BOOL WINAPI IsValidDevmodeW( PDEVMODEW, size_t ); #endif #if (NTDDI_VERSION >= 0x06000000) WINSPOOLAPI BOOL WINAPI AddPrinterConnection2A( HWND, LPCSTR, DWORD, PVOID ); WINSPOOLAPI BOOL WINAPI AddPrinterConnection2W( HWND, LPCWSTR, DWORD, PVOID ); WINSPOOLAPI HRESULT WINAPI CorePrinterDriverInstalledA( LPCSTR, LPCSTR, GUID, FILETIME, DWORDLONG, BOOL * ); WINSPOOLAPI HRESULT WINAPI CorePrinterDriverInstalledW( LPCWSTR, LPCWSTR, GUID, FILETIME, DWORDLONG, BOOL * ); WINSPOOLAPI HRESULT WINAPI DeletePrinterDriverPackageA( LPCSTR, LPCSTR, LPCSTR ); WINSPOOLAPI HRESULT WINAPI DeletePrinterDriverPackageW( LPCWSTR, LPCWSTR, LPCWSTR ); WINSPOOLAPI HRESULT WINAPI GetCorePrinterDriversA( LPCSTR, LPCSTR, LPCSTR, DWORD, PCORE_PRINTER_DRIVERA ); WINSPOOLAPI HRESULT WINAPI GetCorePrinterDriversW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PCORE_PRINTER_DRIVERW ); WINSPOOLAPI BOOL WINAPI GetPrinterDriver2A( HWND, HANDLE, LPSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI BOOL WINAPI GetPrinterDriver2W( HWND, HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); WINSPOOLAPI HRESULT WINAPI GetPrinterDriverPackagePathA( LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPDWORD ); WINSPOOLAPI HRESULT WINAPI GetPrinterDriverPackagePathW( LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPDWORD ); WINSPOOLAPI HRESULT WINAPI InstallPrinterDriverFromPackageA( LPCSTR, LPCSTR, LPCSTR, LPCSTR, DWORD ); WINSPOOLAPI HRESULT WINAPI InstallPrinterDriverFromPackageW( LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, DWORD ); WINSPOOLAPI BOOL WINAPI OpenPrinter2A( LPCSTR, LPHANDLE, PPRINTER_DEFAULTSA, PPRINTER_OPTIONSA ); WINSPOOLAPI BOOL WINAPI OpenPrinter2W( LPCWSTR, LPHANDLE, PPRINTER_DEFAULTSW, PPRINTER_OPTIONSW ); WINSPOOLAPI HRESULT WINAPI ReportJobProcessingProgress( HANDLE, ULONG, EPrintXPSJobOperation, EPrintXPSJobProgress ); WINSPOOLAPI HRESULT WINAPI UploadPrinterDriverPackageA( LPCSTR, LPCSTR, LPCSTR, DWORD, HWND, LPSTR, PULONG ); WINSPOOLAPI HRESULT WINAPI UploadPrinterDriverPackageW( LPCWSTR, LPCWSTR, LPCWSTR, DWORD, HWND, LPWSTR, PULONG ); #endif #if (NTDDI_VERSION >= 0x06010000) WINSPOOLAPI BOOL WINAPI GetPrintExecutionData( PRINT_EXECUTION_DATA * ); #endif /* Map generic function names to the appropriate ANSI or Unicode version. */ #ifdef UNICODE #define AddForm AddFormW #define AddJob AddJobW #define AddMonitor AddMonitorW #define AddPort AddPortW #define AddPrintProcessor AddPrintProcessorW #define AddPrintProvidor AddPrintProvidorW #define AddPrinter AddPrinterW #define AddPrinterConnection AddPrinterConnectionW #define AddPrinterDriver AddPrinterDriverW #define AddPrinterDriverEx AddPrinterDriverExW #define AdvancedDocumentProperties AdvancedDocumentPropertiesW #define ConfigurePort ConfigurePortW #define DeleteForm DeleteFormW #define DeleteMonitor DeleteMonitorW #define DeletePort DeletePortW #define DeletePrintProcessor DeletePrintProcessorW #define DeletePrintProvidor DeletePrintProvidorW #define DeletePrinterConnection DeletePrinterConnectionW #define DeletePrinterData DeletePrinterDataW #define DeletePrinterDataEx DeletePrinterDataExW #define DeletePrinterDriver DeletePrinterDriverW #define DeletePrinterDriverEx DeletePrinterDriverExW #define DeletePrinterKey DeletePrinterKeyW #define DocumentProperties DocumentPropertiesW #define EnumForms EnumFormsW #define EnumJobs EnumJobsW #define EnumMonitors EnumMonitorsW #define EnumPorts EnumPortsW #define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW #define EnumPrintProcessors EnumPrintProcessorsW #define EnumPrinterData EnumPrinterDataW #define EnumPrinterDataEx EnumPrinterDataExW #define EnumPrinterDrivers EnumPrinterDriversW #define EnumPrinterKey EnumPrinterKeyW #define EnumPrinters EnumPrintersW #define GetDefaultPrinter GetDefaultPrinterW #define GetForm GetFormW #define GetJob GetJobW #define GetPrintProcessorDirectory GetPrintProcessorDirectoryW #define GetPrinter GetPrinterW #define GetPrinterData GetPrinterDataW #define GetPrinterDataEx GetPrinterDataExW #define GetPrinterDriver GetPrinterDriverW #define GetPrinterDriverDirectory GetPrinterDriverDirectoryW #define OpenPrinter OpenPrinterW #define ResetPrinter ResetPrinterW #define SetDefaultPrinter SetDefaultPrinterW #define SetForm SetFormW #define SetJob SetJobW #define SetPort SetPortW #define SetPrinter SetPrinterW #define SetPrinterData SetPrinterDataW #define SetPrinterDataEx SetPrinterDataExW #define StartDocPrinter StartDocPrinterW #if (NTDDI_VERSION >= 0x05010200) #define IsValidDevmode IsValidDevmodeW #endif #if (NTDDI_VERSION >= 0x06000000) #define AddPrinterConnection2 AddPrinterConnection2W #define CorePrinterDriverInstalled CorePrinterDriverInstalledW #define DeletePrinterDriverPackage DeletePrinterDriverPackageW #define GetCorePrinterDrivers GetCorePrinterDriversW #define GetPrinterDriver2 GetPrinterDriver2W #define GetPrinterDriverPackagePath GetPrinterDriverPackagePathW #define InstallPrinterDriverFromPackage InstallPrinterDriverFromPackageW #define OpenPrinter2 OpenPrinter2W #define UploadPrinterDriverPackage UploadPrinterDriverPackageW #endif #else #define AddForm AddFormA #define AddJob AddJobA #define AddMonitor AddMonitorA #define AddPort AddPortA #define AddPrintProcessor AddPrintProcessorA #define AddPrintProvidor AddPrintProvidorA #define AddPrinter AddPrinterA #define AddPrinterConnection AddPrinterConnectionA #define AddPrinterDriver AddPrinterDriverA #define AddPrinterDriverEx AddPrinterDriverExA #define AdvancedDocumentProperties AdvancedDocumentPropertiesA #define ConfigurePort ConfigurePortA #define DeleteForm DeleteFormA #define DeleteMonitor DeleteMonitorA #define DeletePort DeletePortA #define DeletePrintProcessor DeletePrintProcessorA #define DeletePrintProvidor DeletePrintProvidorA #define DeletePrinterConnection DeletePrinterConnectionA #define DeletePrinterData DeletePrinterDataA #define DeletePrinterDataEx DeletePrinterDataExA #define DeletePrinterDriver DeletePrinterDriverA #define DeletePrinterDriverEx DeletePrinterDriverExA #define DeletePrinterKey DeletePrinterKeyA #define DocumentProperties DocumentPropertiesA #define EnumForms EnumFormsA #define EnumJobs EnumJobsA #define EnumMonitors EnumMonitorsA #define EnumPorts EnumPortsA #define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA #define EnumPrintProcessors EnumPrintProcessorsA #define EnumPrinterData EnumPrinterDataA #define EnumPrinterDataEx EnumPrinterDataExA #define EnumPrinterDrivers EnumPrinterDriversA #define EnumPrinterKey EnumPrinterKeyA #define EnumPrinters EnumPrintersA #define GetDefaultPrinter GetDefaultPrinterA #define GetForm GetFormA #define GetJob GetJobA #define GetPrintProcessorDirectory GetPrintProcessorDirectoryA #define GetPrinter GetPrinterA #define GetPrinterData GetPrinterDataA #define GetPrinterDriver GetPrinterDriverA #define GetPrinterDriverDirectory GetPrinterDriverDirectoryA #define OpenPrinter OpenPrinterA #define ResetPrinter ResetPrinterA #define SetDefaultPrinter SetDefaultPrinterA #define SetForm SetFormA #define SetJob SetJobA #define SetPort SetPortA #define SetPrinter SetPrinterA #define SetPrinterData SetPrinterDataA #define SetPrinterDataEx SetPrinterDataExA #define StartDocPrinter StartDocPrinterA #if (NTDDI_VERSION >= 0x05010200) #define IsValidDevmode IsValidDevmodeA #endif #if (NTDDI_VERSION >= 0x06000000) #define AddPrinterConnection2 AddPrinterConnection2A #define CorePrinterDriverInstalled CorePrinterDriverInstalledA #define DeletePrinterDriverPackage DeletePrinterDriverPackageA #define GetCorePrinterDrivers GetCorePrinterDriversA #define GetPrinterDriver2 GetPrinterDriver2A #define GetPrinterDriverPackagePath GetPrinterDriverPackagePathA #define InstallPrinterDriverFromPackage InstallPrinterDriverFromPackageA #define OpenPrinter2 OpenPrinter2A #define UploadPrinterDriverPackage UploadPrinterDriverPackageA #endif #endif #define XcvData XcvDataW #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _WINSPOOL_ */