This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/winspool.h

2345 lines
90 KiB
C

/*
* 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 <prsht.h>
#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_ */