summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/winspool.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--public/sdk/inc/winspool.h2136
1 files changed, 2136 insertions, 0 deletions
diff --git a/public/sdk/inc/winspool.h b/public/sdk/inc/winspool.h
new file mode 100644
index 000000000..ca60d523e
--- /dev/null
+++ b/public/sdk/inc/winspool.h
@@ -0,0 +1,2136 @@
+/*++
+
+Copyright (c) 1990-1996 Microsoft Corporation
+
+Module Name:
+
+ WinSpool.h
+
+Abstract:
+
+ Header file for Print APIs
+
+Revision History:
+
+--*/
+
+#ifndef _WINSPOOL_
+#define _WINSPOOL_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WINUSER_
+#include <prsht.h>
+#endif
+
+typedef struct _PRINTER_INFO_1A {
+ DWORD Flags;
+ LPSTR pDescription;
+ LPSTR pName;
+ LPSTR pComment;
+} PRINTER_INFO_1A, *PPRINTER_INFO_1A, *LPPRINTER_INFO_1A;
+typedef struct _PRINTER_INFO_1W {
+ DWORD Flags;
+ LPWSTR pDescription;
+ LPWSTR pName;
+ LPWSTR pComment;
+} PRINTER_INFO_1W, *PPRINTER_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 // UNICODE
+
+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, *PPRINTER_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, *PPRINTER_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 // UNICODE
+
+typedef struct _PRINTER_INFO_3 {
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+} PRINTER_INFO_3, *PPRINTER_INFO_3, *LPPRINTER_INFO_3;
+
+typedef struct _PRINTER_INFO_4A {
+ LPSTR pPrinterName;
+ LPSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4A, *PPRINTER_INFO_4A, *LPPRINTER_INFO_4A;
+typedef struct _PRINTER_INFO_4W {
+ LPWSTR pPrinterName;
+ LPWSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4W, *PPRINTER_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 // UNICODE
+
+typedef struct _PRINTER_INFO_5A {
+ LPSTR pPrinterName;
+ LPSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5A, *PPRINTER_INFO_5A, *LPPRINTER_INFO_5A;
+typedef struct _PRINTER_INFO_5W {
+ LPWSTR pPrinterName;
+ LPWSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5W, *PPRINTER_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 // UNICODE
+
+typedef struct _PRINTER_INFO_6 {
+ DWORD dwStatus;
+} PRINTER_INFO_6, *PPRINTER_INFO_6, *LPPRINTER_INFO_6;
+
+
+
+#define PRINTER_CONTROL_PAUSE 1
+#define PRINTER_CONTROL_RESUME 2
+#define PRINTER_CONTROL_PURGE 3
+#define PRINTER_CONTROL_SET_STATUS 4
+
+#define PRINTER_STATUS_PAUSED 0x00000001
+#define PRINTER_STATUS_ERROR 0x00000002
+#define PRINTER_STATUS_PENDING_DELETION 0x00000004
+#define PRINTER_STATUS_PAPER_JAM 0x00000008
+#define PRINTER_STATUS_PAPER_OUT 0x00000010
+#define PRINTER_STATUS_MANUAL_FEED 0x00000020
+#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040
+#define PRINTER_STATUS_OFFLINE 0x00000080
+#define PRINTER_STATUS_IO_ACTIVE 0x00000100
+#define PRINTER_STATUS_BUSY 0x00000200
+#define PRINTER_STATUS_PRINTING 0x00000400
+#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800
+#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000
+#define PRINTER_STATUS_WAITING 0x00002000
+#define PRINTER_STATUS_PROCESSING 0x00004000
+#define PRINTER_STATUS_INITIALIZING 0x00008000
+#define PRINTER_STATUS_WARMING_UP 0x00010000
+#define PRINTER_STATUS_TONER_LOW 0x00020000
+#define PRINTER_STATUS_NO_TONER 0x00040000
+#define PRINTER_STATUS_PAGE_PUNT 0x00080000
+#define PRINTER_STATUS_USER_INTERVENTION 0x00100000
+#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000
+#define PRINTER_STATUS_DOOR_OPEN 0x00400000
+#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000
+#define PRINTER_STATUS_POWER_SAVE 0x01000000
+
+
+#define PRINTER_ATTRIBUTE_QUEUED 0x00000001
+#define PRINTER_ATTRIBUTE_DIRECT 0x00000002
+#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004
+#define PRINTER_ATTRIBUTE_SHARED 0x00000008
+#define PRINTER_ATTRIBUTE_NETWORK 0x00000010
+#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020
+#define PRINTER_ATTRIBUTE_LOCAL 0x00000040
+
+#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080
+#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100
+#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
+
+#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400
+#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800
+#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000
+
+
+#define NO_PRIORITY 0
+#define MAX_PRIORITY 99
+#define MIN_PRIORITY 1
+#define DEF_PRIORITY 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, *PJOB_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, *PJOB_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 // UNICODE
+
+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; // Time the job was spooled
+ DWORD Time; // How many seconds the job has been printing
+ DWORD PagesPrinted;
+} JOB_INFO_2A, *PJOB_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 pDevMode;
+ LPWSTR pStatus;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD TotalPages;
+ DWORD Size;
+ SYSTEMTIME Submitted; // Time the job was spooled
+ DWORD Time; // How many seconds the job has been printing
+ DWORD PagesPrinted;
+} JOB_INFO_2W, *PJOB_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 // UNICODE
+
+typedef struct _JOB_INFO_3 {
+ DWORD JobId;
+ DWORD NextJobId;
+ DWORD Reserved;
+} JOB_INFO_3, *PJOB_INFO_3, *LPJOB_INFO_3;
+
+#define JOB_CONTROL_PAUSE 1
+#define JOB_CONTROL_RESUME 2
+#define JOB_CONTROL_CANCEL 3
+#define JOB_CONTROL_RESTART 4
+#define JOB_CONTROL_DELETE 5
+#define JOB_CONTROL_SENT_TO_PRINTER 6
+#define JOB_CONTROL_LAST_PAGE_EJECTED 7
+
+#define JOB_STATUS_PAUSED 0x00000001
+#define JOB_STATUS_ERROR 0x00000002
+#define JOB_STATUS_DELETING 0x00000004
+#define JOB_STATUS_SPOOLING 0x00000008
+#define JOB_STATUS_PRINTING 0x00000010
+#define JOB_STATUS_OFFLINE 0x00000020
+#define JOB_STATUS_PAPEROUT 0x00000040
+#define JOB_STATUS_PRINTED 0x00000080
+#define JOB_STATUS_DELETED 0x00000100
+#define JOB_STATUS_BLOCKED_DEVQ 0x00000200
+#define JOB_STATUS_USER_INTERVENTION 0x00000400
+#define JOB_STATUS_RESTART 0x00000800
+
+#define JOB_POSITION_UNSPECIFIED 0
+
+typedef struct _ADDJOB_INFO_1A {
+ LPSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1A, *PADDJOB_INFO_1A, *LPADDJOB_INFO_1A;
+typedef struct _ADDJOB_INFO_1W {
+ LPWSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1W, *PADDJOB_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 // UNICODE
+
+typedef struct _DRIVER_INFO_1A {
+ LPSTR pName; // QMS 810
+} DRIVER_INFO_1A, *PDRIVER_INFO_1A, *LPDRIVER_INFO_1A;
+typedef struct _DRIVER_INFO_1W {
+ LPWSTR pName; // QMS 810
+} DRIVER_INFO_1W, *PDRIVER_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 // UNICODE
+
+typedef struct _DRIVER_INFO_2A {
+ DWORD cVersion;
+ LPSTR pName; // QMS 810
+ LPSTR pEnvironment; // Win32 x86
+ LPSTR pDriverPath; // c:\drivers\pscript.dll
+ LPSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+} DRIVER_INFO_2A, *PDRIVER_INFO_2A, *LPDRIVER_INFO_2A;
+typedef struct _DRIVER_INFO_2W {
+ DWORD cVersion;
+ LPWSTR pName; // QMS 810
+ LPWSTR pEnvironment; // Win32 x86
+ LPWSTR pDriverPath; // c:\drivers\pscript.dll
+ LPWSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPWSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+} DRIVER_INFO_2W, *PDRIVER_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 // UNICODE
+
+typedef struct _DRIVER_INFO_3A {
+ DWORD cVersion;
+ LPSTR pName; // QMS 810
+ LPSTR pEnvironment; // Win32 x86
+ LPSTR pDriverPath; // c:\drivers\pscript.dll
+ LPSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+ LPSTR pHelpFile; // c:\drivers\PSCRPTUI.HLP
+ LPSTR pDependentFiles; // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
+ LPSTR pMonitorName; // "PJL monitor"
+ LPSTR pDefaultDataType; // "EMF"
+} DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
+typedef struct _DRIVER_INFO_3W {
+ DWORD cVersion;
+ LPWSTR pName; // QMS 810
+ LPWSTR pEnvironment; // Win32 x86
+ LPWSTR pDriverPath; // c:\drivers\pscript.dll
+ LPWSTR pDataFile; // c:\drivers\QMS810.PPD
+ LPWSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
+ LPWSTR pHelpFile; // c:\drivers\PSCRPTUI.HLP
+ LPWSTR pDependentFiles; // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
+ LPWSTR pMonitorName; // "PJL monitor"
+ LPWSTR pDefaultDataType; // "EMF"
+} DRIVER_INFO_3W, *PDRIVER_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 // UNICODE
+
+typedef struct _DOC_INFO_1A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+} DOC_INFO_1A, *PDOC_INFO_1A, *LPDOC_INFO_1A;
+typedef struct _DOC_INFO_1W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+} DOC_INFO_1W, *PDOC_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 // UNICODE
+
+typedef struct _FORM_INFO_1A {
+ DWORD Flags;
+ LPSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1A, *PFORM_INFO_1A, *LPFORM_INFO_1A;
+typedef struct _FORM_INFO_1W {
+ DWORD Flags;
+ LPWSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1W, *PFORM_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 // UNICODE
+
+typedef struct _DOC_INFO_2A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2A, *PDOC_INFO_2A, *LPDOC_INFO_2A;
+typedef struct _DOC_INFO_2W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2W, *PDOC_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 // UNICODE
+
+#define DI_CHANNEL 1 // start direct read/write channel,
+
+
+#define DI_READ_SPOOL_JOB 3
+
+
+#define FORM_USER 0x00000000
+#define FORM_BUILTIN 0x00000001
+#define FORM_PRINTER 0x00000002
+
+typedef struct _PRINTPROCESSOR_INFO_1A {
+ LPSTR pName;
+} PRINTPROCESSOR_INFO_1A, *PPRINTPROCESSOR_INFO_1A, *LPPRINTPROCESSOR_INFO_1A;
+typedef struct _PRINTPROCESSOR_INFO_1W {
+ LPWSTR pName;
+} PRINTPROCESSOR_INFO_1W, *PPRINTPROCESSOR_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 // UNICODE
+
+typedef struct _PORT_INFO_1A {
+ LPSTR pName;
+} PORT_INFO_1A, *PPORT_INFO_1A, *LPPORT_INFO_1A;
+typedef struct _PORT_INFO_1W {
+ LPWSTR pName;
+} PORT_INFO_1W, *PPORT_INFO_1W, *LPPORT_INFO_1W;
+#ifdef UNICODE
+typedef PORT_INFO_1W PORT_INFO_1;
+typedef PPORT_INFO_1W PPORT_INFO_1;
+typedef LPPORT_INFO_1W LPPORT_INFO_1;
+#else
+typedef PORT_INFO_1A PORT_INFO_1;
+typedef PPORT_INFO_1A PPORT_INFO_1;
+typedef LPPORT_INFO_1A LPPORT_INFO_1;
+#endif // UNICODE
+
+typedef struct _PORT_INFO_2A {
+ LPSTR pPortName;
+ LPSTR pMonitorName;
+ LPSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2A, *PPORT_INFO_2A, *LPPORT_INFO_2A;
+typedef struct _PORT_INFO_2W {
+ LPWSTR pPortName;
+ LPWSTR pMonitorName;
+ LPWSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2W, *PPORT_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 // UNICODE
+
+#define PORT_TYPE_WRITE 0x0001
+#define PORT_TYPE_READ 0x0002
+#define PORT_TYPE_REDIRECTED 0x0004
+#define PORT_TYPE_NET_ATTACHED 0x0008
+
+typedef struct _PORT_INFO_3A {
+ DWORD dwStatus;
+ LPSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3A, *PPORT_INFO_3A, *LPPORT_INFO_3A;
+typedef struct _PORT_INFO_3W {
+ DWORD dwStatus;
+ LPWSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3W, *PPORT_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 // UNICODE
+
+#define PORT_STATUS_TYPE_ERROR 1
+#define PORT_STATUS_TYPE_WARNING 2
+#define PORT_STATUS_TYPE_INFO 3
+
+#define PORT_STATUS_OFFLINE 1
+#define PORT_STATUS_PAPER_JAM 2
+#define PORT_STATUS_PAPER_OUT 3
+#define PORT_STATUS_OUTPUT_BIN_FULL 4
+#define PORT_STATUS_PAPER_PROBLEM 5
+#define PORT_STATUS_NO_TONER 6
+#define PORT_STATUS_DOOR_OPEN 7
+#define PORT_STATUS_USER_INTERVENTION 8
+#define PORT_STATUS_OUT_OF_MEMORY 9
+
+#define PORT_STATUS_TONER_LOW 10
+
+#define PORT_STATUS_WARMING_UP 11
+#define PORT_STATUS_POWER_SAVE 12
+
+
+typedef struct _MONITOR_INFO_1A{
+ LPSTR pName;
+} MONITOR_INFO_1A, *PMONITOR_INFO_1A, *LPMONITOR_INFO_1A;
+typedef struct _MONITOR_INFO_1W{
+ LPWSTR pName;
+} MONITOR_INFO_1W, *PMONITOR_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 // UNICODE
+
+typedef struct _MONITOR_INFO_2A{
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDLLName;
+} MONITOR_INFO_2A, *PMONITOR_INFO_2A, *LPMONITOR_INFO_2A;
+typedef struct _MONITOR_INFO_2W{
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDLLName;
+} MONITOR_INFO_2W, *PMONITOR_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 // UNICODE
+
+typedef struct _DATATYPES_INFO_1A{
+ LPSTR pName;
+} DATATYPES_INFO_1A, *PDATATYPES_INFO_1A, *LPDATATYPES_INFO_1A;
+typedef struct _DATATYPES_INFO_1W{
+ LPWSTR pName;
+} DATATYPES_INFO_1W, *PDATATYPES_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 // UNICODE
+
+typedef struct _PRINTER_DEFAULTSA{
+ LPSTR pDatatype;
+ LPDEVMODEA pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSA, *PPRINTER_DEFAULTSA, *LPPRINTER_DEFAULTSA;
+typedef struct _PRINTER_DEFAULTSW{
+ LPWSTR pDatatype;
+ LPDEVMODEW pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSW, *PPRINTER_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 // UNICODE
+
+BOOL
+WINAPI
+EnumPrintersA(
+ DWORD Flags,
+ LPSTR Name,
+ DWORD Level,
+ LPBYTE pPrinterEnum,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintersW(
+ DWORD Flags,
+ LPWSTR Name,
+ DWORD Level,
+ LPBYTE pPrinterEnum,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrinters EnumPrintersW
+#else
+#define EnumPrinters EnumPrintersA
+#endif // !UNICODE
+
+#define PRINTER_ENUM_DEFAULT 0x00000001
+#define PRINTER_ENUM_LOCAL 0x00000002
+#define PRINTER_ENUM_CONNECTIONS 0x00000004
+#define PRINTER_ENUM_FAVORITE 0x00000004
+#define PRINTER_ENUM_NAME 0x00000008
+#define PRINTER_ENUM_REMOTE 0x00000010
+#define PRINTER_ENUM_SHARED 0x00000020
+#define PRINTER_ENUM_NETWORK 0x00000040
+
+#define PRINTER_ENUM_EXPAND 0x00004000
+#define PRINTER_ENUM_CONTAINER 0x00008000
+
+#define PRINTER_ENUM_ICONMASK 0x00ff0000
+#define PRINTER_ENUM_ICON1 0x00010000
+#define PRINTER_ENUM_ICON2 0x00020000
+#define PRINTER_ENUM_ICON3 0x00040000
+#define PRINTER_ENUM_ICON4 0x00080000
+#define PRINTER_ENUM_ICON5 0x00100000
+#define PRINTER_ENUM_ICON6 0x00200000
+#define PRINTER_ENUM_ICON7 0x00400000
+#define PRINTER_ENUM_ICON8 0x00800000
+
+BOOL
+WINAPI
+OpenPrinterA(
+ LPSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTSA pDefault
+);
+BOOL
+WINAPI
+OpenPrinterW(
+ LPWSTR pPrinterName,
+ LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTSW pDefault
+);
+#ifdef UNICODE
+#define OpenPrinter OpenPrinterW
+#else
+#define OpenPrinter OpenPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+ResetPrinterA(
+ HANDLE hPrinter,
+ LPPRINTER_DEFAULTSA pDefault
+);
+BOOL
+WINAPI
+ResetPrinterW(
+ HANDLE hPrinter,
+ LPPRINTER_DEFAULTSW pDefault
+);
+#ifdef UNICODE
+#define ResetPrinter ResetPrinterW
+#else
+#define ResetPrinter ResetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+SetJobA(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD Command
+);
+BOOL
+WINAPI
+SetJobW(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD Command
+);
+#ifdef UNICODE
+#define SetJob SetJobW
+#else
+#define SetJob SetJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetJobA(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetJobW(
+ HANDLE hPrinter,
+ DWORD JobId,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetJob GetJobW
+#else
+#define GetJob GetJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumJobsA(
+ HANDLE hPrinter,
+ DWORD FirstJob,
+ DWORD NoJobs,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumJobsW(
+ HANDLE hPrinter,
+ DWORD FirstJob,
+ DWORD NoJobs,
+ DWORD Level,
+ LPBYTE pJob,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumJobs EnumJobsW
+#else
+#define EnumJobs EnumJobsA
+#endif // !UNICODE
+
+HANDLE
+WINAPI
+AddPrinterA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter
+);
+HANDLE
+WINAPI
+AddPrinterW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPrinter
+);
+#ifdef UNICODE
+#define AddPrinter AddPrinterW
+#else
+#define AddPrinter AddPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+SetPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD Command
+);
+BOOL
+WINAPI
+SetPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD Command
+);
+#ifdef UNICODE
+#define SetPrinter SetPrinterW
+#else
+#define SetPrinter SetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pPrinter,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinter GetPrinterW
+#else
+#define GetPrinter GetPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+AddPrinterDriverA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pDriverInfo
+);
+BOOL
+WINAPI
+AddPrinterDriverW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pDriverInfo
+);
+#ifdef UNICODE
+#define AddPrinterDriver AddPrinterDriverW
+#else
+#define AddPrinterDriver AddPrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrinterDriversA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrinterDriversW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrinterDrivers EnumPrinterDriversW
+#else
+#define EnumPrinterDrivers EnumPrinterDriversA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterDriverA(
+ HANDLE hPrinter,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterDriverW(
+ HANDLE hPrinter,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterDriver GetPrinterDriverW
+#else
+#define GetPrinterDriver GetPrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+GetPrinterDriverDirectoryA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverDirectory,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrinterDriverDirectoryW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pDriverDirectory,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
+#else
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrinterDriverA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pDriverName
+);
+BOOL
+WINAPI
+DeletePrinterDriverW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pDriverName
+);
+#ifdef UNICODE
+#define DeletePrinterDriver DeletePrinterDriverW
+#else
+#define DeletePrinterDriver DeletePrinterDriverA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+AddPrintProcessorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPathName,
+ LPSTR pPrintProcessorName
+);
+BOOL
+WINAPI
+AddPrintProcessorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPathName,
+ LPWSTR pPrintProcessorName
+);
+#ifdef UNICODE
+#define AddPrintProcessor AddPrintProcessorW
+#else
+#define AddPrintProcessor AddPrintProcessorA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrintProcessorsA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintProcessorsW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrintProcessors EnumPrintProcessorsW
+#else
+#define EnumPrintProcessors EnumPrintProcessorsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+GetPrintProcessorDirectoryA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetPrintProcessorDirectoryW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ DWORD Level,
+ LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
+#else
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+EnumPrintProcessorDatatypesA(
+ LPSTR pName,
+ LPSTR pPrintProcessorName,
+ DWORD Level,
+ LPBYTE pDatatypes,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPrintProcessorDatatypesW(
+ LPWSTR pName,
+ LPWSTR pPrintProcessorName,
+ DWORD Level,
+ LPBYTE pDatatypes,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
+#else
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrintProcessorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPrintProcessorName
+);
+BOOL
+WINAPI
+DeletePrintProcessorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPrintProcessorName
+);
+#ifdef UNICODE
+#define DeletePrintProcessor DeletePrintProcessorW
+#else
+#define DeletePrintProcessor DeletePrintProcessorA
+#endif // !UNICODE
+
+DWORD
+WINAPI
+StartDocPrinterA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pDocInfo
+);
+DWORD
+WINAPI
+StartDocPrinterW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pDocInfo
+);
+#ifdef UNICODE
+#define StartDocPrinter StartDocPrinterW
+#else
+#define StartDocPrinter StartDocPrinterA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+StartPagePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+WritePrinter(
+ HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pcWritten
+);
+
+BOOL
+WINAPI
+EndPagePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AbortPrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+ReadPrinter(
+ HANDLE hPrinter,
+ LPVOID pBuf,
+ DWORD cbBuf,
+ LPDWORD pNoBytesRead
+);
+
+BOOL
+WINAPI
+EndDocPrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AddJobA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pData,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+AddJobW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pData,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define AddJob AddJobW
+#else
+#define AddJob AddJobA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+ScheduleJob(
+ HANDLE hPrinter,
+ DWORD JobId
+);
+
+BOOL
+WINAPI
+PrinterProperties(
+ HWND hWnd,
+ HANDLE hPrinter
+);
+
+LONG
+WINAPI
+DocumentPropertiesA(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPSTR pDeviceName,
+ PDEVMODEA pDevModeOutput,
+ PDEVMODEA pDevModeInput,
+ DWORD fMode
+);
+LONG
+WINAPI
+DocumentPropertiesW(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPWSTR pDeviceName,
+ PDEVMODEW pDevModeOutput,
+ PDEVMODEW pDevModeInput,
+ DWORD fMode
+);
+#ifdef UNICODE
+#define DocumentProperties DocumentPropertiesW
+#else
+#define DocumentProperties DocumentPropertiesA
+#endif // !UNICODE
+
+LONG
+WINAPI
+AdvancedDocumentPropertiesA(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPSTR pDeviceName,
+ PDEVMODEA pDevModeOutput,
+ PDEVMODEA pDevModeInput
+);
+LONG
+WINAPI
+AdvancedDocumentPropertiesW(
+ HWND hWnd,
+ HANDLE hPrinter,
+ LPWSTR pDeviceName,
+ PDEVMODEW pDevModeOutput,
+ PDEVMODEW pDevModeInput
+);
+#ifdef UNICODE
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
+#else
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
+#endif // !UNICODE
+
+
+
+DWORD
+WINAPI
+GetPrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded
+);
+DWORD
+WINAPI
+GetPrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD nSize,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetPrinterData GetPrinterDataW
+#else
+#define GetPrinterData GetPrinterDataA
+#endif // !UNICODE
+
+DWORD
+WINAPI
+EnumPrinterDataA(
+ HANDLE hPrinter,
+ DWORD dwIndex,
+ LPSTR pValueName,
+ DWORD cbValueName,
+ LPDWORD pcbValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD cbData,
+ LPDWORD pcbData
+);
+DWORD
+WINAPI
+EnumPrinterDataW(
+ HANDLE hPrinter,
+ DWORD dwIndex,
+ LPWSTR pValueName,
+ DWORD cbValueName,
+ LPDWORD pcbValueName,
+ LPDWORD pType,
+ LPBYTE pData,
+ DWORD cbData,
+ LPDWORD pcbData
+);
+#ifdef UNICODE
+#define EnumPrinterData EnumPrinterDataW
+#else
+#define EnumPrinterData EnumPrinterDataA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+SetPrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName,
+ DWORD Type,
+ LPBYTE pData,
+ DWORD cbData
+);
+DWORD
+WINAPI
+SetPrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName,
+ DWORD Type,
+ LPBYTE pData,
+ DWORD cbData
+);
+#ifdef UNICODE
+#define SetPrinterData SetPrinterDataW
+#else
+#define SetPrinterData SetPrinterDataA
+#endif // !UNICODE
+
+
+DWORD
+WINAPI
+DeletePrinterDataA(
+ HANDLE hPrinter,
+ LPSTR pValueName
+);
+DWORD
+WINAPI
+DeletePrinterDataW(
+ HANDLE hPrinter,
+ LPWSTR pValueName
+);
+#ifdef UNICODE
+#define DeletePrinterData DeletePrinterDataW
+#else
+#define DeletePrinterData DeletePrinterDataA
+#endif // !UNICODE
+
+#define PRINTER_NOTIFY_TYPE 0x00
+#define JOB_NOTIFY_TYPE 0x01
+
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0x00
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 0x01
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME 0x02
+#define PRINTER_NOTIFY_FIELD_PORT_NAME 0x03
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 0x04
+#define PRINTER_NOTIFY_FIELD_COMMENT 0x05
+#define PRINTER_NOTIFY_FIELD_LOCATION 0x06
+#define PRINTER_NOTIFY_FIELD_DEVMODE 0x07
+#define PRINTER_NOTIFY_FIELD_SEPFILE 0x08
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
+#define PRINTER_NOTIFY_FIELD_PARAMETERS 0x0A
+#define PRINTER_NOTIFY_FIELD_DATATYPE 0x0B
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 0x0D
+#define PRINTER_NOTIFY_FIELD_PRIORITY 0x0E
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0F
+#define PRINTER_NOTIFY_FIELD_START_TIME 0x10
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 0x11
+#define PRINTER_NOTIFY_FIELD_STATUS 0x12
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING 0x13
+#define PRINTER_NOTIFY_FIELD_CJOBS 0x14
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 0x15
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 0x16
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 0x17
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 0x18
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 0x19
+
+#define JOB_NOTIFY_FIELD_PRINTER_NAME 0x00
+#define JOB_NOTIFY_FIELD_MACHINE_NAME 0x01
+#define JOB_NOTIFY_FIELD_PORT_NAME 0x02
+#define JOB_NOTIFY_FIELD_USER_NAME 0x03
+#define JOB_NOTIFY_FIELD_NOTIFY_NAME 0x04
+#define JOB_NOTIFY_FIELD_DATATYPE 0x05
+#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
+#define JOB_NOTIFY_FIELD_PARAMETERS 0x07
+#define JOB_NOTIFY_FIELD_DRIVER_NAME 0x08
+#define JOB_NOTIFY_FIELD_DEVMODE 0x09
+#define JOB_NOTIFY_FIELD_STATUS 0x0A
+#define JOB_NOTIFY_FIELD_STATUS_STRING 0x0B
+#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
+#define JOB_NOTIFY_FIELD_DOCUMENT 0x0D
+#define JOB_NOTIFY_FIELD_PRIORITY 0x0E
+#define JOB_NOTIFY_FIELD_POSITION 0x0F
+#define JOB_NOTIFY_FIELD_SUBMITTED 0x10
+#define JOB_NOTIFY_FIELD_START_TIME 0x11
+#define JOB_NOTIFY_FIELD_UNTIL_TIME 0x12
+#define JOB_NOTIFY_FIELD_TIME 0x13
+#define JOB_NOTIFY_FIELD_TOTAL_PAGES 0x14
+#define JOB_NOTIFY_FIELD_PAGES_PRINTED 0x15
+#define JOB_NOTIFY_FIELD_TOTAL_BYTES 0x16
+#define JOB_NOTIFY_FIELD_BYTES_PRINTED 0x17
+
+
+typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
+ WORD Type;
+ WORD Reserved0;
+ DWORD Reserved1;
+ DWORD Reserved2;
+ DWORD Count;
+ PWORD pFields;
+} PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE, *LPPRINTER_NOTIFY_OPTIONS_TYPE;
+
+
+#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
+
+typedef struct _PRINTER_NOTIFY_OPTIONS {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
+} PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
+
+
+
+#define PRINTER_NOTIFY_INFO_DISCARDED 0x01
+
+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, *PPRINTER_NOTIFY_INFO_DATA, *LPPRINTER_NOTIFY_INFO_DATA;
+
+typedef struct _PRINTER_NOTIFY_INFO {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PRINTER_NOTIFY_INFO_DATA aData[1];
+} PRINTER_NOTIFY_INFO, *PPRINTER_NOTIFY_INFO, *LPPRINTER_NOTIFY_INFO;
+
+DWORD
+WINAPI
+WaitForPrinterChange(
+ HANDLE hPrinter,
+ DWORD Flags
+);
+
+HANDLE
+WINAPI
+FindFirstPrinterChangeNotification(
+ HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ LPVOID pPrinterNotifyOptions
+);
+
+
+BOOL
+WINAPI
+FindNextPrinterChangeNotification(
+ HANDLE hChange,
+ PDWORD pdwChange,
+ LPVOID pvReserved,
+ LPVOID *ppPrinterNotifyInfo
+);
+
+BOOL
+WINAPI
+FreePrinterNotifyInfo(
+ PPRINTER_NOTIFY_INFO pPrinterNotifyInfo
+);
+
+BOOL
+WINAPI
+FindClosePrinterChangeNotification(
+ HANDLE hChange
+);
+
+#define PRINTER_CHANGE_ADD_PRINTER 0x00000001
+#define PRINTER_CHANGE_SET_PRINTER 0x00000002
+#define PRINTER_CHANGE_DELETE_PRINTER 0x00000004
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
+#define PRINTER_CHANGE_PRINTER 0x000000FF
+#define PRINTER_CHANGE_ADD_JOB 0x00000100
+#define PRINTER_CHANGE_SET_JOB 0x00000200
+#define PRINTER_CHANGE_DELETE_JOB 0x00000400
+#define PRINTER_CHANGE_WRITE_JOB 0x00000800
+#define PRINTER_CHANGE_JOB 0x0000FF00
+#define PRINTER_CHANGE_ADD_FORM 0x00010000
+#define PRINTER_CHANGE_SET_FORM 0x00020000
+#define PRINTER_CHANGE_DELETE_FORM 0x00040000
+#define PRINTER_CHANGE_FORM 0x00070000
+#define PRINTER_CHANGE_ADD_PORT 0x00100000
+#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000
+#define PRINTER_CHANGE_DELETE_PORT 0x00400000
+#define PRINTER_CHANGE_PORT 0x00700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR 0x07000000
+#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000
+#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000
+#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000
+#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000
+#define PRINTER_CHANGE_TIMEOUT 0x80000000
+#define PRINTER_CHANGE_ALL 0x7777FFFF
+
+DWORD
+WINAPI
+PrinterMessageBoxA(
+ HANDLE hPrinter,
+ DWORD Error,
+ HWND hWnd,
+ LPSTR pText,
+ LPSTR pCaption,
+ DWORD dwType
+);
+DWORD
+WINAPI
+PrinterMessageBoxW(
+ HANDLE hPrinter,
+ DWORD Error,
+ HWND hWnd,
+ LPWSTR pText,
+ LPWSTR pCaption,
+ DWORD dwType
+);
+#ifdef UNICODE
+#define PrinterMessageBox PrinterMessageBoxW
+#else
+#define PrinterMessageBox PrinterMessageBoxA
+#endif // !UNICODE
+
+
+
+#define PRINTER_ERROR_INFORMATION 0x80000000
+#define PRINTER_ERROR_WARNING 0x40000000
+#define PRINTER_ERROR_SEVERE 0x20000000
+
+#define PRINTER_ERROR_OUTOFPAPER 0x00000001
+#define PRINTER_ERROR_JAM 0x00000002
+#define PRINTER_ERROR_OUTOFTONER 0x00000004
+
+BOOL
+WINAPI
+ClosePrinter(
+ HANDLE hPrinter
+);
+
+BOOL
+WINAPI
+AddFormA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm
+);
+BOOL
+WINAPI
+AddFormW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm
+);
+#ifdef UNICODE
+#define AddForm AddFormW
+#else
+#define AddForm AddFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeleteFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName
+);
+BOOL
+WINAPI
+DeleteFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName
+);
+#ifdef UNICODE
+#define DeleteForm DeleteFormW
+#else
+#define DeleteForm DeleteFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+GetFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+BOOL
+WINAPI
+GetFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded
+);
+#ifdef UNICODE
+#define GetForm GetFormW
+#else
+#define GetForm GetFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+SetFormA(
+ HANDLE hPrinter,
+ LPSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm
+);
+BOOL
+WINAPI
+SetFormW(
+ HANDLE hPrinter,
+ LPWSTR pFormName,
+ DWORD Level,
+ LPBYTE pForm
+);
+#ifdef UNICODE
+#define SetForm SetFormW
+#else
+#define SetForm SetFormA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumFormsA(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumFormsW(
+ HANDLE hPrinter,
+ DWORD Level,
+ LPBYTE pForm,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumForms EnumFormsW
+#else
+#define EnumForms EnumFormsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumMonitorsA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumMonitorsW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumMonitors EnumMonitorsW
+#else
+#define EnumMonitors EnumMonitorsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddMonitorA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors
+);
+BOOL
+WINAPI
+AddMonitorW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pMonitors
+);
+#ifdef UNICODE
+#define AddMonitor AddMonitorW
+#else
+#define AddMonitor AddMonitorA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeleteMonitorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pMonitorName
+);
+BOOL
+WINAPI
+DeleteMonitorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pMonitorName
+);
+#ifdef UNICODE
+#define DeleteMonitor DeleteMonitorW
+#else
+#define DeleteMonitor DeleteMonitorA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+EnumPortsA(
+ LPSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+BOOL
+WINAPI
+EnumPortsW(
+ LPWSTR pName,
+ DWORD Level,
+ LPBYTE pPorts,
+ DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned
+);
+#ifdef UNICODE
+#define EnumPorts EnumPortsW
+#else
+#define EnumPorts EnumPortsA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddPortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pMonitorName
+);
+BOOL
+WINAPI
+AddPortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pMonitorName
+);
+#ifdef UNICODE
+#define AddPort AddPortW
+#else
+#define AddPort AddPortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+ConfigurePortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pPortName
+);
+BOOL
+WINAPI
+ConfigurePortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+);
+#ifdef UNICODE
+#define ConfigurePort ConfigurePortW
+#else
+#define ConfigurePort ConfigurePortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeletePortA(
+ LPSTR pName,
+ HWND hWnd,
+ LPSTR pPortName
+);
+BOOL
+WINAPI
+DeletePortW(
+ LPWSTR pName,
+ HWND hWnd,
+ LPWSTR pPortName
+);
+#ifdef UNICODE
+#define DeletePort DeletePortW
+#else
+#define DeletePort DeletePortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+SetPortA(
+ LPSTR pName,
+ LPSTR pPortName,
+ DWORD dwLevel,
+ LPBYTE pPortInfo
+);
+BOOL
+WINAPI
+SetPortW(
+ LPWSTR pName,
+ LPWSTR pPortName,
+ DWORD dwLevel,
+ LPBYTE pPortInfo
+);
+#ifdef UNICODE
+#define SetPort SetPortW
+#else
+#define SetPort SetPortA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+AddPrinterConnectionA(
+ LPSTR pName
+);
+BOOL
+WINAPI
+AddPrinterConnectionW(
+ LPWSTR pName
+);
+#ifdef UNICODE
+#define AddPrinterConnection AddPrinterConnectionW
+#else
+#define AddPrinterConnection AddPrinterConnectionA
+#endif // !UNICODE
+
+
+
+BOOL
+WINAPI
+DeletePrinterConnectionA(
+ LPSTR pName
+);
+BOOL
+WINAPI
+DeletePrinterConnectionW(
+ LPWSTR pName
+);
+#ifdef UNICODE
+#define DeletePrinterConnection DeletePrinterConnectionW
+#else
+#define DeletePrinterConnection DeletePrinterConnectionA
+#endif // !UNICODE
+
+
+
+HANDLE
+WINAPI
+ConnectToPrinterDlg(
+ HWND hwnd,
+ DWORD Flags
+);
+
+typedef struct _PROVIDOR_INFO_1A{
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDLLName;
+} PROVIDOR_INFO_1A, *PPROVIDOR_INFO_1A, *LPPROVIDOR_INFO_1A;
+typedef struct _PROVIDOR_INFO_1W{
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDLLName;
+} PROVIDOR_INFO_1W, *PPROVIDOR_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 // UNICODE
+
+
+
+BOOL
+WINAPI
+AddPrintProvidorA(
+ LPSTR pName,
+ DWORD level,
+ LPBYTE pProvidorInfo
+);
+BOOL
+WINAPI
+AddPrintProvidorW(
+ LPWSTR pName,
+ DWORD level,
+ LPBYTE pProvidorInfo
+);
+#ifdef UNICODE
+#define AddPrintProvidor AddPrintProvidorW
+#else
+#define AddPrintProvidor AddPrintProvidorA
+#endif // !UNICODE
+
+BOOL
+WINAPI
+DeletePrintProvidorA(
+ LPSTR pName,
+ LPSTR pEnvironment,
+ LPSTR pPrintProvidorName
+);
+BOOL
+WINAPI
+DeletePrintProvidorW(
+ LPWSTR pName,
+ LPWSTR pEnvironment,
+ LPWSTR pPrintProvidorName
+);
+#ifdef UNICODE
+#define DeletePrintProvidor DeletePrintProvidorW
+#else
+#define DeletePrintProvidor DeletePrintProvidorA
+#endif // !UNICODE
+
+
+
+/*
+ * SetPrinterData and GetPrinterData Server Handle Key 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_EVENT_LOG TEXT("EventLog")
+#define SPLREG_MAJOR_VERSION TEXT("MajorVersion")
+#define SPLREG_MINOR_VERSION TEXT("MinorVersion")
+#define SPLREG_ARCHITECTURE TEXT("Architecture")
+
+
+#define SERVER_ACCESS_ADMINISTER 0x00000001
+#define SERVER_ACCESS_ENUMERATE 0x00000002
+
+#define PRINTER_ACCESS_ADMINISTER 0x00000004
+#define PRINTER_ACCESS_USE 0x00000008
+
+#define JOB_ACCESS_ADMINISTER 0x00000010
+
+
+/*
+ * Access rights for print servers
+ */
+
+#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)
+
+/*
+ * Access rights for printers
+ */
+
+#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)
+
+/*
+ * Access rights for jobs
+ */
+
+#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_READ (STANDARD_RIGHTS_READ |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_WRITE (STANDARD_RIGHTS_WRITE |\
+ JOB_ACCESS_ADMINISTER)
+
+#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
+ JOB_ACCESS_ADMINISTER)
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _WINSPOOL_