holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/winspool.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/winspool.h	Thu Sep 16 09:43:14 2010 +0100
@@ -0,0 +1,982 @@
+#ifndef _WINSPOOL_H
+#define _WINSPOOL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DI_CHANNEL 1
+#define DI_CHANNEL_WRITE 2
+#define DI_READ_SPOOL_JOB 3
+#define	DI_MEMORYMAP_WRITE	0x1
+#define	FORM_USER	0x0
+#define	FORM_BUILTIN	0x1
+#define	FORM_PRINTER	0x2
+#if (_WIN32_WINNT >= 0x0500)
+#define DRIVER_KERNELMODE	0x00000001
+#define DRIVER_USERMODE		0x00000002
+#define	DSPRINT_PUBLISH		0x00000001
+#define	DSPRINT_UPDATE		0x00000002
+#define	DSPRINT_UNPUBLISH	0x00000004
+#define	DSPRINT_REPUBLISH	0x00000008
+#define	DSPRINT_PENDING		0x80000000
+#endif
+#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		0x1
+#define	JOB_STATUS_ERROR		0x2
+#define	JOB_STATUS_DELETING		0x4
+#define	JOB_STATUS_SPOOLING		0x8
+#define	JOB_STATUS_PRINTING		0x10
+#define	JOB_STATUS_OFFLINE		0x20
+#define	JOB_STATUS_PAPEROUT		0x40
+#define	JOB_STATUS_PRINTED		0x80
+#define	JOB_STATUS_DELETED		0x100
+#define	JOB_STATUS_BLOCKED_DEVQ		0x200
+#define	JOB_STATUS_USER_INTERVENTION	0x400
+#define	JOB_STATUS_RESTART		0x800
+#define	JOB_STATUS_COMPLETE		0x1000
+#define	JOB_POSITION_UNSPECIFIED	0
+#define	JOB_NOTIFY_TYPE	1
+#define	JOB_NOTIFY_FIELD_PRINTER_NAME	0
+#define	JOB_NOTIFY_FIELD_MACHINE_NAME	1
+#define	JOB_NOTIFY_FIELD_PORT_NAME	2
+#define	JOB_NOTIFY_FIELD_USER_NAME	3
+#define	JOB_NOTIFY_FIELD_NOTIFY_NAME	4
+#define	JOB_NOTIFY_FIELD_DATATYPE	5
+#define	JOB_NOTIFY_FIELD_PRINT_PROCESSOR	6
+#define	JOB_NOTIFY_FIELD_PARAMETERS	7
+#define	JOB_NOTIFY_FIELD_DRIVER_NAME	8
+#define	JOB_NOTIFY_FIELD_DEVMODE	9
+#define	JOB_NOTIFY_FIELD_STATUS	10
+#define	JOB_NOTIFY_FIELD_STATUS_STRING	11
+#define	JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
+#define	JOB_NOTIFY_FIELD_DOCUMENT	13
+#define	JOB_NOTIFY_FIELD_PRIORITY	14
+#define	JOB_NOTIFY_FIELD_POSITION	15
+#define	JOB_NOTIFY_FIELD_SUBMITTED	16
+#define	JOB_NOTIFY_FIELD_START_TIME	17
+#define	JOB_NOTIFY_FIELD_UNTIL_TIME	18
+#define	JOB_NOTIFY_FIELD_TIME	19
+#define	JOB_NOTIFY_FIELD_TOTAL_PAGES	20
+#define	JOB_NOTIFY_FIELD_PAGES_PRINTED	21
+#define	JOB_NOTIFY_FIELD_TOTAL_BYTES	22
+#define	JOB_NOTIFY_FIELD_BYTES_PRINTED	23
+#define	JOB_ACCESS_ADMINISTER	16
+#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)
+#define	PRINTER_NOTIFY_OPTIONS_REFRESH	1
+#define	PRINTER_ACCESS_ADMINISTER	4
+#define	PRINTER_ACCESS_USE	8
+#define	PRINTER_ERROR_INFORMATION	0x80000000
+#define	PRINTER_ERROR_WARNING	0x40000000
+#define	PRINTER_ERROR_SEVERE	0x20000000
+#define	PRINTER_ERROR_OUTOFPAPER	1
+#define	PRINTER_ERROR_JAM	2
+#define	PRINTER_ERROR_OUTOFTONER	4
+#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	1
+#define	PRINTER_STATUS_ERROR	2
+#define	PRINTER_STATUS_PENDING_DELETION	4
+#define	PRINTER_STATUS_PAPER_JAM	8
+#define	PRINTER_STATUS_PAPER_OUT	0x10
+#define	PRINTER_STATUS_MANUAL_FEED	0x20
+#define	PRINTER_STATUS_PAPER_PROBLEM	0x40
+#define	PRINTER_STATUS_OFFLINE	0x80
+#define	PRINTER_STATUS_IO_ACTIVE	0x100
+#define	PRINTER_STATUS_BUSY	0x200
+#define	PRINTER_STATUS_PRINTING	0x400
+#define	PRINTER_STATUS_OUTPUT_BIN_FULL	0x800
+#define	PRINTER_STATUS_NOT_AVAILABLE	0x1000
+#define	PRINTER_STATUS_WAITING	0x2000
+#define	PRINTER_STATUS_PROCESSING	0x4000
+#define	PRINTER_STATUS_INITIALIZING	0x8000
+#define	PRINTER_STATUS_WARMING_UP	0x10000
+#define	PRINTER_STATUS_TONER_LOW	0x20000
+#define	PRINTER_STATUS_NO_TONER	0x40000
+#define	PRINTER_STATUS_PAGE_PUNT	0x80000
+#define	PRINTER_STATUS_USER_INTERVENTION	0x100000
+#define	PRINTER_STATUS_OUT_OF_MEMORY	0x200000
+#define	PRINTER_STATUS_DOOR_OPEN	0x400000
+#define	PRINTER_STATUS_SERVER_UNKNOWN	0x800000
+#define	PRINTER_STATUS_POWER_SAVE	0x1000000
+#define	PRINTER_ATTRIBUTE_QUEUED	1
+#define	PRINTER_ATTRIBUTE_DIRECT	2
+#define	PRINTER_ATTRIBUTE_DEFAULT	4
+#define	PRINTER_ATTRIBUTE_SHARED	8
+#define	PRINTER_ATTRIBUTE_NETWORK	0x10
+#define	PRINTER_ATTRIBUTE_HIDDEN	0x20
+#define	PRINTER_ATTRIBUTE_LOCAL	0x40
+#define	PRINTER_ATTRIBUTE_ENABLE_DEVQ	0x80
+#define	PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS	0x100
+#define	PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST	0x200
+#define	PRINTER_ATTRIBUTE_WORK_OFFLINE	0x400
+#define	PRINTER_ATTRIBUTE_ENABLE_BIDI	0x800
+#define	PRINTER_ATTRIBUTE_RAW_ONLY	0x1000
+#define	PRINTER_ATTRIBUTE_PUBLISHED	0x2000
+#define	PRINTER_ENUM_DEFAULT	1
+#define	PRINTER_ENUM_LOCAL	2
+#define	PRINTER_ENUM_CONNECTIONS	4
+#define	PRINTER_ENUM_FAVORITE	4
+#define	PRINTER_ENUM_NAME	8
+#define	PRINTER_ENUM_REMOTE	16
+#define	PRINTER_ENUM_SHARED	32
+#define	PRINTER_ENUM_NETWORK	0x40
+#define	PRINTER_ENUM_EXPAND	0x4000
+#define	PRINTER_ENUM_CONTAINER	0x8000
+#define	PRINTER_ENUM_ICONMASK	0xff0000
+#define	PRINTER_ENUM_ICON1	0x10000
+#define	PRINTER_ENUM_ICON2	0x20000
+#define	PRINTER_ENUM_ICON3	0x40000
+#define	PRINTER_ENUM_ICON4	0x80000
+#define	PRINTER_ENUM_ICON5	0x100000
+#define	PRINTER_ENUM_ICON6	0x200000
+#define	PRINTER_ENUM_ICON7	0x400000
+#define	PRINTER_ENUM_ICON8	0x800000
+#define PRINTER_NOTIFY_TYPE	0
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME	0
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME	1
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME	2
+#define PRINTER_NOTIFY_FIELD_PORT_NAME	3
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME	4
+#define PRINTER_NOTIFY_FIELD_COMMENT	5
+#define PRINTER_NOTIFY_FIELD_LOCATION	6
+#define PRINTER_NOTIFY_FIELD_DEVMODE	7
+#define PRINTER_NOTIFY_FIELD_SEPFILE	8
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR	9
+#define PRINTER_NOTIFY_FIELD_PARAMETERS	10
+#define PRINTER_NOTIFY_FIELD_DATATYPE	11
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR	12
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES	13
+#define PRINTER_NOTIFY_FIELD_PRIORITY	14
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY	15
+#define PRINTER_NOTIFY_FIELD_START_TIME	16
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME	17
+#define PRINTER_NOTIFY_FIELD_STATUS	18
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING	19
+#define PRINTER_NOTIFY_FIELD_CJOBS	20
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM	21
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES	22
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED	23
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES	24
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED	25
+#define PRINTER_CHANGE_ADD_PRINTER	1
+#define PRINTER_CHANGE_SET_PRINTER	2
+#define PRINTER_CHANGE_DELETE_PRINTER	4
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER	8
+#define PRINTER_CHANGE_PRINTER	0xFF
+#define PRINTER_CHANGE_ADD_JOB	0x100
+#define PRINTER_CHANGE_SET_JOB	0x200
+#define PRINTER_CHANGE_DELETE_JOB	0x400
+#define PRINTER_CHANGE_WRITE_JOB	0x800
+#define PRINTER_CHANGE_JOB	0xFF00
+#define PRINTER_CHANGE_ADD_FORM	0x10000
+#define PRINTER_CHANGE_SET_FORM	0x20000
+#define PRINTER_CHANGE_DELETE_FORM	0x40000
+#define PRINTER_CHANGE_FORM	0x70000
+#define PRINTER_CHANGE_ADD_PORT	0x100000
+#define PRINTER_CHANGE_CONFIGURE_PORT	0x200000
+#define PRINTER_CHANGE_DELETE_PORT	0x400000
+#define PRINTER_CHANGE_PORT	0x700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR	0x1000000
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR	0x4000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR	0x7000000
+#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
+#define PRINTER_NOTIFY_INFO_DISCARDED	1
+#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)
+#define NO_PRIORITY	0
+#define MAX_PRIORITY	99
+#define MIN_PRIORITY	1
+#define DEF_PRIORITY	1
+#define PORT_TYPE_WRITE	1
+#define PORT_TYPE_READ	2
+#define PORT_TYPE_REDIRECTED	4
+#define PORT_TYPE_NET_ATTACHED	8
+#define SERVER_ACCESS_ADMINISTER	1
+#define SERVER_ACCESS_ENUMERATE	2
+#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)
+#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
+#ifndef RC_INVOKED
+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;
+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;
+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;
+typedef struct _JOB_INFO_2A {
+	DWORD JobId;
+	LPSTR pPrinterName;
+	LPSTR pMachineName;
+	LPSTR pUserName;
+	LPSTR pDocument;
+	LPSTR pNotifyName;
+	LPSTR pDatatype;
+	LPSTR pPrintProcessor;
+	LPSTR pParameters;
+	LPSTR pDriverName;
+	LPDEVMODEA pDevMode;
+	LPSTR pStatus;
+	PSECURITY_DESCRIPTOR pSecurityDescriptor;
+	DWORD Status;
+	DWORD Priority;
+	DWORD Position;
+	DWORD StartTime;
+	DWORD UntilTime;
+	DWORD TotalPages;
+	DWORD Size;
+	SYSTEMTIME Submitted;
+	DWORD Time;
+	DWORD PagesPrinted;
+} JOB_INFO_2A,*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;
+	DWORD Time;
+	DWORD PagesPrinted;
+} JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
+typedef struct _JOB_INFO_3 { 
+	DWORD JobId; 
+	DWORD NextJobId; 
+	DWORD Reserved; 
+} JOB_INFO_3,*PJOB_INFO_3,*LPJOB_INFO_3; 
+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;
+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;
+typedef	struct	_DRIVER_INFO_1A	{LPSTR	pName;} DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A;
+typedef	struct	_DRIVER_INFO_1W	{LPWSTR	pName;} DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
+typedef	struct	_DRIVER_INFO_2A	{
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+} DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A;
+typedef	struct	_DRIVER_INFO_2W	{
+	DWORD cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+}	DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
+typedef	struct	_DRIVER_INFO_3A	{
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+	LPSTR pHelpFile;
+	LPSTR pDependentFiles;
+	LPSTR pMonitorName;
+	LPSTR pDefaultDataType;
+} DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A;
+typedef	struct	_DRIVER_INFO_3W	{
+	DWORD cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+	LPWSTR pHelpFile;
+	LPWSTR pDependentFiles;
+	LPWSTR pMonitorName;
+	LPWSTR pDefaultDataType;
+} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
+#if (_WIN32_WINNT >= 0x0500)
+typedef	struct	_DRIVER_INFO_4A {
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+	LPSTR pHelpFile;
+	LPSTR pDependentFiles;  	
+	LPSTR pMonitorName;
+	LPSTR pDefaultDataType;
+	LPSTR pszzPreviousNames;
+} DRIVER_INFO_4A,*PDRIVER_INFO_4A,*LPDRIVER_INFO_4A;
+typedef	struct	_DRIVER_INFO_4W {
+	DWORD cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+	LPWSTR pHelpFile;
+	LPWSTR pDependentFiles;
+	LPWSTR pMonitorName;
+	LPWSTR pDefaultDataType;
+	LPWSTR pszzPreviousNames;
+} DRIVER_INFO_4W,*PDRIVER_INFO_4W,*LPDRIVER_INFO_4W;
+typedef	struct	_DRIVER_INFO_5A {
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+	DWORD dwDriverAttributes;
+	DWORD dwConfigVersion;
+	DWORD dwDriverVersion;
+} DRIVER_INFO_5A,*PDRIVER_INFO_5A,*LPDRIVER_INFO_5A;
+typedef	struct	_DRIVER_INFO_5W {
+	DWORD cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+	DWORD dwDriverAttributes;
+	DWORD dwConfigVersion;
+	DWORD dwDriverVersion;
+} DRIVER_INFO_5W,*PDRIVER_INFO_5W,*LPDRIVER_INFO_5W;
+typedef	struct	_DRIVER_INFO_6A {
+	DWORD cVersion;
+	LPSTR pName;
+	LPSTR pEnvironment;
+	LPSTR pDriverPath;
+	LPSTR pDataFile;
+	LPSTR pConfigFile;
+	LPSTR pHelpFile;
+	LPSTR pDependentFiles;
+	LPSTR pMonitorName;
+	LPSTR pDefaultDataType;
+	LPSTR pszzPreviousNames;
+	FILETIME ftDriverDate;
+	DWORDLONG dwlDriverVersion;
+	LPSTR pszMfgName;
+	LPSTR pszOEMUrl;
+	LPSTR pszHardwareID;
+	LPSTR pszProvider;
+} DRIVER_INFO_6A,*PDRIVER_INFO_6A,*LPDRIVER_INFO_6A;
+typedef	struct	_DRIVER_INFO_6W {
+	DWORD cVersion;
+	LPWSTR pName;
+	LPWSTR pEnvironment;
+	LPWSTR pDriverPath;
+	LPWSTR pDataFile;
+	LPWSTR pConfigFile;
+	LPWSTR pHelpFile;
+	LPWSTR pDependentFiles;
+	LPWSTR pMonitorName;
+	LPWSTR pDefaultDataType;
+	LPWSTR pszzPreviousNames;
+	FILETIME ftDriverDate;
+	DWORDLONG dwlDriverVersion;
+	LPWSTR pszMfgName;
+	LPWSTR pszOEMUrl;
+	LPWSTR pszHardwareID;
+	LPWSTR pszProvider;
+} DRIVER_INFO_6W,*PDRIVER_INFO_6W,*LPDRIVER_INFO_6W;
+#endif
+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;
+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;
+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;
+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;
+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;
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _PRINTER_ENUM_VALUESA {
+	LPSTR pValueName;
+	DWORD cbValueName;
+	DWORD dwType;
+	LPBYTE pData;
+	DWORD cbData;
+} PRINTER_ENUM_VALUESA,*PPRINTER_ENUM_VALUESA,*LPRINTER_ENUM_VALUESA;
+typedef struct _PRINTER_ENUM_VALUESW {
+	LPWSTR pValueName;
+	DWORD cbValueName;
+	DWORD dwType;
+	LPBYTE pData;
+	DWORD cbData;
+} PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPRINTER_ENUM_VALUESW;
+#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;
+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;
+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;
+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;
+typedef struct _PRINTER_INFO_6 {
+	DWORD	dwStatus;
+} PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6;
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct _PRINTER_INFO_7A {
+	LPWSTR pszObjectGUID;
+	DWORD dwAction;
+} PRINTER_INFO_7A,*PPRINTER_INFO_7A,*LPPRINTER_INFO_7A;
+typedef struct _PRINTER_INFO_7W {
+	LPWSTR pszObjectGUID;
+	DWORD dwAction;
+} PRINTER_INFO_7W,*PPRINTER_INFO_7W,*LPPRINTER_INFO_7W;
+typedef struct _PRINTER_INFO_8 {
+	LPDEVMODE pDevMode;
+} PRINTER_INFO_8,*PPRINTER_INFO_8,*LPPRINTER_INFO_8;
+typedef struct _PRINTER_INFO_9 {
+	LPDEVMODE pDevMode;
+} PRINTER_INFO_9,*PPRINTER_INFO_9,*LPPRINTER_INFO_9;
+#endif
+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;
+typedef	struct	_PRINTER_NOTIFY_INFO_DATA {
+	WORD Type;
+	WORD Field;
+	DWORD Reserved;
+	DWORD Id;
+	union {
+		DWORD adwData[2];
+		struct {
+			DWORD cbBuf;
+			PVOID 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;
+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;
+typedef	struct _PRINTER_DEFAULTSA {
+	LPSTR pDatatype;
+	LPDEVMODE pDevMode;
+	ACCESS_MASK	DesiredAccess;
+} PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
+typedef	struct _PRINTER_DEFAULTSW {
+	LPWSTR pDatatype;
+	LPDEVMODE pDevMode;
+	ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
+#if (_WIN32_WINNT >= 0x0500)
+typedef	struct _PRINTPROCESSOR_CAPS_1 {
+	DWORD dwLevel;
+	DWORD dwNupOptions;
+	DWORD dwPageOrderFlags;
+	DWORD dwNumberOfCopies;
+} PRINTPROCESSOR_CAPS_1,*PPRINTPROCESSOR_CAPS_1,*LPPRINTPROCESSOR_CAPS_1;
+#endif
+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;
+typedef	struct _PROVIDOR_INFO_2A {
+	LPSTR pOrder;
+} PROVIDOR_INFO_2A,*PPROVIDOR_INFO_2A,*LPROVIDOR_INFO_2A;
+typedef	struct _PROVIDOR_INFO_2W {
+	LPWSTR pOrder;
+} PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPROVIDOR_INFO_2W;
+
+BOOL WINAPI AbortPrinter(HANDLE);
+BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddMonitorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddMonitorW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI AddPortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI AddPrinterA(LPSTR,DWORD,PBYTE);
+HANDLE WINAPI AddPrinterW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterConnectionA(LPSTR);
+BOOL WINAPI AddPrinterConnectionW(LPWSTR);
+BOOL WINAPI AddPrinterDriverA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterDriverW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR);
+BOOL WINAPI AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI AddPrintProvidorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProvidorW(LPWSTR,DWORD,PBYTE);
+LONG WINAPI AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA);
+LONG WINAPI AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW);
+BOOL WINAPI ClosePrinter(HANDLE);
+BOOL WINAPI ConfigurePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI ConfigurePortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI ConnectToPrinterDlg(HWND,DWORD);
+BOOL WINAPI DeleteFormA(HANDLE,LPSTR);
+BOOL WINAPI DeleteFormW(HANDLE,LPWSTR);
+BOOL WINAPI DeleteMonitorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI DeletePortW(LPWSTR,HWND,LPWSTR);
+BOOL WINAPI DeletePrinter(HANDLE);
+BOOL WINAPI DeletePrinterConnectionA(LPSTR);
+BOOL WINAPI DeletePrinterConnectionW(LPWSTR);
+DWORD WINAPI DeletePrinterDataA(HANDLE,LPSTR);
+DWORD WINAPI DeletePrinterDataW(HANDLE,LPWSTR);
+BOOL WINAPI DeletePrinterDriverA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProcessorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProvidorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR);
+LONG WINAPI DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD);
+LONG WINAPI DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEW,PDEVMODEW,DWORD);
+BOOL WINAPI EndDocPrinter(HANDLE);
+BOOL WINAPI EndPagePrinter(HANDLE);
+BOOL WINAPI EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI FindClosePrinterChangeNotification(HANDLE);
+HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID);
+HANDLE WINAPI FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*);
+BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
+#if _WIN32_WINNT >= 0x0500
+BOOL WINAPI GetDefaultPrinterA(LPSTR,LPDWORD);
+BOOL WINAPI GetDefaultPrinterW(LPWSTR,LPDWORD);
+#endif
+BOOL WINAPI GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
+DWORD WINAPI PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD);
+DWORD WINAPI PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD);
+BOOL WINAPI PrinterProperties(HWND,HANDLE);
+BOOL WINAPI ReadPrinter(HANDLE,PVOID,DWORD,PDWORD);
+BOOL WINAPI ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW);
+BOOL WINAPI ScheduleJob(HANDLE,DWORD);
+BOOL WINAPI SetFormA(HANDLE,LPSTR,DWORD,PBYTE);
+BOOL WINAPI SetFormW(HANDLE,LPWSTR,DWORD,PBYTE);
+BOOL WINAPI SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterA(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterW(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD);
+DWORD WINAPI StartDocPrinterA(HANDLE,DWORD,PBYTE);
+DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI StartPagePrinter(HANDLE);
+DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD);
+BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD);
+
+#ifdef UNICODE
+typedef JOB_INFO_1W JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2W JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1W ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1W DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1W MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2W MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1W DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2W DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1W PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_1W DRIVER_INFO_1,*PDRIVER_INFO_1,*LPDRIVER_INFO_1;
+typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef DRIVER_INFO_3W DRIVER_INFO_3,*PDRIVER_INFO_3,*LPDRIVER_INFO_3;
+#if (_WIN32_WINNT >= 0x0500)
+typedef DRIVER_INFO_4W DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
+typedef DRIVER_INFO_5W DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
+typedef DRIVER_INFO_6W DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
+typedef PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES,*PPRINTER_ENUM_VALUES,*LPRINTER_ENUM_VALUES;
+#endif
+typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5W PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+#if (_WIN32_WINNT >= 0x0500)
+typedef PRINTER_INFO_7W PRINTER_INFO_7,*PPRINTER_INFO_7,*LPPRINTER_INFO_7;
+#endif
+typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1W FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+typedef PROVIDOR_INFO_1W PROVIDOR_INFO_1,*PPROVIDOR_INFO_1,*LPROVIDOR_INFO_1;
+typedef PROVIDOR_INFO_2W PROVIDOR_INFO_2,*PPROVIDOR_INFO_2,*LPROVIDOR_INFO_2;
+#define AddForm AddFormW
+#define AddJob AddJobW
+#define AddMonitor AddMonitorW
+#define AddPort AddPortW
+#define AddPrinter AddPrinterW
+#define AddPrinterConnection AddPrinterConnectionW
+#define AddPrinterDriver AddPrinterDriverW
+#define AddPrintProcessor AddPrintProcessorW
+#define AddPrintProvidor AddPrintProvidorW
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
+#define ConfigurePort ConfigurePortW
+#define DeleteForm DeleteFormW
+#define DeleteMonitor DeleteMonitorW
+#define DeletePort DeletePortW
+#define DeletePrinterConnection DeletePrinterConnectionW
+#define DeletePrinterData DeletePrinterDataW
+#define DeletePrinterDriver DeletePrinterDriverW
+#define DeletePrintProcessor DeletePrinterProcessorW
+#define DeletePrintProvidor DeletePrinterProvidorW
+#define DocumentProperties DocumentPropertiesW
+#define EnumForms EnumFormsW
+#define EnumJobs EnumJobsW
+#define EnumMonitors EnumMonitorsW
+#define EnumPorts EnumPortsW
+#define EnumPrinterData EnumPrinterDataW
+#define EnumPrinterDrivers EnumPrinterDriversW
+#define EnumPrinters EnumPrintersW
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
+#define EnumPrintProcessors EnumPrintProcessorsW
+#define GetDefaultPrinter GetDefaultPrinterW
+#define	GetForm	GetFormW
+#define GetJob GetJobW
+#define GetPrinter GetPrinterW
+#define GetPrinterData GetPrinterDataW
+#define GetPrinterDriver GetPrinterDriverW
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
+#define OpenPrinter OpenPrinterW
+#define PrinterMessageBox PrinterMessageBoxW
+#define ResetPrinter ResetPrinterW
+#define SetForm SetFormW
+#define SetJob SetJobW
+#define SetPrinter SetPrinterW
+#define SetPrinterData SetPrinterDataW
+#define StartDocPrinter StartDocPrinterW
+#else
+typedef JOB_INFO_1A JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2A JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1A ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1A DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1A MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2A MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1A DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2A DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_1A DRIVER_INFO_1,*PDRIVER_INFO_1,*LPDRIVER_INFO_1;
+typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef DRIVER_INFO_3A DRIVER_INFO_3,*PDRIVER_INFO_3,*LPDRIVER_INFO_3;
+#if (_WIN32_WINNT >= 0x0500)
+typedef DRIVER_INFO_4A DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
+typedef DRIVER_INFO_5A DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
+typedef DRIVER_INFO_6A DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
+typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES,*PPRINTER_ENUM_VALUES,*LPRINTER_ENUM_VALUES;
+#endif
+typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5A PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+#if (_WIN32_WINNT >= 0x0500)
+typedef PRINTER_INFO_7A PRINTER_INFO_7,*PPRINTER_INFO_7,*LPPRINTER_INFO_7;
+#endif
+typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1A FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1,*PPROVIDOR_INFO_1,*LPROVIDOR_INFO_1;
+typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2,*PPROVIDOR_INFO_2,*LPROVIDOR_INFO_2;
+#define AddForm AddFormA
+#define AddJob AddJobA
+#define AddMonitor AddMonitorA
+#define AddPort AddPortA
+#define AddPrinter AddPrinterA
+#define AddPrinterConnection AddPrinterConnectionA
+#define AddPrinterDriver AddPrinterDriverA
+#define AddPrintProcessor AddPrintProcessorA
+#define AddPrintProvidor AddPrintProvidorA
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
+#define ConfigurePort ConfigurePortA
+#define DeleteForm DeleteFormA
+#define DeleteMonitor DeleteMonitorA
+#define DeletePort DeletePortA
+#define DeletePrinterConnection DeletePrinterConnectionA
+#define DeletePrinterData DeletePrinterDataA
+#define DeletePrinterDriver DeletePrinterDriverA
+#define DeletePrintProcessor DeletePrinterProcessorA
+#define DeletePrintProvidor DeletePrinterProvidorA
+#define DocumentProperties DocumentPropertiesA
+#define EnumForms EnumFormsA
+#define EnumJobs EnumJobsA
+#define EnumMonitors EnumMonitorsA
+#define EnumPorts EnumPortsA
+#define EnumPrinterData EnumPrinterDataA
+#define EnumPrinterDrivers EnumPrinterDriversA
+#define EnumPrinters EnumPrintersA
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
+#define EnumPrintProcessors EnumPrintProcessorsA
+#define GetDefaultPrinter GetDefaultPrinterA
+#define	GetForm	GetFormA
+#define GetJob GetJobA
+#define GetPrinter GetPrinterA
+#define GetPrinterData GetPrinterDataA
+#define GetPrinterDriver GetPrinterDriverA
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
+#define OpenPrinter OpenPrinterA
+#define PrinterMessageBox PrinterMessageBoxA
+#define ResetPrinter ResetPrinterA
+#define SetForm SetFormA
+#define SetJob SetJobA
+#define SetPrinter SetPrinterA
+#define SetPrinterData SetPrinterDataA
+#define StartDocPrinter StartDocPrinterA
+#endif
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif