diff options
Diffstat (limited to 'public/sdk/inc/winspool.h')
-rw-r--r-- | public/sdk/inc/winspool.h | 2136 |
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_ |