ReactOS 0.4.15-dev-7968-g24a56f8
winspool.h File Reference
#include <_mingw_unicode.h>
Include dependency graph for winspool.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _PRINTER_INFO_1A
 
struct  _PRINTER_INFO_1W
 
struct  _PRINTER_INFO_2A
 
struct  _PRINTER_INFO_2W
 
struct  _PRINTER_INFO_3
 
struct  _PRINTER_INFO_4A
 
struct  _PRINTER_INFO_4W
 
struct  _PRINTER_INFO_5A
 
struct  _PRINTER_INFO_5W
 
struct  _PRINTER_INFO_6
 
struct  _PRINTER_INFO_7A
 
struct  _PRINTER_INFO_7W
 
struct  _PRINTER_INFO_8A
 
struct  _PRINTER_INFO_8W
 
struct  _PRINTER_INFO_9A
 
struct  _PRINTER_INFO_9W
 
struct  _JOB_INFO_1A
 
struct  _JOB_INFO_1W
 
struct  _JOB_INFO_2A
 
struct  _JOB_INFO_2W
 
struct  _JOB_INFO_3
 
struct  _ADDJOB_INFO_1A
 
struct  _ADDJOB_INFO_1W
 
struct  _DRIVER_INFO_1A
 
struct  _DRIVER_INFO_1W
 
struct  _DRIVER_INFO_2A
 
struct  _DRIVER_INFO_2W
 
struct  _DRIVER_INFO_3A
 
struct  _DRIVER_INFO_3W
 
struct  _DRIVER_INFO_4A
 
struct  _DRIVER_INFO_4W
 
struct  _DRIVER_INFO_5A
 
struct  _DRIVER_INFO_5W
 
struct  _DRIVER_INFO_6A
 
struct  _DRIVER_INFO_6W
 
struct  _DRIVER_INFO_8W
 
struct  _DRIVER_INFO_8A
 
struct  _DOC_INFO_1A
 
struct  _DOC_INFO_1W
 
struct  _FORM_INFO_1A
 
struct  _FORM_INFO_1W
 
struct  _FORM_INFO_2A
 
struct  _FORM_INFO_2W
 
struct  _DOC_INFO_2A
 
struct  _DOC_INFO_2W
 
struct  _DOC_INFO_3A
 
struct  _DOC_INFO_3W
 
struct  _PRINTPROCESSOR_INFO_1A
 
struct  _PRINTPROCESSOR_INFO_1W
 
struct  _PRINTPROCESSOR_CAPS_1
 
struct  _PORT_INFO_1A
 
struct  _PORT_INFO_1W
 
struct  _PORT_INFO_2A
 
struct  _PORT_INFO_2W
 
struct  _PORT_INFO_3A
 
struct  _PORT_INFO_3W
 
struct  _MONITOR_INFO_1A
 
struct  _MONITOR_INFO_1W
 
struct  _MONITOR_INFO_2A
 
struct  _MONITOR_INFO_2W
 
struct  _DATATYPES_INFO_1A
 
struct  _DATATYPES_INFO_1W
 
struct  _PRINTER_DEFAULTSA
 
struct  _PRINTER_DEFAULTSW
 
struct  _PRINTER_ENUM_VALUESA
 
struct  _PRINTER_ENUM_VALUESW
 
struct  _PRINTER_NOTIFY_OPTIONS_TYPE
 
struct  _PRINTER_NOTIFY_OPTIONS
 
struct  _PRINTER_NOTIFY_INFO_DATA
 
struct  _PRINTER_NOTIFY_INFO
 
struct  _BINARY_CONTAINER
 
struct  _BIDI_DATA
 
struct  _BIDI_REQUEST_DATA
 
struct  _BIDI_REQUEST_CONTAINER
 
struct  _BIDI_RESPONSE_DATA
 
struct  _BIDI_RESPONSE_CONTAINER
 
struct  _PROVIDOR_INFO_1A
 
struct  _PROVIDOR_INFO_1W
 
struct  _PROVIDOR_INFO_2A
 
struct  _PROVIDOR_INFO_2W
 

Macros

#define DSPRINT_PUBLISH   0x00000001
 
#define DSPRINT_UPDATE   0x00000002
 
#define DSPRINT_UNPUBLISH   0x00000004
 
#define DSPRINT_REPUBLISH   0x00000008
 
#define DSPRINT_PENDING   0x80000000
 
#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 PRINTER_ATTRIBUTE_PUBLISHED   0x00002000
 
#define PRINTER_ATTRIBUTE_FAX   0x00004000
 
#define PRINTER_ATTRIBUTE_TS   0x00008000
 
#define NO_PRIORITY   0
 
#define MAX_PRIORITY   99
 
#define MIN_PRIORITY   1
 
#define DEF_PRIORITY   1
 
#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_STATUS_COMPLETE   0x00001000
 
#define JOB_POSITION_UNSPECIFIED   0
 
#define DRIVER_KERNELMODE   0x00000001
 
#define DRIVER_USERMODE   0x00000002
 
#define DPD_DELETE_UNUSED_FILES   0x00000001
 
#define DPD_DELETE_SPECIFIC_VERSION   0x00000002
 
#define DPD_DELETE_ALL_FILES   0x00000004
 
#define APD_STRICT_UPGRADE   0x00000001
 
#define APD_STRICT_DOWNGRADE   0x00000002
 
#define APD_COPY_ALL_FILES   0x00000004
 
#define APD_COPY_NEW_FILES   0x00000008
 
#define APD_COPY_FROM_DIRECTORY   0x00000010
 
#define STRING_NONE   0x00000001
 
#define STRING_MUIDLL   0x00000002
 
#define STRING_LANGPAIR   0x00000004
 
#define DI_CHANNEL   1
 
#define DI_READ_SPOOL_JOB   3
 
#define DI_MEMORYMAP_WRITE   0x00000001
 
#define FORM_USER   0x00000000
 
#define FORM_BUILTIN   0x00000001
 
#define FORM_PRINTER   0x00000002
 
#define NORMAL_PRINT   0x00000000
 
#define REVERSE_PRINT   0x00000001
 
#define PORT_TYPE_WRITE   0x0001
 
#define PORT_TYPE_READ   0x0002
 
#define PORT_TYPE_REDIRECTED   0x0004
 
#define PORT_TYPE_NET_ATTACHED   0x0008
 
#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
 
#define EnumPrinters   __MINGW_NAME_AW(EnumPrinters)
 
#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
 
#define PRINTER_ENUM_HIDE   0x01000000
 
#define SPOOL_FILE_PERSISTENT   0x00000001
 
#define SPOOL_FILE_TEMPORARY   0x00000002
 
#define OpenPrinter   __MINGW_NAME_AW(OpenPrinter)
 
#define ResetPrinter   __MINGW_NAME_AW(ResetPrinter)
 
#define SetJob   __MINGW_NAME_AW(SetJob)
 
#define GetJob   __MINGW_NAME_AW(GetJob)
 
#define EnumJobs   __MINGW_NAME_AW(EnumJobs)
 
#define AddPrinter   __MINGW_NAME_AW(AddPrinter)
 
#define SetPrinter   __MINGW_NAME_AW(SetPrinter)
 
#define GetPrinter   __MINGW_NAME_AW(GetPrinter)
 
#define AddPrinterDriver   __MINGW_NAME_AW(AddPrinterDriver)
 
#define AddPrinterDriverEx   __MINGW_NAME_AW(AddPrinterDriverEx)
 
#define EnumPrinterDrivers   __MINGW_NAME_AW(EnumPrinterDrivers)
 
#define GetPrinterDriver   __MINGW_NAME_AW(GetPrinterDriver)
 
#define GetPrinterDriverDirectory   __MINGW_NAME_AW(GetPrinterDriverDirectory)
 
#define DeletePrinterDriver   __MINGW_NAME_AW(DeletePrinterDriver)
 
#define DeletePrinterDriverEx   __MINGW_NAME_AW(DeletePrinterDriverEx)
 
#define AddPrintProcessor   __MINGW_NAME_AW(AddPrintProcessor)
 
#define EnumPrintProcessors   __MINGW_NAME_AW(EnumPrintProcessors)
 
#define GetPrintProcessorDirectory   __MINGW_NAME_AW(GetPrintProcessorDirectory)
 
#define EnumPrintProcessorDatatypes   __MINGW_NAME_AW(EnumPrintProcessorDatatypes)
 
#define DeletePrintProcessor   __MINGW_NAME_AW(DeletePrintProcessor)
 
#define StartDocPrinter   __MINGW_NAME_AW(StartDocPrinter)
 
#define AddJob   __MINGW_NAME_AW(AddJob)
 
#define DocumentProperties   __MINGW_NAME_AW(DocumentProperties)
 
#define AdvancedDocumentProperties   __MINGW_NAME_AW(AdvancedDocumentProperties)
 
#define GetPrinterData   __MINGW_NAME_AW(GetPrinterData)
 
#define GetPrinterDataEx   __MINGW_NAME_AW(GetPrinterDataEx)
 
#define EnumPrinterData   __MINGW_NAME_AW(EnumPrinterData)
 
#define EnumPrinterDataEx   __MINGW_NAME_AW(EnumPrinterDataEx)
 
#define EnumPrinterKey   __MINGW_NAME_AW(EnumPrinterKey)
 
#define SetPrinterData   __MINGW_NAME_AW(SetPrinterData)
 
#define SetPrinterDataEx   __MINGW_NAME_AW(SetPrinterDataEx)
 
#define DeletePrinterData   __MINGW_NAME_AW(DeletePrinterData)
 
#define DeletePrinterDataEx   __MINGW_NAME_AW(DeletePrinterDataEx)
 
#define DeletePrinterKey   __MINGW_NAME_AW(DeletePrinterKey)
 
#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 PRINTER_NOTIFY_FIELD_OBJECT_GUID   0x1A
 
#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
 
#define PRINTER_NOTIFY_OPTIONS_REFRESH   0x01
 
#define PRINTER_NOTIFY_INFO_DISCARDED   0x01
 
#define BIDI_ACTION_ENUM_SCHEMA   L"EnumSchema"
 
#define BIDI_ACTION_GET   L"Get"
 
#define BIDI_ACTION_SET   L"Set"
 
#define BIDI_ACTION_GET_ALL   L"GetAll"
 
#define BIDI_ACCESS_ADMINISTRATOR   0x1
 
#define BIDI_ACCESS_USER   0x2
 
#define ERROR_BIDI_STATUS_OK   0
 
#define ERROR_BIDI_NOT_SUPPORTED   ERROR_NOT_SUPPORTED
 
#define ERROR_BIDI_ERROR_BASE   13000
 
#define ERROR_BIDI_STATUS_WARNING   (ERROR_BIDI_ERROR_BASE + 1)
 
#define ERROR_BIDI_SCHEMA_READ_ONLY   (ERROR_BIDI_ERROR_BASE + 2)
 
#define ERROR_BIDI_SERVER_OFFLINE   (ERROR_BIDI_ERROR_BASE + 3)
 
#define ERROR_BIDI_DEVICE_OFFLINE   (ERROR_BIDI_ERROR_BASE + 4)
 
#define ERROR_BIDI_SCHEMA_NOT_SUPPORTED   (ERROR_BIDI_ERROR_BASE + 5)
 
#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
 
#define PrinterMessageBox   __MINGW_NAME_AW(PrinterMessageBox)
 
#define AddForm   __MINGW_NAME_AW(AddForm)
 
#define DeleteForm   __MINGW_NAME_AW(DeleteForm)
 
#define GetForm   __MINGW_NAME_AW(GetForm)
 
#define SetForm   __MINGW_NAME_AW(SetForm)
 
#define EnumForms   __MINGW_NAME_AW(EnumForms)
 
#define EnumMonitors   __MINGW_NAME_AW(EnumMonitors)
 
#define AddMonitor   __MINGW_NAME_AW(AddMonitor)
 
#define DeleteMonitor   __MINGW_NAME_AW(DeleteMonitor)
 
#define EnumPorts   __MINGW_NAME_AW(EnumPorts)
 
#define AddPort   __MINGW_NAME_AW(AddPort)
 
#define ConfigurePort   __MINGW_NAME_AW(ConfigurePort)
 
#define DeletePort   __MINGW_NAME_AW(DeletePort)
 
#define GetDefaultPrinter   __MINGW_NAME_AW(GetDefaultPrinter)
 
#define SetDefaultPrinter   __MINGW_NAME_AW(SetDefaultPrinter)
 
#define SetPort   __MINGW_NAME_AW(SetPort)
 
#define AddPrinterConnection   __MINGW_NAME_AW(AddPrinterConnection)
 
#define DeletePrinterConnection   __MINGW_NAME_AW(DeletePrinterConnection)
 
#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
 
#define XcvData   XcvDataW
 
#define AddPrintProvidor   __MINGW_NAME_AW(AddPrintProvidor)
 
#define DeletePrintProvidor   __MINGW_NAME_AW(DeletePrintProvidor)
 
#define IsValidDevmode   __MINGW_NAME_AW(IsValidDevmode)
 
#define SPLREG_DEFAULT_SPOOL_DIRECTORY   TEXT("DefaultSpoolDirectory")
 
#define SPLREG_PORT_THREAD_PRIORITY_DEFAULT   TEXT("PortThreadPriorityDefault")
 
#define SPLREG_PORT_THREAD_PRIORITY   TEXT("PortThreadPriority")
 
#define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT   TEXT("SchedulerThreadPriorityDefault")
 
#define SPLREG_SCHEDULER_THREAD_PRIORITY   TEXT("SchedulerThreadPriority")
 
#define SPLREG_BEEP_ENABLED   TEXT("BeepEnabled")
 
#define SPLREG_NET_POPUP   TEXT("NetPopup")
 
#define SPLREG_RETRY_POPUP   TEXT("RetryPopup")
 
#define SPLREG_NET_POPUP_TO_COMPUTER   TEXT("NetPopupToComputer")
 
#define SPLREG_EVENT_LOG   TEXT("EventLog")
 
#define SPLREG_MAJOR_VERSION   TEXT("MajorVersion")
 
#define SPLREG_MINOR_VERSION   TEXT("MinorVersion")
 
#define SPLREG_ARCHITECTURE   TEXT("Architecture")
 
#define SPLREG_OS_VERSION   TEXT("OSVersion")
 
#define SPLREG_OS_VERSIONEX   TEXT("OSVersionEx")
 
#define SPLREG_DS_PRESENT   TEXT("DsPresent")
 
#define SPLREG_DS_PRESENT_FOR_USER   TEXT("DsPresentForUser")
 
#define SPLREG_REMOTE_FAX   TEXT("RemoteFax")
 
#define SPLREG_RESTART_JOB_ON_POOL_ERROR   TEXT("RestartJobOnPoolError")
 
#define SPLREG_RESTART_JOB_ON_POOL_ENABLED   TEXT("RestartJobOnPoolEnabled")
 
#define SPLREG_DNS_MACHINE_NAME   TEXT("DNSMachineName")
 
#define SPLREG_ALLOW_USER_MANAGEFORMS   TEXT("AllowUserManageForms")
 
#define SPLREG_WEBSHAREMGMT   TEXT("WebShareMgmt")
 
#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
 
#define JOB_ACCESS_READ   0x00000020
 
#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 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 JOB_ALL_ACCESS   (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER | JOB_ACCESS_READ)
 
#define JOB_READ   (STANDARD_RIGHTS_READ | JOB_ACCESS_READ)
 
#define JOB_WRITE   (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER)
 
#define JOB_EXECUTE   (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER)
 
#define SPLDS_SPOOLER_KEY   TEXT("DsSpooler")
 
#define SPLDS_DRIVER_KEY   TEXT("DsDriver")
 
#define SPLDS_USER_KEY   TEXT("DsUser")
 
#define SPLDS_ASSET_NUMBER   TEXT("assetNumber")
 
#define SPLDS_BYTES_PER_MINUTE   TEXT("bytesPerMinute")
 
#define SPLDS_DESCRIPTION   TEXT("description")
 
#define SPLDS_DRIVER_NAME   TEXT("driverName")
 
#define SPLDS_DRIVER_VERSION   TEXT("driverVersion")
 
#define SPLDS_LOCATION   TEXT("location")
 
#define SPLDS_PORT_NAME   TEXT("portName")
 
#define SPLDS_PRINT_ATTRIBUTES   TEXT("printAttributes")
 
#define SPLDS_PRINT_BIN_NAMES   TEXT("printBinNames")
 
#define SPLDS_PRINT_COLLATE   TEXT("printCollate")
 
#define SPLDS_PRINT_COLOR   TEXT("printColor")
 
#define SPLDS_PRINT_DUPLEX_SUPPORTED   TEXT("printDuplexSupported")
 
#define SPLDS_PRINT_END_TIME   TEXT("printEndTime")
 
#define SPLDS_PRINTER_CLASS   TEXT("printQueue")
 
#define SPLDS_PRINTER_NAME   TEXT("printerName")
 
#define SPLDS_PRINT_KEEP_PRINTED_JOBS   TEXT("printKeepPrintedJobs")
 
#define SPLDS_PRINT_LANGUAGE   TEXT("printLanguage")
 
#define SPLDS_PRINT_MAC_ADDRESS   TEXT("printMACAddress")
 
#define SPLDS_PRINT_MAX_X_EXTENT   TEXT("printMaxXExtent")
 
#define SPLDS_PRINT_MAX_Y_EXTENT   TEXT("printMaxYExtent")
 
#define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED   TEXT("printMaxResolutionSupported")
 
#define SPLDS_PRINT_MEDIA_READY   TEXT("printMediaReady")
 
#define SPLDS_PRINT_MEDIA_SUPPORTED   TEXT("printMediaSupported")
 
#define SPLDS_PRINT_MEMORY   TEXT("printMemory")
 
#define SPLDS_PRINT_MIN_X_EXTENT   TEXT("printMinXExtent")
 
#define SPLDS_PRINT_MIN_Y_EXTENT   TEXT("printMinYExtent")
 
#define SPLDS_PRINT_NETWORK_ADDRESS   TEXT("printNetworkAddress")
 
#define SPLDS_PRINT_NOTIFY   TEXT("printNotify")
 
#define SPLDS_PRINT_NUMBER_UP   TEXT("printNumberUp")
 
#define SPLDS_PRINT_ORIENTATIONS_SUPPORTED   TEXT("printOrientationsSupported")
 
#define SPLDS_PRINT_OWNER   TEXT("printOwner")
 
#define SPLDS_PRINT_PAGES_PER_MINUTE   TEXT("printPagesPerMinute")
 
#define SPLDS_PRINT_RATE   TEXT("printRate")
 
#define SPLDS_PRINT_RATE_UNIT   TEXT("printRateUnit")
 
#define SPLDS_PRINT_SEPARATOR_FILE   TEXT("printSeparatorFile")
 
#define SPLDS_PRINT_SHARE_NAME   TEXT("printShareName")
 
#define SPLDS_PRINT_SPOOLING   TEXT("printSpooling")
 
#define SPLDS_PRINT_STAPLING_SUPPORTED   TEXT("printStaplingSupported")
 
#define SPLDS_PRINT_START_TIME   TEXT("printStartTime")
 
#define SPLDS_PRINT_STATUS   TEXT("printStatus")
 
#define SPLDS_PRIORITY   TEXT("priority")
 
#define SPLDS_SERVER_NAME   TEXT("serverName")
 
#define SPLDS_SHORT_SERVER_NAME   TEXT("shortServerName")
 
#define SPLDS_UNC_NAME   TEXT("uNCName")
 
#define SPLDS_URL   TEXT("url")
 
#define SPLDS_FLAGS   TEXT("flags")
 
#define SPLDS_VERSION_NUMBER   TEXT("versionNumber")
 
#define SPLDS_PRINTER_NAME_ALIASES   TEXT("printerNameAliases")
 
#define SPLDS_PRINTER_LOCATIONS   TEXT("printerLocations")
 
#define SPLDS_PRINTER_MODEL   TEXT("printerModel")
 

Typedefs

typedef struct _PRINTER_INFO_1A PRINTER_INFO_1A
 
typedef struct _PRINTER_INFO_1APPRINTER_INFO_1A
 
typedef struct _PRINTER_INFO_1ALPPRINTER_INFO_1A
 
typedef struct _PRINTER_INFO_1W PRINTER_INFO_1W
 
typedef struct _PRINTER_INFO_1WPPRINTER_INFO_1W
 
typedef struct _PRINTER_INFO_1WLPPRINTER_INFO_1W
 
typedef struct _PRINTER_INFO_2A PRINTER_INFO_2A
 
typedef struct _PRINTER_INFO_2APPRINTER_INFO_2A
 
typedef struct _PRINTER_INFO_2ALPPRINTER_INFO_2A
 
typedef struct _PRINTER_INFO_2W PRINTER_INFO_2W
 
typedef struct _PRINTER_INFO_2WPPRINTER_INFO_2W
 
typedef struct _PRINTER_INFO_2WLPPRINTER_INFO_2W
 
typedef struct _PRINTER_INFO_3 PRINTER_INFO_3
 
typedef struct _PRINTER_INFO_3PPRINTER_INFO_3
 
typedef struct _PRINTER_INFO_3LPPRINTER_INFO_3
 
typedef struct _PRINTER_INFO_4A PRINTER_INFO_4A
 
typedef struct _PRINTER_INFO_4APPRINTER_INFO_4A
 
typedef struct _PRINTER_INFO_4ALPPRINTER_INFO_4A
 
typedef struct _PRINTER_INFO_4W PRINTER_INFO_4W
 
typedef struct _PRINTER_INFO_4WPPRINTER_INFO_4W
 
typedef struct _PRINTER_INFO_4WLPPRINTER_INFO_4W
 
typedef struct _PRINTER_INFO_5A PRINTER_INFO_5A
 
typedef struct _PRINTER_INFO_5APPRINTER_INFO_5A
 
typedef struct _PRINTER_INFO_5ALPPRINTER_INFO_5A
 
typedef struct _PRINTER_INFO_5W PRINTER_INFO_5W
 
typedef struct _PRINTER_INFO_5WPPRINTER_INFO_5W
 
typedef struct _PRINTER_INFO_5WLPPRINTER_INFO_5W
 
typedef struct _PRINTER_INFO_6 PRINTER_INFO_6
 
typedef struct _PRINTER_INFO_6PPRINTER_INFO_6
 
typedef struct _PRINTER_INFO_6LPPRINTER_INFO_6
 
typedef struct _PRINTER_INFO_7A PRINTER_INFO_7A
 
typedef struct _PRINTER_INFO_7APPRINTER_INFO_7A
 
typedef struct _PRINTER_INFO_7ALPPRINTER_INFO_7A
 
typedef struct _PRINTER_INFO_7W PRINTER_INFO_7W
 
typedef struct _PRINTER_INFO_7WPPRINTER_INFO_7W
 
typedef struct _PRINTER_INFO_7WLPPRINTER_INFO_7W
 
typedef struct _PRINTER_INFO_8A PRINTER_INFO_8A
 
typedef struct _PRINTER_INFO_8APPRINTER_INFO_8A
 
typedef struct _PRINTER_INFO_8ALPPRINTER_INFO_8A
 
typedef struct _PRINTER_INFO_8W PRINTER_INFO_8W
 
typedef struct _PRINTER_INFO_8WPPRINTER_INFO_8W
 
typedef struct _PRINTER_INFO_8WLPPRINTER_INFO_8W
 
typedef struct _PRINTER_INFO_9A PRINTER_INFO_9A
 
typedef struct _PRINTER_INFO_9APPRINTER_INFO_9A
 
typedef struct _PRINTER_INFO_9ALPPRINTER_INFO_9A
 
typedef struct _PRINTER_INFO_9W PRINTER_INFO_9W
 
typedef struct _PRINTER_INFO_9WPPRINTER_INFO_9W
 
typedef struct _PRINTER_INFO_9WLPPRINTER_INFO_9W
 
typedef struct _JOB_INFO_1A JOB_INFO_1A
 
typedef struct _JOB_INFO_1APJOB_INFO_1A
 
typedef struct _JOB_INFO_1ALPJOB_INFO_1A
 
typedef struct _JOB_INFO_1W JOB_INFO_1W
 
typedef struct _JOB_INFO_1WPJOB_INFO_1W
 
typedef struct _JOB_INFO_1WLPJOB_INFO_1W
 
typedef struct _JOB_INFO_2A JOB_INFO_2A
 
typedef struct _JOB_INFO_2APJOB_INFO_2A
 
typedef struct _JOB_INFO_2ALPJOB_INFO_2A
 
typedef struct _JOB_INFO_2W JOB_INFO_2W
 
typedef struct _JOB_INFO_2WPJOB_INFO_2W
 
typedef struct _JOB_INFO_2WLPJOB_INFO_2W
 
typedef struct _JOB_INFO_3 JOB_INFO_3
 
typedef struct _JOB_INFO_3PJOB_INFO_3
 
typedef struct _JOB_INFO_3LPJOB_INFO_3
 
typedef struct _ADDJOB_INFO_1A ADDJOB_INFO_1A
 
typedef struct _ADDJOB_INFO_1APADDJOB_INFO_1A
 
typedef struct _ADDJOB_INFO_1ALPADDJOB_INFO_1A
 
typedef struct _ADDJOB_INFO_1W ADDJOB_INFO_1W
 
typedef struct _ADDJOB_INFO_1WPADDJOB_INFO_1W
 
typedef struct _ADDJOB_INFO_1WLPADDJOB_INFO_1W
 
typedef struct _DRIVER_INFO_1A DRIVER_INFO_1A
 
typedef struct _DRIVER_INFO_1APDRIVER_INFO_1A
 
typedef struct _DRIVER_INFO_1ALPDRIVER_INFO_1A
 
typedef struct _DRIVER_INFO_1W DRIVER_INFO_1W
 
typedef struct _DRIVER_INFO_1WPDRIVER_INFO_1W
 
typedef struct _DRIVER_INFO_1WLPDRIVER_INFO_1W
 
typedef struct _DRIVER_INFO_2A DRIVER_INFO_2A
 
typedef struct _DRIVER_INFO_2APDRIVER_INFO_2A
 
typedef struct _DRIVER_INFO_2ALPDRIVER_INFO_2A
 
typedef struct _DRIVER_INFO_2W DRIVER_INFO_2W
 
typedef struct _DRIVER_INFO_2WPDRIVER_INFO_2W
 
typedef struct _DRIVER_INFO_2WLPDRIVER_INFO_2W
 
typedef struct _DRIVER_INFO_3A DRIVER_INFO_3A
 
typedef struct _DRIVER_INFO_3APDRIVER_INFO_3A
 
typedef struct _DRIVER_INFO_3ALPDRIVER_INFO_3A
 
typedef struct _DRIVER_INFO_3W DRIVER_INFO_3W
 
typedef struct _DRIVER_INFO_3WPDRIVER_INFO_3W
 
typedef struct _DRIVER_INFO_3WLPDRIVER_INFO_3W
 
typedef struct _DRIVER_INFO_4A DRIVER_INFO_4A
 
typedef struct _DRIVER_INFO_4APDRIVER_INFO_4A
 
typedef struct _DRIVER_INFO_4ALPDRIVER_INFO_4A
 
typedef struct _DRIVER_INFO_4W DRIVER_INFO_4W
 
typedef struct _DRIVER_INFO_4WPDRIVER_INFO_4W
 
typedef struct _DRIVER_INFO_4WLPDRIVER_INFO_4W
 
typedef struct _DRIVER_INFO_5A DRIVER_INFO_5A
 
typedef struct _DRIVER_INFO_5APDRIVER_INFO_5A
 
typedef struct _DRIVER_INFO_5ALPDRIVER_INFO_5A
 
typedef struct _DRIVER_INFO_5W DRIVER_INFO_5W
 
typedef struct _DRIVER_INFO_5WPDRIVER_INFO_5W
 
typedef struct _DRIVER_INFO_5WLPDRIVER_INFO_5W
 
typedef struct _DRIVER_INFO_6A DRIVER_INFO_6A
 
typedef struct _DRIVER_INFO_6APDRIVER_INFO_6A
 
typedef struct _DRIVER_INFO_6ALPDRIVER_INFO_6A
 
typedef struct _DRIVER_INFO_6W DRIVER_INFO_6W
 
typedef struct _DRIVER_INFO_6WPDRIVER_INFO_6W
 
typedef struct _DRIVER_INFO_6WLPDRIVER_INFO_6W
 
typedef struct _DRIVER_INFO_8W DRIVER_INFO_8W
 
typedef struct _DRIVER_INFO_8WPDRIVER_INFO_8W
 
typedef struct _DRIVER_INFO_8WLPDRIVER_INFO_8W
 
typedef struct _DRIVER_INFO_8A DRIVER_INFO_8A
 
typedef struct _DRIVER_INFO_8APDRIVER_INFO_8A
 
typedef struct _DRIVER_INFO_8ALPDRIVER_INFO_8A
 
typedef struct _DOC_INFO_1A DOC_INFO_1A
 
typedef struct _DOC_INFO_1APDOC_INFO_1A
 
typedef struct _DOC_INFO_1ALPDOC_INFO_1A
 
typedef struct _DOC_INFO_1W DOC_INFO_1W
 
typedef struct _DOC_INFO_1WPDOC_INFO_1W
 
typedef struct _DOC_INFO_1WLPDOC_INFO_1W
 
typedef struct _FORM_INFO_1A FORM_INFO_1A
 
typedef struct _FORM_INFO_1APFORM_INFO_1A
 
typedef struct _FORM_INFO_1ALPFORM_INFO_1A
 
typedef struct _FORM_INFO_1W FORM_INFO_1W
 
typedef struct _FORM_INFO_1WPFORM_INFO_1W
 
typedef struct _FORM_INFO_1WLPFORM_INFO_1W
 
typedef struct _FORM_INFO_2A FORM_INFO_2A
 
typedef struct _FORM_INFO_2APFORM_INFO_2A
 
typedef struct _FORM_INFO_2W FORM_INFO_2W
 
typedef struct _FORM_INFO_2WPFORM_INFO_2W
 
typedef struct _DOC_INFO_2A DOC_INFO_2A
 
typedef struct _DOC_INFO_2APDOC_INFO_2A
 
typedef struct _DOC_INFO_2ALPDOC_INFO_2A
 
typedef struct _DOC_INFO_2W DOC_INFO_2W
 
typedef struct _DOC_INFO_2WPDOC_INFO_2W
 
typedef struct _DOC_INFO_2WLPDOC_INFO_2W
 
typedef struct _DOC_INFO_3A DOC_INFO_3A
 
typedef struct _DOC_INFO_3APDOC_INFO_3A
 
typedef struct _DOC_INFO_3ALPDOC_INFO_3A
 
typedef struct _DOC_INFO_3W DOC_INFO_3W
 
typedef struct _DOC_INFO_3WPDOC_INFO_3W
 
typedef struct _DOC_INFO_3WLPDOC_INFO_3W
 
typedef struct _PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1A
 
typedef struct _PRINTPROCESSOR_INFO_1APPRINTPROCESSOR_INFO_1A
 
typedef struct _PRINTPROCESSOR_INFO_1ALPPRINTPROCESSOR_INFO_1A
 
typedef struct _PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1W
 
typedef struct _PRINTPROCESSOR_INFO_1WPPRINTPROCESSOR_INFO_1W
 
typedef struct _PRINTPROCESSOR_INFO_1WLPPRINTPROCESSOR_INFO_1W
 
typedef struct _PRINTPROCESSOR_CAPS_1 PRINTPROCESSOR_CAPS_1
 
typedef struct _PRINTPROCESSOR_CAPS_1PPRINTPROCESSOR_CAPS_1
 
typedef struct _PORT_INFO_1A PORT_INFO_1A
 
typedef struct _PORT_INFO_1APPORT_INFO_1A
 
typedef struct _PORT_INFO_1ALPPORT_INFO_1A
 
typedef struct _PORT_INFO_1W PORT_INFO_1W
 
typedef struct _PORT_INFO_1WPPORT_INFO_1W
 
typedef struct _PORT_INFO_1WLPPORT_INFO_1W
 
typedef struct _PORT_INFO_2A PORT_INFO_2A
 
typedef struct _PORT_INFO_2APPORT_INFO_2A
 
typedef struct _PORT_INFO_2ALPPORT_INFO_2A
 
typedef struct _PORT_INFO_2W PORT_INFO_2W
 
typedef struct _PORT_INFO_2WPPORT_INFO_2W
 
typedef struct _PORT_INFO_2WLPPORT_INFO_2W
 
typedef struct _PORT_INFO_3A PORT_INFO_3A
 
typedef struct _PORT_INFO_3APPORT_INFO_3A
 
typedef struct _PORT_INFO_3ALPPORT_INFO_3A
 
typedef struct _PORT_INFO_3W PORT_INFO_3W
 
typedef struct _PORT_INFO_3WPPORT_INFO_3W
 
typedef struct _PORT_INFO_3WLPPORT_INFO_3W
 
typedef struct _MONITOR_INFO_1A MONITOR_INFO_1A
 
typedef struct _MONITOR_INFO_1APMONITOR_INFO_1A
 
typedef struct _MONITOR_INFO_1ALPMONITOR_INFO_1A
 
typedef struct _MONITOR_INFO_1W MONITOR_INFO_1W
 
typedef struct _MONITOR_INFO_1WPMONITOR_INFO_1W
 
typedef struct _MONITOR_INFO_1WLPMONITOR_INFO_1W
 
typedef struct _MONITOR_INFO_2A MONITOR_INFO_2A
 
typedef struct _MONITOR_INFO_2APMONITOR_INFO_2A
 
typedef struct _MONITOR_INFO_2ALPMONITOR_INFO_2A
 
typedef struct _MONITOR_INFO_2W MONITOR_INFO_2W
 
typedef struct _MONITOR_INFO_2WPMONITOR_INFO_2W
 
typedef struct _MONITOR_INFO_2WLPMONITOR_INFO_2W
 
typedef struct _DATATYPES_INFO_1A DATATYPES_INFO_1A
 
typedef struct _DATATYPES_INFO_1APDATATYPES_INFO_1A
 
typedef struct _DATATYPES_INFO_1ALPDATATYPES_INFO_1A
 
typedef struct _DATATYPES_INFO_1W DATATYPES_INFO_1W
 
typedef struct _DATATYPES_INFO_1WPDATATYPES_INFO_1W
 
typedef struct _DATATYPES_INFO_1WLPDATATYPES_INFO_1W
 
typedef struct _PRINTER_DEFAULTSA PRINTER_DEFAULTSA
 
typedef struct _PRINTER_DEFAULTSAPPRINTER_DEFAULTSA
 
typedef struct _PRINTER_DEFAULTSALPPRINTER_DEFAULTSA
 
typedef struct _PRINTER_DEFAULTSW PRINTER_DEFAULTSW
 
typedef struct _PRINTER_DEFAULTSWPPRINTER_DEFAULTSW
 
typedef struct _PRINTER_DEFAULTSWLPPRINTER_DEFAULTSW
 
typedef struct _PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUESA
 
typedef struct _PRINTER_ENUM_VALUESAPPRINTER_ENUM_VALUESA
 
typedef struct _PRINTER_ENUM_VALUESALPPRINTER_ENUM_VALUESA
 
typedef struct _PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUESW
 
typedef struct _PRINTER_ENUM_VALUESWPPRINTER_ENUM_VALUESW
 
typedef struct _PRINTER_ENUM_VALUESWLPPRINTER_ENUM_VALUESW
 
typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE PRINTER_NOTIFY_OPTIONS_TYPE
 
typedef struct _PRINTER_NOTIFY_OPTIONS_TYPEPPRINTER_NOTIFY_OPTIONS_TYPE
 
typedef struct _PRINTER_NOTIFY_OPTIONS_TYPELPPRINTER_NOTIFY_OPTIONS_TYPE
 
typedef struct _PRINTER_NOTIFY_OPTIONS PRINTER_NOTIFY_OPTIONS
 
typedef struct _PRINTER_NOTIFY_OPTIONSPPRINTER_NOTIFY_OPTIONS
 
typedef struct _PRINTER_NOTIFY_OPTIONSLPPRINTER_NOTIFY_OPTIONS
 
typedef struct _PRINTER_NOTIFY_INFO_DATA PRINTER_NOTIFY_INFO_DATA
 
typedef struct _PRINTER_NOTIFY_INFO_DATAPPRINTER_NOTIFY_INFO_DATA
 
typedef struct _PRINTER_NOTIFY_INFO_DATALPPRINTER_NOTIFY_INFO_DATA
 
typedef struct _PRINTER_NOTIFY_INFO PRINTER_NOTIFY_INFO
 
typedef struct _PRINTER_NOTIFY_INFOPPRINTER_NOTIFY_INFO
 
typedef struct _PRINTER_NOTIFY_INFOLPPRINTER_NOTIFY_INFO
 
typedef struct _BINARY_CONTAINER BINARY_CONTAINER
 
typedef struct _BINARY_CONTAINERPBINARY_CONTAINER
 
typedef struct _BIDI_DATA BIDI_DATA
 
typedef struct _BIDI_DATAPBIDI_DATA
 
typedef struct _BIDI_DATALPBIDI_DATA
 
typedef struct _BIDI_REQUEST_DATA BIDI_REQUEST_DATA
 
typedef struct _BIDI_REQUEST_DATAPBIDI_REQUEST_DATA
 
typedef struct _BIDI_REQUEST_DATALPBIDI_REQUEST_DATA
 
typedef struct _BIDI_REQUEST_CONTAINER BIDI_REQUEST_CONTAINER
 
typedef struct _BIDI_REQUEST_CONTAINERPBIDI_REQUEST_CONTAINER
 
typedef struct _BIDI_REQUEST_CONTAINERLPBIDI_REQUEST_CONTAINER
 
typedef struct _BIDI_RESPONSE_DATA BIDI_RESPONSE_DATA
 
typedef struct _BIDI_RESPONSE_DATAPBIDI_RESPONSE_DATA
 
typedef struct _BIDI_RESPONSE_DATALPBIDI_RESPONSE_DATA
 
typedef struct _BIDI_RESPONSE_CONTAINER BIDI_RESPONSE_CONTAINER
 
typedef struct _BIDI_RESPONSE_CONTAINERPBIDI_RESPONSE_CONTAINER
 
typedef struct _BIDI_RESPONSE_CONTAINERLPBIDI_RESPONSE_CONTAINER
 
typedef struct _PROVIDOR_INFO_1A PROVIDOR_INFO_1A
 
typedef struct _PROVIDOR_INFO_1APPROVIDOR_INFO_1A
 
typedef struct _PROVIDOR_INFO_1ALPPROVIDOR_INFO_1A
 
typedef struct _PROVIDOR_INFO_1W PROVIDOR_INFO_1W
 
typedef struct _PROVIDOR_INFO_1WPPROVIDOR_INFO_1W
 
typedef struct _PROVIDOR_INFO_1WLPPROVIDOR_INFO_1W
 
typedef struct _PROVIDOR_INFO_2A PROVIDOR_INFO_2A
 
typedef struct _PROVIDOR_INFO_2APPROVIDOR_INFO_2A
 
typedef struct _PROVIDOR_INFO_2ALPPROVIDOR_INFO_2A
 
typedef struct _PROVIDOR_INFO_2W PROVIDOR_INFO_2W
 
typedef struct _PROVIDOR_INFO_2WPPROVIDOR_INFO_2W
 
typedef struct _PROVIDOR_INFO_2WLPPROVIDOR_INFO_2W
 

Enumerations

enum  BIDI_TYPE {
  BIDI_NULL = 0 , BIDI_INT = 1 , BIDI_FLOAT = 2 , BIDI_BOOL = 3 ,
  BIDI_STRING = 4 , BIDI_TEXT = 5 , BIDI_ENUM = 6 , BIDI_BLOB = 7
}
 

Functions

WINBOOL WINAPI EnumPrintersA (DWORD Flags, LPSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumPrintersW (DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI OpenPrinterA (LPSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSA pDefault)
 
WINBOOL WINAPI OpenPrinterW (LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault)
 
WINBOOL WINAPI ResetPrinterA (HANDLE hPrinter, LPPRINTER_DEFAULTSA pDefault)
 
WINBOOL WINAPI ResetPrinterW (HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault)
 
WINBOOL WINAPI SetJobA (HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD Command)
 
WINBOOL WINAPI SetJobW (HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD Command)
 
WINBOOL WINAPI GetJobA (HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetJobW (HANDLE hPrinter, DWORD JobId, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI EnumJobsA (HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumJobsW (HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
HANDLE WINAPI AddPrinterA (LPSTR pName, DWORD Level, LPBYTE pPrinter)
 
HANDLE WINAPI AddPrinterW (LPWSTR pName, DWORD Level, LPBYTE pPrinter)
 
WINBOOL WINAPI DeletePrinter (HANDLE hPrinter)
 
WINBOOL WINAPI SetPrinterA (HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD Command)
 
WINBOOL WINAPI SetPrinterW (HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD Command)
 
WINBOOL WINAPI GetPrinterA (HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetPrinterW (HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI AddPrinterDriverA (LPSTR pName, DWORD Level, LPBYTE pDriverInfo)
 
WINBOOL WINAPI AddPrinterDriverW (LPWSTR pName, DWORD Level, LPBYTE pDriverInfo)
 
WINBOOL WINAPI AddPrinterDriverExA (LPSTR pName, DWORD Level, LPBYTE pDriverInfo, DWORD dwFileCopyFlags)
 
WINBOOL WINAPI AddPrinterDriverExW (LPWSTR pName, DWORD Level, LPBYTE pDriverInfo, DWORD dwFileCopyFlags)
 
WINBOOL WINAPI EnumPrinterDriversA (LPSTR pName, LPSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumPrinterDriversW (LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI GetPrinterDriverA (HANDLE hPrinter, LPSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetPrinterDriverW (HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetPrinterDriverDirectoryA (LPSTR pName, LPSTR pEnvironment, DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetPrinterDriverDirectoryW (LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI DeletePrinterDriverA (LPSTR pName, LPSTR pEnvironment, LPSTR pDriverName)
 
WINBOOL WINAPI DeletePrinterDriverW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pDriverName)
 
WINBOOL WINAPI DeletePrinterDriverExA (LPSTR pName, LPSTR pEnvironment, LPSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag)
 
WINBOOL WINAPI DeletePrinterDriverExW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag)
 
WINBOOL WINAPI AddPrintProcessorA (LPSTR pName, LPSTR pEnvironment, LPSTR pPathName, LPSTR pPrintProcessorName)
 
WINBOOL WINAPI AddPrintProcessorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pPathName, LPWSTR pPrintProcessorName)
 
WINBOOL WINAPI EnumPrintProcessorsA (LPSTR pName, LPSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumPrintProcessorsW (LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI GetPrintProcessorDirectoryA (LPSTR pName, LPSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetPrintProcessorDirectoryW (LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI EnumPrintProcessorDatatypesA (LPSTR pName, LPSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumPrintProcessorDatatypesW (LPWSTR pName, LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI DeletePrintProcessorA (LPSTR pName, LPSTR pEnvironment, LPSTR pPrintProcessorName)
 
WINBOOL WINAPI DeletePrintProcessorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pPrintProcessorName)
 
DWORD WINAPI StartDocPrinterA (HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo)
 
DWORD WINAPI StartDocPrinterW (HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo)
 
WINBOOL WINAPI StartPagePrinter (HANDLE hPrinter)
 
WINBOOL WINAPI WritePrinter (HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten)
 
WINBOOL WINAPI FlushPrinter (HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pcWritten, DWORD cSleep)
 
WINBOOL WINAPI EndPagePrinter (HANDLE hPrinter)
 
WINBOOL WINAPI AbortPrinter (HANDLE hPrinter)
 
WINBOOL WINAPI ReadPrinter (HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, LPDWORD pNoBytesRead)
 
WINBOOL WINAPI EndDocPrinter (HANDLE hPrinter)
 
WINBOOL WINAPI AddJobA (HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI AddJobW (HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI ScheduleJob (HANDLE hPrinter, DWORD JobId)
 
WINBOOL 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)
 
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)
 
LONG ExtDeviceMode (HWND hWnd, HANDLE hInst, LPDEVMODEA pDevModeOutput, LPSTR pDeviceName, LPSTR pPort, LPDEVMODEA pDevModeInput, LPSTR pProfile, DWORD fMode)
 
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)
 
DWORD WINAPI GetPrinterDataExA (HANDLE hPrinter, LPCSTR pKeyName, LPCSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
 
DWORD WINAPI GetPrinterDataExW (HANDLE hPrinter, LPCWSTR pKeyName, LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
 
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)
 
DWORD WINAPI EnumPrinterDataExA (HANDLE hPrinter, LPCSTR pKeyName, LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues, LPDWORD pnEnumValues)
 
DWORD WINAPI EnumPrinterDataExW (HANDLE hPrinter, LPCWSTR pKeyName, LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues, LPDWORD pnEnumValues)
 
DWORD WINAPI EnumPrinterKeyA (HANDLE hPrinter, LPCSTR pKeyName, LPSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey)
 
DWORD WINAPI EnumPrinterKeyW (HANDLE hPrinter, LPCWSTR pKeyName, LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey)
 
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)
 
DWORD WINAPI SetPrinterDataExA (HANDLE hPrinter, LPCSTR pKeyName, LPCSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData)
 
DWORD WINAPI SetPrinterDataExW (HANDLE hPrinter, LPCWSTR pKeyName, LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData)
 
DWORD WINAPI DeletePrinterDataA (HANDLE hPrinter, LPSTR pValueName)
 
DWORD WINAPI DeletePrinterDataW (HANDLE hPrinter, LPWSTR pValueName)
 
DWORD WINAPI DeletePrinterDataExA (HANDLE hPrinter, LPCSTR pKeyName, LPCSTR pValueName)
 
DWORD WINAPI DeletePrinterDataExW (HANDLE hPrinter, LPCWSTR pKeyName, LPCWSTR pValueName)
 
DWORD WINAPI DeletePrinterKeyA (HANDLE hPrinter, LPCSTR pKeyName)
 
DWORD WINAPI DeletePrinterKeyW (HANDLE hPrinter, LPCWSTR pKeyName)
 
DWORD WINAPI WaitForPrinterChange (HANDLE hPrinter, DWORD Flags)
 
HANDLE WINAPI FindFirstPrinterChangeNotification (HANDLE hPrinter, DWORD fdwFlags, DWORD fdwOptions, LPVOID pPrinterNotifyOptions)
 
WINBOOL WINAPI FindNextPrinterChangeNotification (HANDLE hChange, PDWORD pdwChange, LPVOID pPrinterNotifyOptions, LPVOID *ppPrinterNotifyInfo)
 
WINBOOL WINAPI FreePrinterNotifyInfo (PPRINTER_NOTIFY_INFO pPrinterNotifyInfo)
 
WINBOOL WINAPI FindClosePrinterChangeNotification (HANDLE hChange)
 
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)
 
WINBOOL WINAPI ClosePrinter (HANDLE hPrinter)
 
WINBOOL WINAPI AddFormA (HANDLE hPrinter, DWORD Level, LPBYTE pForm)
 
WINBOOL WINAPI AddFormW (HANDLE hPrinter, DWORD Level, LPBYTE pForm)
 
WINBOOL WINAPI DeleteFormA (HANDLE hPrinter, LPSTR pFormName)
 
WINBOOL WINAPI DeleteFormW (HANDLE hPrinter, LPWSTR pFormName)
 
WINBOOL WINAPI GetFormA (HANDLE hPrinter, LPSTR pFormName, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI GetFormW (HANDLE hPrinter, LPWSTR pFormName, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded)
 
WINBOOL WINAPI SetFormA (HANDLE hPrinter, LPSTR pFormName, DWORD Level, LPBYTE pForm)
 
WINBOOL WINAPI SetFormW (HANDLE hPrinter, LPWSTR pFormName, DWORD Level, LPBYTE pForm)
 
WINBOOL WINAPI EnumFormsA (HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumFormsW (HANDLE hPrinter, DWORD Level, LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumMonitorsA (LPSTR pName, DWORD Level, LPBYTE pMonitor, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumMonitorsW (LPWSTR pName, DWORD Level, LPBYTE pMonitor, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI AddMonitorA (LPSTR pName, DWORD Level, LPBYTE pMonitorInfo)
 
WINBOOL WINAPI AddMonitorW (LPWSTR pName, DWORD Level, LPBYTE pMonitorInfo)
 
WINBOOL WINAPI DeleteMonitorA (LPSTR pName, LPSTR pEnvironment, LPSTR pMonitorName)
 
WINBOOL WINAPI DeleteMonitorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName)
 
WINBOOL WINAPI EnumPortsA (LPSTR pName, DWORD Level, LPBYTE pPorts, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI EnumPortsW (LPWSTR pName, DWORD Level, LPBYTE pPorts, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
 
WINBOOL WINAPI AddPortA (LPSTR pName, HWND hWnd, LPSTR pMonitorName)
 
WINBOOL WINAPI AddPortW (LPWSTR pName, HWND hWnd, LPWSTR pMonitorName)
 
WINBOOL WINAPI ConfigurePortA (LPSTR pName, HWND hWnd, LPSTR pPortName)
 
WINBOOL WINAPI ConfigurePortW (LPWSTR pName, HWND hWnd, LPWSTR pPortName)
 
WINBOOL WINAPI DeletePortA (LPSTR pName, HWND hWnd, LPSTR pPortName)
 
WINBOOL WINAPI DeletePortW (LPWSTR pName, HWND hWnd, LPWSTR pPortName)
 
WINBOOL WINAPI XcvDataW (HANDLE hXcv, PCWSTR pszDataName, PBYTE pInputData, DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded, PDWORD pdwStatus)
 
WINBOOL WINAPI GetDefaultPrinterA (LPSTR pszBuffer, LPDWORD pcchBuffer)
 
WINBOOL WINAPI GetDefaultPrinterW (LPWSTR pszBuffer, LPDWORD pcchBuffer)
 
WINBOOL WINAPI SetDefaultPrinterA (LPCSTR pszPrinter)
 
WINBOOL WINAPI SetDefaultPrinterW (LPCWSTR pszPrinter)
 
WINBOOL WINAPI SetPortA (LPSTR pName, LPSTR pPortName, DWORD dwLevel, LPBYTE pPortInfo)
 
WINBOOL WINAPI SetPortW (LPWSTR pName, LPWSTR pPortName, DWORD dwLevel, LPBYTE pPortInfo)
 
WINBOOL WINAPI AddPrinterConnectionA (LPSTR pName)
 
WINBOOL WINAPI AddPrinterConnectionW (LPWSTR pName)
 
WINBOOL WINAPI DeletePrinterConnectionA (LPSTR pName)
 
WINBOOL WINAPI DeletePrinterConnectionW (LPWSTR pName)
 
HANDLE WINAPI ConnectToPrinterDlg (HWND hwnd, DWORD Flags)
 
WINBOOL WINAPI AddPrintProvidorA (LPSTR pName, DWORD level, LPBYTE pProvidorInfo)
 
WINBOOL WINAPI AddPrintProvidorW (LPWSTR pName, DWORD level, LPBYTE pProvidorInfo)
 
WINBOOL WINAPI DeletePrintProvidorA (LPSTR pName, LPSTR pEnvironment, LPSTR pPrintProvidorName)
 
WINBOOL WINAPI DeletePrintProvidorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pPrintProvidorName)
 
WINBOOL WINAPI IsValidDevmodeA (PDEVMODEA pDevmode, size_t DevmodeSize)
 
WINBOOL WINAPI IsValidDevmodeW (PDEVMODEW pDevmode, size_t DevmodeSize)
 

Macro Definition Documentation

◆ AddForm

#define AddForm   __MINGW_NAME_AW(AddForm)

Definition at line 1233 of file winspool.h.

◆ AddJob

#define AddJob   __MINGW_NAME_AW(AddJob)

Definition at line 942 of file winspool.h.

◆ AddMonitor

#define AddMonitor   __MINGW_NAME_AW(AddMonitor)

Definition at line 1239 of file winspool.h.

◆ AddPort

#define AddPort   __MINGW_NAME_AW(AddPort)

Definition at line 1242 of file winspool.h.

◆ AddPrinter

#define AddPrinter   __MINGW_NAME_AW(AddPrinter)

Definition at line 926 of file winspool.h.

◆ AddPrinterConnection

#define AddPrinterConnection   __MINGW_NAME_AW(AddPrinterConnection)

Definition at line 1248 of file winspool.h.

◆ AddPrinterDriver

#define AddPrinterDriver   __MINGW_NAME_AW(AddPrinterDriver)

Definition at line 929 of file winspool.h.

◆ AddPrinterDriverEx

#define AddPrinterDriverEx   __MINGW_NAME_AW(AddPrinterDriverEx)

Definition at line 930 of file winspool.h.

◆ AddPrintProcessor

#define AddPrintProcessor   __MINGW_NAME_AW(AddPrintProcessor)

Definition at line 936 of file winspool.h.

◆ AddPrintProvidor

#define AddPrintProvidor   __MINGW_NAME_AW(AddPrintProvidor)

Definition at line 1331 of file winspool.h.

◆ AdvancedDocumentProperties

#define AdvancedDocumentProperties   __MINGW_NAME_AW(AdvancedDocumentProperties)

Definition at line 944 of file winspool.h.

◆ APD_COPY_ALL_FILES

#define APD_COPY_ALL_FILES   0x00000004

Definition at line 605 of file winspool.h.

◆ APD_COPY_FROM_DIRECTORY

#define APD_COPY_FROM_DIRECTORY   0x00000010

Definition at line 607 of file winspool.h.

◆ APD_COPY_NEW_FILES

#define APD_COPY_NEW_FILES   0x00000008

Definition at line 606 of file winspool.h.

◆ APD_STRICT_DOWNGRADE

#define APD_STRICT_DOWNGRADE   0x00000002

Definition at line 604 of file winspool.h.

◆ APD_STRICT_UPGRADE

#define APD_STRICT_UPGRADE   0x00000001

Definition at line 603 of file winspool.h.

◆ BIDI_ACCESS_ADMINISTRATOR

#define BIDI_ACCESS_ADMINISTRATOR   0x1

Definition at line 1185 of file winspool.h.

◆ BIDI_ACCESS_USER

#define BIDI_ACCESS_USER   0x2

Definition at line 1186 of file winspool.h.

◆ BIDI_ACTION_ENUM_SCHEMA

#define BIDI_ACTION_ENUM_SCHEMA   L"EnumSchema"

Definition at line 1176 of file winspool.h.

◆ BIDI_ACTION_GET

#define BIDI_ACTION_GET   L"Get"

Definition at line 1177 of file winspool.h.

◆ BIDI_ACTION_GET_ALL

#define BIDI_ACTION_GET_ALL   L"GetAll"

Definition at line 1179 of file winspool.h.

◆ BIDI_ACTION_SET

#define BIDI_ACTION_SET   L"Set"

Definition at line 1178 of file winspool.h.

◆ ConfigurePort

#define ConfigurePort   __MINGW_NAME_AW(ConfigurePort)

Definition at line 1243 of file winspool.h.

◆ DEF_PRIORITY

#define DEF_PRIORITY   1

Definition at line 230 of file winspool.h.

◆ DeleteForm

#define DeleteForm   __MINGW_NAME_AW(DeleteForm)

Definition at line 1234 of file winspool.h.

◆ DeleteMonitor

#define DeleteMonitor   __MINGW_NAME_AW(DeleteMonitor)

Definition at line 1240 of file winspool.h.

◆ DeletePort

#define DeletePort   __MINGW_NAME_AW(DeletePort)

Definition at line 1244 of file winspool.h.

◆ DeletePrinterConnection

#define DeletePrinterConnection   __MINGW_NAME_AW(DeletePrinterConnection)

Definition at line 1249 of file winspool.h.

◆ DeletePrinterData

#define DeletePrinterData   __MINGW_NAME_AW(DeletePrinterData)

Definition at line 952 of file winspool.h.

◆ DeletePrinterDataEx

#define DeletePrinterDataEx   __MINGW_NAME_AW(DeletePrinterDataEx)

Definition at line 953 of file winspool.h.

◆ DeletePrinterDriver

#define DeletePrinterDriver   __MINGW_NAME_AW(DeletePrinterDriver)

Definition at line 934 of file winspool.h.

◆ DeletePrinterDriverEx

#define DeletePrinterDriverEx   __MINGW_NAME_AW(DeletePrinterDriverEx)

Definition at line 935 of file winspool.h.

◆ DeletePrinterKey

#define DeletePrinterKey   __MINGW_NAME_AW(DeletePrinterKey)

Definition at line 954 of file winspool.h.

◆ DeletePrintProcessor

#define DeletePrintProcessor   __MINGW_NAME_AW(DeletePrintProcessor)

Definition at line 940 of file winspool.h.

◆ DeletePrintProvidor

#define DeletePrintProvidor   __MINGW_NAME_AW(DeletePrintProvidor)

Definition at line 1332 of file winspool.h.

◆ DI_CHANNEL

#define DI_CHANNEL   1

Definition at line 696 of file winspool.h.

◆ DI_MEMORYMAP_WRITE

#define DI_MEMORYMAP_WRITE   0x00000001

Definition at line 717 of file winspool.h.

◆ DI_READ_SPOOL_JOB

#define DI_READ_SPOOL_JOB   3

Definition at line 697 of file winspool.h.

◆ DocumentProperties

#define DocumentProperties   __MINGW_NAME_AW(DocumentProperties)

Definition at line 943 of file winspool.h.

◆ DPD_DELETE_ALL_FILES

#define DPD_DELETE_ALL_FILES   0x00000004

Definition at line 601 of file winspool.h.

◆ DPD_DELETE_SPECIFIC_VERSION

#define DPD_DELETE_SPECIFIC_VERSION   0x00000002

Definition at line 600 of file winspool.h.

◆ DPD_DELETE_UNUSED_FILES

#define DPD_DELETE_UNUSED_FILES   0x00000001

Definition at line 599 of file winspool.h.

◆ DRIVER_KERNELMODE

#define DRIVER_KERNELMODE   0x00000001

Definition at line 596 of file winspool.h.

◆ DRIVER_USERMODE

#define DRIVER_USERMODE   0x00000002

Definition at line 597 of file winspool.h.

◆ DSPRINT_PENDING

#define DSPRINT_PENDING   0x80000000

Definition at line 151 of file winspool.h.

◆ DSPRINT_PUBLISH

#define DSPRINT_PUBLISH   0x00000001

Definition at line 147 of file winspool.h.

◆ DSPRINT_REPUBLISH

#define DSPRINT_REPUBLISH   0x00000008

Definition at line 150 of file winspool.h.

◆ DSPRINT_UNPUBLISH

#define DSPRINT_UNPUBLISH   0x00000004

Definition at line 149 of file winspool.h.

◆ DSPRINT_UPDATE

#define DSPRINT_UPDATE   0x00000002

Definition at line 148 of file winspool.h.

◆ EnumForms

#define EnumForms   __MINGW_NAME_AW(EnumForms)

Definition at line 1237 of file winspool.h.

◆ EnumJobs

#define EnumJobs   __MINGW_NAME_AW(EnumJobs)

Definition at line 925 of file winspool.h.

◆ EnumMonitors

#define EnumMonitors   __MINGW_NAME_AW(EnumMonitors)

Definition at line 1238 of file winspool.h.

◆ EnumPorts

#define EnumPorts   __MINGW_NAME_AW(EnumPorts)

Definition at line 1241 of file winspool.h.

◆ EnumPrinterData

#define EnumPrinterData   __MINGW_NAME_AW(EnumPrinterData)

Definition at line 947 of file winspool.h.

◆ EnumPrinterDataEx

#define EnumPrinterDataEx   __MINGW_NAME_AW(EnumPrinterDataEx)

Definition at line 948 of file winspool.h.

◆ EnumPrinterDrivers

#define EnumPrinterDrivers   __MINGW_NAME_AW(EnumPrinterDrivers)

Definition at line 931 of file winspool.h.

◆ EnumPrinterKey

#define EnumPrinterKey   __MINGW_NAME_AW(EnumPrinterKey)

Definition at line 949 of file winspool.h.

◆ EnumPrinters

#define EnumPrinters   __MINGW_NAME_AW(EnumPrinters)

Definition at line 890 of file winspool.h.

◆ EnumPrintProcessorDatatypes

#define EnumPrintProcessorDatatypes   __MINGW_NAME_AW(EnumPrintProcessorDatatypes)

Definition at line 939 of file winspool.h.

◆ EnumPrintProcessors

#define EnumPrintProcessors   __MINGW_NAME_AW(EnumPrintProcessors)

Definition at line 937 of file winspool.h.

◆ ERROR_BIDI_DEVICE_OFFLINE

#define ERROR_BIDI_DEVICE_OFFLINE   (ERROR_BIDI_ERROR_BASE + 4)

Definition at line 1195 of file winspool.h.

◆ ERROR_BIDI_ERROR_BASE

#define ERROR_BIDI_ERROR_BASE   13000

Definition at line 1191 of file winspool.h.

◆ ERROR_BIDI_NOT_SUPPORTED

#define ERROR_BIDI_NOT_SUPPORTED   ERROR_NOT_SUPPORTED

Definition at line 1189 of file winspool.h.

◆ ERROR_BIDI_SCHEMA_NOT_SUPPORTED

#define ERROR_BIDI_SCHEMA_NOT_SUPPORTED   (ERROR_BIDI_ERROR_BASE + 5)

Definition at line 1196 of file winspool.h.

◆ ERROR_BIDI_SCHEMA_READ_ONLY

#define ERROR_BIDI_SCHEMA_READ_ONLY   (ERROR_BIDI_ERROR_BASE + 2)

Definition at line 1193 of file winspool.h.

◆ ERROR_BIDI_SERVER_OFFLINE

#define ERROR_BIDI_SERVER_OFFLINE   (ERROR_BIDI_ERROR_BASE + 3)

Definition at line 1194 of file winspool.h.

◆ ERROR_BIDI_STATUS_OK

#define ERROR_BIDI_STATUS_OK   0

Definition at line 1188 of file winspool.h.

◆ ERROR_BIDI_STATUS_WARNING

#define ERROR_BIDI_STATUS_WARNING   (ERROR_BIDI_ERROR_BASE + 1)

Definition at line 1192 of file winspool.h.

◆ FORM_BUILTIN

#define FORM_BUILTIN   0x00000001

Definition at line 720 of file winspool.h.

◆ FORM_PRINTER

#define FORM_PRINTER   0x00000002

Definition at line 721 of file winspool.h.

◆ FORM_USER

#define FORM_USER   0x00000000

Definition at line 719 of file winspool.h.

◆ GetDefaultPrinter

#define GetDefaultPrinter   __MINGW_NAME_AW(GetDefaultPrinter)

Definition at line 1245 of file winspool.h.

◆ GetForm

#define GetForm   __MINGW_NAME_AW(GetForm)

Definition at line 1235 of file winspool.h.

◆ GetJob

#define GetJob   __MINGW_NAME_AW(GetJob)

Definition at line 924 of file winspool.h.

◆ GetPrinter

#define GetPrinter   __MINGW_NAME_AW(GetPrinter)

Definition at line 928 of file winspool.h.

◆ GetPrinterData

#define GetPrinterData   __MINGW_NAME_AW(GetPrinterData)

Definition at line 945 of file winspool.h.

◆ GetPrinterDataEx

#define GetPrinterDataEx   __MINGW_NAME_AW(GetPrinterDataEx)

Definition at line 946 of file winspool.h.

◆ GetPrinterDriver

#define GetPrinterDriver   __MINGW_NAME_AW(GetPrinterDriver)

Definition at line 932 of file winspool.h.

◆ GetPrinterDriverDirectory

#define GetPrinterDriverDirectory   __MINGW_NAME_AW(GetPrinterDriverDirectory)

Definition at line 933 of file winspool.h.

◆ GetPrintProcessorDirectory

#define GetPrintProcessorDirectory   __MINGW_NAME_AW(GetPrintProcessorDirectory)

Definition at line 938 of file winspool.h.

◆ IsValidDevmode

#define IsValidDevmode   __MINGW_NAME_AW(IsValidDevmode)

Definition at line 1333 of file winspool.h.

◆ JOB_ACCESS_ADMINISTER

#define JOB_ACCESS_ADMINISTER   0x00000010

Definition at line 1372 of file winspool.h.

◆ JOB_ACCESS_READ

#define JOB_ACCESS_READ   0x00000020

Definition at line 1373 of file winspool.h.

◆ JOB_ALL_ACCESS

Definition at line 1383 of file winspool.h.

◆ JOB_CONTROL_CANCEL

#define JOB_CONTROL_CANCEL   3

Definition at line 332 of file winspool.h.

◆ JOB_CONTROL_DELETE

#define JOB_CONTROL_DELETE   5

Definition at line 334 of file winspool.h.

◆ JOB_CONTROL_LAST_PAGE_EJECTED

#define JOB_CONTROL_LAST_PAGE_EJECTED   7

Definition at line 336 of file winspool.h.

◆ JOB_CONTROL_PAUSE

#define JOB_CONTROL_PAUSE   1

Definition at line 330 of file winspool.h.

◆ JOB_CONTROL_RESTART

#define JOB_CONTROL_RESTART   4

Definition at line 333 of file winspool.h.

◆ JOB_CONTROL_RESUME

#define JOB_CONTROL_RESUME   2

Definition at line 331 of file winspool.h.

◆ JOB_CONTROL_SENT_TO_PRINTER

#define JOB_CONTROL_SENT_TO_PRINTER   6

Definition at line 335 of file winspool.h.

◆ JOB_EXECUTE

Definition at line 1386 of file winspool.h.

◆ JOB_NOTIFY_FIELD_BYTES_PRINTED

#define JOB_NOTIFY_FIELD_BYTES_PRINTED   0x17

Definition at line 1090 of file winspool.h.

◆ JOB_NOTIFY_FIELD_DATATYPE

#define JOB_NOTIFY_FIELD_DATATYPE   0x05

Definition at line 1072 of file winspool.h.

◆ JOB_NOTIFY_FIELD_DEVMODE

#define JOB_NOTIFY_FIELD_DEVMODE   0x09

Definition at line 1076 of file winspool.h.

◆ JOB_NOTIFY_FIELD_DOCUMENT

#define JOB_NOTIFY_FIELD_DOCUMENT   0x0D

Definition at line 1080 of file winspool.h.

◆ JOB_NOTIFY_FIELD_DRIVER_NAME

#define JOB_NOTIFY_FIELD_DRIVER_NAME   0x08

Definition at line 1075 of file winspool.h.

◆ JOB_NOTIFY_FIELD_MACHINE_NAME

#define JOB_NOTIFY_FIELD_MACHINE_NAME   0x01

Definition at line 1068 of file winspool.h.

◆ JOB_NOTIFY_FIELD_NOTIFY_NAME

#define JOB_NOTIFY_FIELD_NOTIFY_NAME   0x04

Definition at line 1071 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PAGES_PRINTED

#define JOB_NOTIFY_FIELD_PAGES_PRINTED   0x15

Definition at line 1088 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PARAMETERS

#define JOB_NOTIFY_FIELD_PARAMETERS   0x07

Definition at line 1074 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PORT_NAME

#define JOB_NOTIFY_FIELD_PORT_NAME   0x02

Definition at line 1069 of file winspool.h.

◆ JOB_NOTIFY_FIELD_POSITION

#define JOB_NOTIFY_FIELD_POSITION   0x0F

Definition at line 1082 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PRINT_PROCESSOR

#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR   0x06

Definition at line 1073 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PRINTER_NAME

#define JOB_NOTIFY_FIELD_PRINTER_NAME   0x00

Definition at line 1067 of file winspool.h.

◆ JOB_NOTIFY_FIELD_PRIORITY

#define JOB_NOTIFY_FIELD_PRIORITY   0x0E

Definition at line 1081 of file winspool.h.

◆ JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR

#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR   0x0C

Definition at line 1079 of file winspool.h.

◆ JOB_NOTIFY_FIELD_START_TIME

#define JOB_NOTIFY_FIELD_START_TIME   0x11

Definition at line 1084 of file winspool.h.

◆ JOB_NOTIFY_FIELD_STATUS

#define JOB_NOTIFY_FIELD_STATUS   0x0A

Definition at line 1077 of file winspool.h.

◆ JOB_NOTIFY_FIELD_STATUS_STRING

#define JOB_NOTIFY_FIELD_STATUS_STRING   0x0B

Definition at line 1078 of file winspool.h.

◆ JOB_NOTIFY_FIELD_SUBMITTED

#define JOB_NOTIFY_FIELD_SUBMITTED   0x10

Definition at line 1083 of file winspool.h.

◆ JOB_NOTIFY_FIELD_TIME

#define JOB_NOTIFY_FIELD_TIME   0x13

Definition at line 1086 of file winspool.h.

◆ JOB_NOTIFY_FIELD_TOTAL_BYTES

#define JOB_NOTIFY_FIELD_TOTAL_BYTES   0x16

Definition at line 1089 of file winspool.h.

◆ JOB_NOTIFY_FIELD_TOTAL_PAGES

#define JOB_NOTIFY_FIELD_TOTAL_PAGES   0x14

Definition at line 1087 of file winspool.h.

◆ JOB_NOTIFY_FIELD_UNTIL_TIME

#define JOB_NOTIFY_FIELD_UNTIL_TIME   0x12

Definition at line 1085 of file winspool.h.

◆ JOB_NOTIFY_FIELD_USER_NAME

#define JOB_NOTIFY_FIELD_USER_NAME   0x03

Definition at line 1070 of file winspool.h.

◆ JOB_NOTIFY_TYPE

#define JOB_NOTIFY_TYPE   0x01

Definition at line 1037 of file winspool.h.

◆ JOB_POSITION_UNSPECIFIED

#define JOB_POSITION_UNSPECIFIED   0

Definition at line 352 of file winspool.h.

◆ JOB_READ

Definition at line 1384 of file winspool.h.

◆ JOB_STATUS_BLOCKED_DEVQ

#define JOB_STATUS_BLOCKED_DEVQ   0x00000200

Definition at line 347 of file winspool.h.

◆ JOB_STATUS_COMPLETE

#define JOB_STATUS_COMPLETE   0x00001000

Definition at line 350 of file winspool.h.

◆ JOB_STATUS_DELETED

#define JOB_STATUS_DELETED   0x00000100

Definition at line 346 of file winspool.h.

◆ JOB_STATUS_DELETING

#define JOB_STATUS_DELETING   0x00000004

Definition at line 340 of file winspool.h.

◆ JOB_STATUS_ERROR

#define JOB_STATUS_ERROR   0x00000002

Definition at line 339 of file winspool.h.

◆ JOB_STATUS_OFFLINE

#define JOB_STATUS_OFFLINE   0x00000020

Definition at line 343 of file winspool.h.

◆ JOB_STATUS_PAPEROUT

#define JOB_STATUS_PAPEROUT   0x00000040

Definition at line 344 of file winspool.h.

◆ JOB_STATUS_PAUSED

#define JOB_STATUS_PAUSED   0x00000001

Definition at line 338 of file winspool.h.

◆ JOB_STATUS_PRINTED

#define JOB_STATUS_PRINTED   0x00000080

Definition at line 345 of file winspool.h.

◆ JOB_STATUS_PRINTING

#define JOB_STATUS_PRINTING   0x00000010

Definition at line 342 of file winspool.h.

◆ JOB_STATUS_RESTART

#define JOB_STATUS_RESTART   0x00000800

Definition at line 349 of file winspool.h.

◆ JOB_STATUS_SPOOLING

#define JOB_STATUS_SPOOLING   0x00000008

Definition at line 341 of file winspool.h.

◆ JOB_STATUS_USER_INTERVENTION

#define JOB_STATUS_USER_INTERVENTION   0x00000400

Definition at line 348 of file winspool.h.

◆ JOB_WRITE

Definition at line 1385 of file winspool.h.

◆ MAX_PRIORITY

#define MAX_PRIORITY   99

Definition at line 228 of file winspool.h.

◆ MIN_PRIORITY

#define MIN_PRIORITY   1

Definition at line 229 of file winspool.h.

◆ NO_PRIORITY

#define NO_PRIORITY   0

Definition at line 227 of file winspool.h.

◆ NORMAL_PRINT

#define NORMAL_PRINT   0x00000000

Definition at line 742 of file winspool.h.

◆ OpenPrinter

#define OpenPrinter   __MINGW_NAME_AW(OpenPrinter)

Definition at line 921 of file winspool.h.

◆ PORT_STATUS_DOOR_OPEN

#define PORT_STATUS_DOOR_OPEN   7

Definition at line 807 of file winspool.h.

◆ PORT_STATUS_NO_TONER

#define PORT_STATUS_NO_TONER   6

Definition at line 806 of file winspool.h.

◆ PORT_STATUS_OFFLINE

#define PORT_STATUS_OFFLINE   1

Definition at line 801 of file winspool.h.

◆ PORT_STATUS_OUT_OF_MEMORY

#define PORT_STATUS_OUT_OF_MEMORY   9

Definition at line 809 of file winspool.h.

◆ PORT_STATUS_OUTPUT_BIN_FULL

#define PORT_STATUS_OUTPUT_BIN_FULL   4

Definition at line 804 of file winspool.h.

◆ PORT_STATUS_PAPER_JAM

#define PORT_STATUS_PAPER_JAM   2

Definition at line 802 of file winspool.h.

◆ PORT_STATUS_PAPER_OUT

#define PORT_STATUS_PAPER_OUT   3

Definition at line 803 of file winspool.h.

◆ PORT_STATUS_PAPER_PROBLEM

#define PORT_STATUS_PAPER_PROBLEM   5

Definition at line 805 of file winspool.h.

◆ PORT_STATUS_POWER_SAVE

#define PORT_STATUS_POWER_SAVE   12

Definition at line 812 of file winspool.h.

◆ PORT_STATUS_TONER_LOW

#define PORT_STATUS_TONER_LOW   10

Definition at line 810 of file winspool.h.

◆ PORT_STATUS_TYPE_ERROR

#define PORT_STATUS_TYPE_ERROR   1

Definition at line 797 of file winspool.h.

◆ PORT_STATUS_TYPE_INFO

#define PORT_STATUS_TYPE_INFO   3

Definition at line 799 of file winspool.h.

◆ PORT_STATUS_TYPE_WARNING

#define PORT_STATUS_TYPE_WARNING   2

Definition at line 798 of file winspool.h.

◆ PORT_STATUS_USER_INTERVENTION

#define PORT_STATUS_USER_INTERVENTION   8

Definition at line 808 of file winspool.h.

◆ PORT_STATUS_WARMING_UP

#define PORT_STATUS_WARMING_UP   11

Definition at line 811 of file winspool.h.

◆ PORT_TYPE_NET_ATTACHED

#define PORT_TYPE_NET_ATTACHED   0x0008

Definition at line 779 of file winspool.h.

◆ PORT_TYPE_READ

#define PORT_TYPE_READ   0x0002

Definition at line 777 of file winspool.h.

◆ PORT_TYPE_REDIRECTED

#define PORT_TYPE_REDIRECTED   0x0004

Definition at line 778 of file winspool.h.

◆ PORT_TYPE_WRITE

#define PORT_TYPE_WRITE   0x0001

Definition at line 776 of file winspool.h.

◆ PRINTER_ACCESS_ADMINISTER

#define PRINTER_ACCESS_ADMINISTER   0x00000004

Definition at line 1369 of file winspool.h.

◆ PRINTER_ACCESS_USE

#define PRINTER_ACCESS_USE   0x00000008

Definition at line 1370 of file winspool.h.

◆ PRINTER_ALL_ACCESS

Definition at line 1379 of file winspool.h.

◆ PRINTER_ATTRIBUTE_DEFAULT

#define PRINTER_ATTRIBUTE_DEFAULT   0x00000004

Definition at line 210 of file winspool.h.

◆ PRINTER_ATTRIBUTE_DIRECT

#define PRINTER_ATTRIBUTE_DIRECT   0x00000002

Definition at line 209 of file winspool.h.

◆ PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST

#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST   0x00000200

Definition at line 218 of file winspool.h.

◆ PRINTER_ATTRIBUTE_ENABLE_BIDI

#define PRINTER_ATTRIBUTE_ENABLE_BIDI   0x00000800

Definition at line 221 of file winspool.h.

◆ PRINTER_ATTRIBUTE_ENABLE_DEVQ

#define PRINTER_ATTRIBUTE_ENABLE_DEVQ   0x00000080

Definition at line 216 of file winspool.h.

◆ PRINTER_ATTRIBUTE_FAX

#define PRINTER_ATTRIBUTE_FAX   0x00004000

Definition at line 224 of file winspool.h.

◆ PRINTER_ATTRIBUTE_HIDDEN

#define PRINTER_ATTRIBUTE_HIDDEN   0x00000020

Definition at line 213 of file winspool.h.

◆ PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS

#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS   0x00000100

Definition at line 217 of file winspool.h.

◆ PRINTER_ATTRIBUTE_LOCAL

#define PRINTER_ATTRIBUTE_LOCAL   0x00000040

Definition at line 214 of file winspool.h.

◆ PRINTER_ATTRIBUTE_NETWORK

#define PRINTER_ATTRIBUTE_NETWORK   0x00000010

Definition at line 212 of file winspool.h.

◆ PRINTER_ATTRIBUTE_PUBLISHED

#define PRINTER_ATTRIBUTE_PUBLISHED   0x00002000

Definition at line 223 of file winspool.h.

◆ PRINTER_ATTRIBUTE_QUEUED

#define PRINTER_ATTRIBUTE_QUEUED   0x00000001

Definition at line 208 of file winspool.h.

◆ PRINTER_ATTRIBUTE_RAW_ONLY

#define PRINTER_ATTRIBUTE_RAW_ONLY   0x00001000

Definition at line 222 of file winspool.h.

◆ PRINTER_ATTRIBUTE_SHARED

#define PRINTER_ATTRIBUTE_SHARED   0x00000008

Definition at line 211 of file winspool.h.

◆ PRINTER_ATTRIBUTE_TS

#define PRINTER_ATTRIBUTE_TS   0x00008000

Definition at line 225 of file winspool.h.

◆ PRINTER_ATTRIBUTE_WORK_OFFLINE

#define PRINTER_ATTRIBUTE_WORK_OFFLINE   0x00000400

Definition at line 220 of file winspool.h.

◆ PRINTER_CHANGE_ADD_FORM

#define PRINTER_CHANGE_ADD_FORM   0x00010000

Definition at line 1214 of file winspool.h.

◆ PRINTER_CHANGE_ADD_JOB

#define PRINTER_CHANGE_ADD_JOB   0x00000100

Definition at line 1209 of file winspool.h.

◆ PRINTER_CHANGE_ADD_PORT

#define PRINTER_CHANGE_ADD_PORT   0x00100000

Definition at line 1218 of file winspool.h.

◆ PRINTER_CHANGE_ADD_PRINT_PROCESSOR

#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR   0x01000000

Definition at line 1222 of file winspool.h.

◆ PRINTER_CHANGE_ADD_PRINTER

#define PRINTER_CHANGE_ADD_PRINTER   0x00000001

Definition at line 1204 of file winspool.h.

◆ PRINTER_CHANGE_ADD_PRINTER_DRIVER

#define PRINTER_CHANGE_ADD_PRINTER_DRIVER   0x10000000

Definition at line 1225 of file winspool.h.

◆ PRINTER_CHANGE_ALL

#define PRINTER_CHANGE_ALL   0x7777FFFF

Definition at line 1230 of file winspool.h.

◆ PRINTER_CHANGE_CONFIGURE_PORT

#define PRINTER_CHANGE_CONFIGURE_PORT   0x00200000

Definition at line 1219 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_FORM

#define PRINTER_CHANGE_DELETE_FORM   0x00040000

Definition at line 1216 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_JOB

#define PRINTER_CHANGE_DELETE_JOB   0x00000400

Definition at line 1211 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_PORT

#define PRINTER_CHANGE_DELETE_PORT   0x00400000

Definition at line 1220 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_PRINT_PROCESSOR

#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR   0x04000000

Definition at line 1223 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_PRINTER

#define PRINTER_CHANGE_DELETE_PRINTER   0x00000004

Definition at line 1206 of file winspool.h.

◆ PRINTER_CHANGE_DELETE_PRINTER_DRIVER

#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER   0x40000000

Definition at line 1227 of file winspool.h.

◆ PRINTER_CHANGE_FAILED_CONNECTION_PRINTER

#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER   0x00000008

Definition at line 1207 of file winspool.h.

◆ PRINTER_CHANGE_FORM

#define PRINTER_CHANGE_FORM   0x00070000

Definition at line 1217 of file winspool.h.

◆ PRINTER_CHANGE_JOB

#define PRINTER_CHANGE_JOB   0x0000FF00

Definition at line 1213 of file winspool.h.

◆ PRINTER_CHANGE_PORT

#define PRINTER_CHANGE_PORT   0x00700000

Definition at line 1221 of file winspool.h.

◆ PRINTER_CHANGE_PRINT_PROCESSOR

#define PRINTER_CHANGE_PRINT_PROCESSOR   0x07000000

Definition at line 1224 of file winspool.h.

◆ PRINTER_CHANGE_PRINTER

#define PRINTER_CHANGE_PRINTER   0x000000FF

Definition at line 1208 of file winspool.h.

◆ PRINTER_CHANGE_PRINTER_DRIVER

#define PRINTER_CHANGE_PRINTER_DRIVER   0x70000000

Definition at line 1228 of file winspool.h.

◆ PRINTER_CHANGE_SET_FORM

#define PRINTER_CHANGE_SET_FORM   0x00020000

Definition at line 1215 of file winspool.h.

◆ PRINTER_CHANGE_SET_JOB

#define PRINTER_CHANGE_SET_JOB   0x00000200

Definition at line 1210 of file winspool.h.

◆ PRINTER_CHANGE_SET_PRINTER

#define PRINTER_CHANGE_SET_PRINTER   0x00000002

Definition at line 1205 of file winspool.h.

◆ PRINTER_CHANGE_SET_PRINTER_DRIVER

#define PRINTER_CHANGE_SET_PRINTER_DRIVER   0x20000000

Definition at line 1226 of file winspool.h.

◆ PRINTER_CHANGE_TIMEOUT

#define PRINTER_CHANGE_TIMEOUT   0x80000000

Definition at line 1229 of file winspool.h.

◆ PRINTER_CHANGE_WRITE_JOB

#define PRINTER_CHANGE_WRITE_JOB   0x00000800

Definition at line 1212 of file winspool.h.

◆ PRINTER_CONTROL_PAUSE

#define PRINTER_CONTROL_PAUSE   1

Definition at line 177 of file winspool.h.

◆ PRINTER_CONTROL_PURGE

#define PRINTER_CONTROL_PURGE   3

Definition at line 179 of file winspool.h.

◆ PRINTER_CONTROL_RESUME

#define PRINTER_CONTROL_RESUME   2

Definition at line 178 of file winspool.h.

◆ PRINTER_CONTROL_SET_STATUS

#define PRINTER_CONTROL_SET_STATUS   4

Definition at line 180 of file winspool.h.

◆ PRINTER_ENUM_CONNECTIONS

#define PRINTER_ENUM_CONNECTIONS   0x00000004

Definition at line 897 of file winspool.h.

◆ PRINTER_ENUM_CONTAINER

#define PRINTER_ENUM_CONTAINER   0x00008000

Definition at line 905 of file winspool.h.

◆ PRINTER_ENUM_DEFAULT

#define PRINTER_ENUM_DEFAULT   0x00000001

Definition at line 895 of file winspool.h.

◆ PRINTER_ENUM_EXPAND

#define PRINTER_ENUM_EXPAND   0x00004000

Definition at line 904 of file winspool.h.

◆ PRINTER_ENUM_FAVORITE

#define PRINTER_ENUM_FAVORITE   0x00000004

Definition at line 898 of file winspool.h.

◆ PRINTER_ENUM_HIDE

#define PRINTER_ENUM_HIDE   0x01000000

Definition at line 916 of file winspool.h.

◆ PRINTER_ENUM_ICON1

#define PRINTER_ENUM_ICON1   0x00010000

Definition at line 908 of file winspool.h.

◆ PRINTER_ENUM_ICON2

#define PRINTER_ENUM_ICON2   0x00020000

Definition at line 909 of file winspool.h.

◆ PRINTER_ENUM_ICON3

#define PRINTER_ENUM_ICON3   0x00040000

Definition at line 910 of file winspool.h.

◆ PRINTER_ENUM_ICON4

#define PRINTER_ENUM_ICON4   0x00080000

Definition at line 911 of file winspool.h.

◆ PRINTER_ENUM_ICON5

#define PRINTER_ENUM_ICON5   0x00100000

Definition at line 912 of file winspool.h.

◆ PRINTER_ENUM_ICON6

#define PRINTER_ENUM_ICON6   0x00200000

Definition at line 913 of file winspool.h.

◆ PRINTER_ENUM_ICON7

#define PRINTER_ENUM_ICON7   0x00400000

Definition at line 914 of file winspool.h.

◆ PRINTER_ENUM_ICON8

#define PRINTER_ENUM_ICON8   0x00800000

Definition at line 915 of file winspool.h.

◆ PRINTER_ENUM_ICONMASK

#define PRINTER_ENUM_ICONMASK   0x00ff0000

Definition at line 907 of file winspool.h.

◆ PRINTER_ENUM_LOCAL

#define PRINTER_ENUM_LOCAL   0x00000002

Definition at line 896 of file winspool.h.

◆ PRINTER_ENUM_NAME

#define PRINTER_ENUM_NAME   0x00000008

Definition at line 899 of file winspool.h.

◆ PRINTER_ENUM_NETWORK

#define PRINTER_ENUM_NETWORK   0x00000040

Definition at line 902 of file winspool.h.

◆ PRINTER_ENUM_REMOTE

#define PRINTER_ENUM_REMOTE   0x00000010

Definition at line 900 of file winspool.h.

◆ PRINTER_ENUM_SHARED

#define PRINTER_ENUM_SHARED   0x00000020

Definition at line 901 of file winspool.h.

◆ PRINTER_ERROR_INFORMATION

#define PRINTER_ERROR_INFORMATION   0x80000000

Definition at line 1254 of file winspool.h.

◆ PRINTER_ERROR_JAM

#define PRINTER_ERROR_JAM   0x00000002

Definition at line 1259 of file winspool.h.

◆ PRINTER_ERROR_OUTOFPAPER

#define PRINTER_ERROR_OUTOFPAPER   0x00000001

Definition at line 1258 of file winspool.h.

◆ PRINTER_ERROR_OUTOFTONER

#define PRINTER_ERROR_OUTOFTONER   0x00000004

Definition at line 1260 of file winspool.h.

◆ PRINTER_ERROR_SEVERE

#define PRINTER_ERROR_SEVERE   0x20000000

Definition at line 1256 of file winspool.h.

◆ PRINTER_ERROR_WARNING

#define PRINTER_ERROR_WARNING   0x40000000

Definition at line 1255 of file winspool.h.

◆ PRINTER_EXECUTE

Definition at line 1382 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_ATTRIBUTES

#define PRINTER_NOTIFY_FIELD_ATTRIBUTES   0x0D

Definition at line 1052 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_AVERAGE_PPM

#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM   0x15

Definition at line 1060 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_BYTES_PRINTED

#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED   0x19

Definition at line 1064 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_CJOBS

#define PRINTER_NOTIFY_FIELD_CJOBS   0x14

Definition at line 1059 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_COMMENT

#define PRINTER_NOTIFY_FIELD_COMMENT   0x05

Definition at line 1044 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_DATATYPE

#define PRINTER_NOTIFY_FIELD_DATATYPE   0x0B

Definition at line 1050 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY

#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY   0x0F

Definition at line 1054 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_DEVMODE

#define PRINTER_NOTIFY_FIELD_DEVMODE   0x07

Definition at line 1046 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_DRIVER_NAME

#define PRINTER_NOTIFY_FIELD_DRIVER_NAME   0x04

Definition at line 1043 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_LOCATION

#define PRINTER_NOTIFY_FIELD_LOCATION   0x06

Definition at line 1045 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_OBJECT_GUID

#define PRINTER_NOTIFY_FIELD_OBJECT_GUID   0x1A

Definition at line 1065 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PAGES_PRINTED

#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED   0x17

Definition at line 1062 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PARAMETERS

#define PRINTER_NOTIFY_FIELD_PARAMETERS   0x0A

Definition at line 1049 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PORT_NAME

#define PRINTER_NOTIFY_FIELD_PORT_NAME   0x03

Definition at line 1042 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR

#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR   0x09

Definition at line 1048 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PRINTER_NAME

#define PRINTER_NOTIFY_FIELD_PRINTER_NAME   0x01

Definition at line 1040 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_PRIORITY

#define PRINTER_NOTIFY_FIELD_PRIORITY   0x0E

Definition at line 1053 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR

#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR   0x0C

Definition at line 1051 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_SEPFILE

#define PRINTER_NOTIFY_FIELD_SEPFILE   0x08

Definition at line 1047 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_SERVER_NAME

#define PRINTER_NOTIFY_FIELD_SERVER_NAME   0x00

Definition at line 1039 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_SHARE_NAME

#define PRINTER_NOTIFY_FIELD_SHARE_NAME   0x02

Definition at line 1041 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_START_TIME

#define PRINTER_NOTIFY_FIELD_START_TIME   0x10

Definition at line 1055 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_STATUS

#define PRINTER_NOTIFY_FIELD_STATUS   0x12

Definition at line 1057 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_STATUS_STRING

#define PRINTER_NOTIFY_FIELD_STATUS_STRING   0x13

Definition at line 1058 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_TOTAL_BYTES

#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES   0x18

Definition at line 1063 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_TOTAL_PAGES

#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES   0x16

Definition at line 1061 of file winspool.h.

◆ PRINTER_NOTIFY_FIELD_UNTIL_TIME

#define PRINTER_NOTIFY_FIELD_UNTIL_TIME   0x11

Definition at line 1056 of file winspool.h.

◆ PRINTER_NOTIFY_INFO_DISCARDED

#define PRINTER_NOTIFY_INFO_DISCARDED   0x01

Definition at line 1110 of file winspool.h.

◆ PRINTER_NOTIFY_OPTIONS_REFRESH

#define PRINTER_NOTIFY_OPTIONS_REFRESH   0x01

Definition at line 1101 of file winspool.h.

◆ PRINTER_NOTIFY_TYPE

#define PRINTER_NOTIFY_TYPE   0x00

Definition at line 1036 of file winspool.h.

◆ PRINTER_READ

Definition at line 1380 of file winspool.h.

◆ PRINTER_STATUS_BUSY

#define PRINTER_STATUS_BUSY   0x00000200

Definition at line 191 of file winspool.h.

◆ PRINTER_STATUS_DOOR_OPEN

#define PRINTER_STATUS_DOOR_OPEN   0x00400000

Definition at line 204 of file winspool.h.

◆ PRINTER_STATUS_ERROR

#define PRINTER_STATUS_ERROR   0x00000002

Definition at line 183 of file winspool.h.

◆ PRINTER_STATUS_INITIALIZING

#define PRINTER_STATUS_INITIALIZING   0x00008000

Definition at line 197 of file winspool.h.

◆ PRINTER_STATUS_IO_ACTIVE

#define PRINTER_STATUS_IO_ACTIVE   0x00000100

Definition at line 190 of file winspool.h.

◆ PRINTER_STATUS_MANUAL_FEED

#define PRINTER_STATUS_MANUAL_FEED   0x00000020

Definition at line 187 of file winspool.h.

◆ PRINTER_STATUS_NO_TONER

#define PRINTER_STATUS_NO_TONER   0x00040000

Definition at line 200 of file winspool.h.

◆ PRINTER_STATUS_NOT_AVAILABLE

#define PRINTER_STATUS_NOT_AVAILABLE   0x00001000

Definition at line 194 of file winspool.h.

◆ PRINTER_STATUS_OFFLINE

#define PRINTER_STATUS_OFFLINE   0x00000080

Definition at line 189 of file winspool.h.

◆ PRINTER_STATUS_OUT_OF_MEMORY

#define PRINTER_STATUS_OUT_OF_MEMORY   0x00200000

Definition at line 203 of file winspool.h.

◆ PRINTER_STATUS_OUTPUT_BIN_FULL

#define PRINTER_STATUS_OUTPUT_BIN_FULL   0x00000800

Definition at line 193 of file winspool.h.

◆ PRINTER_STATUS_PAGE_PUNT

#define PRINTER_STATUS_PAGE_PUNT   0x00080000

Definition at line 201 of file winspool.h.

◆ PRINTER_STATUS_PAPER_JAM

#define PRINTER_STATUS_PAPER_JAM   0x00000008

Definition at line 185 of file winspool.h.

◆ PRINTER_STATUS_PAPER_OUT

#define PRINTER_STATUS_PAPER_OUT   0x00000010

Definition at line 186 of file winspool.h.

◆ PRINTER_STATUS_PAPER_PROBLEM

#define PRINTER_STATUS_PAPER_PROBLEM   0x00000040

Definition at line 188 of file winspool.h.

◆ PRINTER_STATUS_PAUSED

#define PRINTER_STATUS_PAUSED   0x00000001

Definition at line 182 of file winspool.h.

◆ PRINTER_STATUS_PENDING_DELETION

#define PRINTER_STATUS_PENDING_DELETION   0x00000004

Definition at line 184 of file winspool.h.

◆ PRINTER_STATUS_POWER_SAVE

#define PRINTER_STATUS_POWER_SAVE   0x01000000

Definition at line 206 of file winspool.h.

◆ PRINTER_STATUS_PRINTING

#define PRINTER_STATUS_PRINTING   0x00000400

Definition at line 192 of file winspool.h.

◆ PRINTER_STATUS_PROCESSING

#define PRINTER_STATUS_PROCESSING   0x00004000

Definition at line 196 of file winspool.h.

◆ PRINTER_STATUS_SERVER_UNKNOWN

#define PRINTER_STATUS_SERVER_UNKNOWN   0x00800000

Definition at line 205 of file winspool.h.

◆ PRINTER_STATUS_TONER_LOW

#define PRINTER_STATUS_TONER_LOW   0x00020000

Definition at line 199 of file winspool.h.

◆ PRINTER_STATUS_USER_INTERVENTION

#define PRINTER_STATUS_USER_INTERVENTION   0x00100000

Definition at line 202 of file winspool.h.

◆ PRINTER_STATUS_WAITING

#define PRINTER_STATUS_WAITING   0x00002000

Definition at line 195 of file winspool.h.

◆ PRINTER_STATUS_WARMING_UP

#define PRINTER_STATUS_WARMING_UP   0x00010000

Definition at line 198 of file winspool.h.

◆ PRINTER_WRITE

Definition at line 1381 of file winspool.h.

◆ PrinterMessageBox

#define PrinterMessageBox   __MINGW_NAME_AW(PrinterMessageBox)

Definition at line 1232 of file winspool.h.

◆ ResetPrinter

#define ResetPrinter   __MINGW_NAME_AW(ResetPrinter)

Definition at line 922 of file winspool.h.

◆ REVERSE_PRINT

#define REVERSE_PRINT   0x00000001

Definition at line 743 of file winspool.h.

◆ SERVER_ACCESS_ADMINISTER

#define SERVER_ACCESS_ADMINISTER   0x00000001

Definition at line 1366 of file winspool.h.

◆ SERVER_ACCESS_ENUMERATE

#define SERVER_ACCESS_ENUMERATE   0x00000002

Definition at line 1367 of file winspool.h.

◆ SERVER_ALL_ACCESS

Definition at line 1375 of file winspool.h.

◆ SERVER_EXECUTE

Definition at line 1378 of file winspool.h.

◆ SERVER_READ

Definition at line 1376 of file winspool.h.

◆ SERVER_WRITE

Definition at line 1377 of file winspool.h.

◆ SetDefaultPrinter

#define SetDefaultPrinter   __MINGW_NAME_AW(SetDefaultPrinter)

Definition at line 1246 of file winspool.h.

◆ SetForm

#define SetForm   __MINGW_NAME_AW(SetForm)

Definition at line 1236 of file winspool.h.

◆ SetJob

#define SetJob   __MINGW_NAME_AW(SetJob)

Definition at line 923 of file winspool.h.

◆ SetPort

#define SetPort   __MINGW_NAME_AW(SetPort)

Definition at line 1247 of file winspool.h.

◆ SetPrinter

#define SetPrinter   __MINGW_NAME_AW(SetPrinter)

Definition at line 927 of file winspool.h.

◆ SetPrinterData

#define SetPrinterData   __MINGW_NAME_AW(SetPrinterData)

Definition at line 950 of file winspool.h.

◆ SetPrinterDataEx

#define SetPrinterDataEx   __MINGW_NAME_AW(SetPrinterDataEx)

Definition at line 951 of file winspool.h.

◆ SPLDS_ASSET_NUMBER

#define SPLDS_ASSET_NUMBER   TEXT("assetNumber")

Definition at line 1392 of file winspool.h.

◆ SPLDS_BYTES_PER_MINUTE

#define SPLDS_BYTES_PER_MINUTE   TEXT("bytesPerMinute")

Definition at line 1393 of file winspool.h.

◆ SPLDS_DESCRIPTION

#define SPLDS_DESCRIPTION   TEXT("description")

Definition at line 1394 of file winspool.h.

◆ SPLDS_DRIVER_KEY

#define SPLDS_DRIVER_KEY   TEXT("DsDriver")

Definition at line 1389 of file winspool.h.

◆ SPLDS_DRIVER_NAME

#define SPLDS_DRIVER_NAME   TEXT("driverName")

Definition at line 1395 of file winspool.h.

◆ SPLDS_DRIVER_VERSION

#define SPLDS_DRIVER_VERSION   TEXT("driverVersion")

Definition at line 1396 of file winspool.h.

◆ SPLDS_FLAGS

#define SPLDS_FLAGS   TEXT("flags")

Definition at line 1437 of file winspool.h.

◆ SPLDS_LOCATION

#define SPLDS_LOCATION   TEXT("location")

Definition at line 1397 of file winspool.h.

◆ SPLDS_PORT_NAME

#define SPLDS_PORT_NAME   TEXT("portName")

Definition at line 1398 of file winspool.h.

◆ SPLDS_PRINT_ATTRIBUTES

#define SPLDS_PRINT_ATTRIBUTES   TEXT("printAttributes")

Definition at line 1399 of file winspool.h.

◆ SPLDS_PRINT_BIN_NAMES

#define SPLDS_PRINT_BIN_NAMES   TEXT("printBinNames")

Definition at line 1400 of file winspool.h.

◆ SPLDS_PRINT_COLLATE

#define SPLDS_PRINT_COLLATE   TEXT("printCollate")

Definition at line 1401 of file winspool.h.

◆ SPLDS_PRINT_COLOR

#define SPLDS_PRINT_COLOR   TEXT("printColor")

Definition at line 1402 of file winspool.h.

◆ SPLDS_PRINT_DUPLEX_SUPPORTED

#define SPLDS_PRINT_DUPLEX_SUPPORTED   TEXT("printDuplexSupported")

Definition at line 1403 of file winspool.h.

◆ SPLDS_PRINT_END_TIME

#define SPLDS_PRINT_END_TIME   TEXT("printEndTime")

Definition at line 1404 of file winspool.h.

◆ SPLDS_PRINT_KEEP_PRINTED_JOBS

#define SPLDS_PRINT_KEEP_PRINTED_JOBS   TEXT("printKeepPrintedJobs")

Definition at line 1407 of file winspool.h.

◆ SPLDS_PRINT_LANGUAGE

#define SPLDS_PRINT_LANGUAGE   TEXT("printLanguage")

Definition at line 1408 of file winspool.h.

◆ SPLDS_PRINT_MAC_ADDRESS

#define SPLDS_PRINT_MAC_ADDRESS   TEXT("printMACAddress")

Definition at line 1409 of file winspool.h.

◆ SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED

#define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED   TEXT("printMaxResolutionSupported")

Definition at line 1412 of file winspool.h.

◆ SPLDS_PRINT_MAX_X_EXTENT

#define SPLDS_PRINT_MAX_X_EXTENT   TEXT("printMaxXExtent")

Definition at line 1410 of file winspool.h.

◆ SPLDS_PRINT_MAX_Y_EXTENT

#define SPLDS_PRINT_MAX_Y_EXTENT   TEXT("printMaxYExtent")

Definition at line 1411 of file winspool.h.

◆ SPLDS_PRINT_MEDIA_READY

#define SPLDS_PRINT_MEDIA_READY   TEXT("printMediaReady")

Definition at line 1413 of file winspool.h.

◆ SPLDS_PRINT_MEDIA_SUPPORTED

#define SPLDS_PRINT_MEDIA_SUPPORTED   TEXT("printMediaSupported")

Definition at line 1414 of file winspool.h.

◆ SPLDS_PRINT_MEMORY

#define SPLDS_PRINT_MEMORY   TEXT("printMemory")

Definition at line 1415 of file winspool.h.

◆ SPLDS_PRINT_MIN_X_EXTENT

#define SPLDS_PRINT_MIN_X_EXTENT   TEXT("printMinXExtent")

Definition at line 1416 of file winspool.h.

◆ SPLDS_PRINT_MIN_Y_EXTENT

#define SPLDS_PRINT_MIN_Y_EXTENT   TEXT("printMinYExtent")

Definition at line 1417 of file winspool.h.

◆ SPLDS_PRINT_NETWORK_ADDRESS

#define SPLDS_PRINT_NETWORK_ADDRESS   TEXT("printNetworkAddress")

Definition at line 1418 of file winspool.h.

◆ SPLDS_PRINT_NOTIFY

#define SPLDS_PRINT_NOTIFY   TEXT("printNotify")

Definition at line 1419 of file winspool.h.

◆ SPLDS_PRINT_NUMBER_UP

#define SPLDS_PRINT_NUMBER_UP   TEXT("printNumberUp")

Definition at line 1420 of file winspool.h.

◆ SPLDS_PRINT_ORIENTATIONS_SUPPORTED

#define SPLDS_PRINT_ORIENTATIONS_SUPPORTED   TEXT("printOrientationsSupported")

Definition at line 1421 of file winspool.h.

◆ SPLDS_PRINT_OWNER

#define SPLDS_PRINT_OWNER   TEXT("printOwner")

Definition at line 1422 of file winspool.h.

◆ SPLDS_PRINT_PAGES_PER_MINUTE

#define SPLDS_PRINT_PAGES_PER_MINUTE   TEXT("printPagesPerMinute")

Definition at line 1423 of file winspool.h.

◆ SPLDS_PRINT_RATE

#define SPLDS_PRINT_RATE   TEXT("printRate")

Definition at line 1424 of file winspool.h.

◆ SPLDS_PRINT_RATE_UNIT

#define SPLDS_PRINT_RATE_UNIT   TEXT("printRateUnit")

Definition at line 1425 of file winspool.h.

◆ SPLDS_PRINT_SEPARATOR_FILE

#define SPLDS_PRINT_SEPARATOR_FILE   TEXT("printSeparatorFile")

Definition at line 1426 of file winspool.h.

◆ SPLDS_PRINT_SHARE_NAME

#define SPLDS_PRINT_SHARE_NAME   TEXT("printShareName")

Definition at line 1427 of file winspool.h.

◆ SPLDS_PRINT_SPOOLING

#define SPLDS_PRINT_SPOOLING   TEXT("printSpooling")

Definition at line 1428 of file winspool.h.

◆ SPLDS_PRINT_STAPLING_SUPPORTED

#define SPLDS_PRINT_STAPLING_SUPPORTED   TEXT("printStaplingSupported")

Definition at line 1429 of file winspool.h.

◆ SPLDS_PRINT_START_TIME

#define SPLDS_PRINT_START_TIME   TEXT("printStartTime")

Definition at line 1430 of file winspool.h.

◆ SPLDS_PRINT_STATUS

#define SPLDS_PRINT_STATUS   TEXT("printStatus")

Definition at line 1431 of file winspool.h.

◆ SPLDS_PRINTER_CLASS

#define SPLDS_PRINTER_CLASS   TEXT("printQueue")

Definition at line 1405 of file winspool.h.

◆ SPLDS_PRINTER_LOCATIONS

#define SPLDS_PRINTER_LOCATIONS   TEXT("printerLocations")

Definition at line 1441 of file winspool.h.

◆ SPLDS_PRINTER_MODEL

#define SPLDS_PRINTER_MODEL   TEXT("printerModel")

Definition at line 1442 of file winspool.h.

◆ SPLDS_PRINTER_NAME

#define SPLDS_PRINTER_NAME   TEXT("printerName")

Definition at line 1406 of file winspool.h.

◆ SPLDS_PRINTER_NAME_ALIASES

#define SPLDS_PRINTER_NAME_ALIASES   TEXT("printerNameAliases")

Definition at line 1440 of file winspool.h.

◆ SPLDS_PRIORITY

#define SPLDS_PRIORITY   TEXT("priority")

Definition at line 1432 of file winspool.h.

◆ SPLDS_SERVER_NAME

#define SPLDS_SERVER_NAME   TEXT("serverName")

Definition at line 1433 of file winspool.h.

◆ SPLDS_SHORT_SERVER_NAME

#define SPLDS_SHORT_SERVER_NAME   TEXT("shortServerName")

Definition at line 1434 of file winspool.h.

◆ SPLDS_SPOOLER_KEY

#define SPLDS_SPOOLER_KEY   TEXT("DsSpooler")

Definition at line 1388 of file winspool.h.

◆ SPLDS_UNC_NAME

#define SPLDS_UNC_NAME   TEXT("uNCName")

Definition at line 1435 of file winspool.h.

◆ SPLDS_URL

#define SPLDS_URL   TEXT("url")

Definition at line 1436 of file winspool.h.

◆ SPLDS_USER_KEY

#define SPLDS_USER_KEY   TEXT("DsUser")

Definition at line 1390 of file winspool.h.

◆ SPLDS_VERSION_NUMBER

#define SPLDS_VERSION_NUMBER   TEXT("versionNumber")

Definition at line 1438 of file winspool.h.

◆ SPLREG_ALLOW_USER_MANAGEFORMS

#define SPLREG_ALLOW_USER_MANAGEFORMS   TEXT("AllowUserManageForms")

Definition at line 1363 of file winspool.h.

◆ SPLREG_ARCHITECTURE

#define SPLREG_ARCHITECTURE   TEXT("Architecture")

Definition at line 1354 of file winspool.h.

◆ SPLREG_BEEP_ENABLED

#define SPLREG_BEEP_ENABLED   TEXT("BeepEnabled")

Definition at line 1347 of file winspool.h.

◆ SPLREG_DEFAULT_SPOOL_DIRECTORY

#define SPLREG_DEFAULT_SPOOL_DIRECTORY   TEXT("DefaultSpoolDirectory")

Definition at line 1342 of file winspool.h.

◆ SPLREG_DNS_MACHINE_NAME

#define SPLREG_DNS_MACHINE_NAME   TEXT("DNSMachineName")

Definition at line 1362 of file winspool.h.

◆ SPLREG_DS_PRESENT

#define SPLREG_DS_PRESENT   TEXT("DsPresent")

Definition at line 1357 of file winspool.h.

◆ SPLREG_DS_PRESENT_FOR_USER

#define SPLREG_DS_PRESENT_FOR_USER   TEXT("DsPresentForUser")

Definition at line 1358 of file winspool.h.

◆ SPLREG_EVENT_LOG

#define SPLREG_EVENT_LOG   TEXT("EventLog")

Definition at line 1351 of file winspool.h.

◆ SPLREG_MAJOR_VERSION

#define SPLREG_MAJOR_VERSION   TEXT("MajorVersion")

Definition at line 1352 of file winspool.h.

◆ SPLREG_MINOR_VERSION

#define SPLREG_MINOR_VERSION   TEXT("MinorVersion")

Definition at line 1353 of file winspool.h.

◆ SPLREG_NET_POPUP

#define SPLREG_NET_POPUP   TEXT("NetPopup")

Definition at line 1348 of file winspool.h.

◆ SPLREG_NET_POPUP_TO_COMPUTER

#define SPLREG_NET_POPUP_TO_COMPUTER   TEXT("NetPopupToComputer")

Definition at line 1350 of file winspool.h.

◆ SPLREG_OS_VERSION

#define SPLREG_OS_VERSION   TEXT("OSVersion")

Definition at line 1355 of file winspool.h.

◆ SPLREG_OS_VERSIONEX

#define SPLREG_OS_VERSIONEX   TEXT("OSVersionEx")

Definition at line 1356 of file winspool.h.

◆ SPLREG_PORT_THREAD_PRIORITY

#define SPLREG_PORT_THREAD_PRIORITY   TEXT("PortThreadPriority")

Definition at line 1344 of file winspool.h.

◆ SPLREG_PORT_THREAD_PRIORITY_DEFAULT

#define SPLREG_PORT_THREAD_PRIORITY_DEFAULT   TEXT("PortThreadPriorityDefault")

Definition at line 1343 of file winspool.h.

◆ SPLREG_REMOTE_FAX

#define SPLREG_REMOTE_FAX   TEXT("RemoteFax")

Definition at line 1359 of file winspool.h.

◆ SPLREG_RESTART_JOB_ON_POOL_ENABLED

#define SPLREG_RESTART_JOB_ON_POOL_ENABLED   TEXT("RestartJobOnPoolEnabled")

Definition at line 1361 of file winspool.h.

◆ SPLREG_RESTART_JOB_ON_POOL_ERROR

#define SPLREG_RESTART_JOB_ON_POOL_ERROR   TEXT("RestartJobOnPoolError")

Definition at line 1360 of file winspool.h.

◆ SPLREG_RETRY_POPUP

#define SPLREG_RETRY_POPUP   TEXT("RetryPopup")

Definition at line 1349 of file winspool.h.

◆ SPLREG_SCHEDULER_THREAD_PRIORITY

#define SPLREG_SCHEDULER_THREAD_PRIORITY   TEXT("SchedulerThreadPriority")

Definition at line 1346 of file winspool.h.

◆ SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT

#define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT   TEXT("SchedulerThreadPriorityDefault")

Definition at line 1345 of file winspool.h.

◆ SPLREG_WEBSHAREMGMT

#define SPLREG_WEBSHAREMGMT   TEXT("WebShareMgmt")

Definition at line 1364 of file winspool.h.

◆ SPOOL_FILE_PERSISTENT

#define SPOOL_FILE_PERSISTENT   0x00000001

Definition at line 918 of file winspool.h.

◆ SPOOL_FILE_TEMPORARY

#define SPOOL_FILE_TEMPORARY   0x00000002

Definition at line 919 of file winspool.h.

◆ StartDocPrinter

#define StartDocPrinter   __MINGW_NAME_AW(StartDocPrinter)

Definition at line 941 of file winspool.h.

◆ STRING_LANGPAIR

#define STRING_LANGPAIR   0x00000004

Definition at line 674 of file winspool.h.

◆ STRING_MUIDLL

#define STRING_MUIDLL   0x00000002

Definition at line 673 of file winspool.h.

◆ STRING_NONE

#define STRING_NONE   0x00000001

Definition at line 672 of file winspool.h.

◆ XcvData

#define XcvData   XcvDataW

Definition at line 1289 of file winspool.h.

Typedef Documentation

◆ ADDJOB_INFO_1A

◆ ADDJOB_INFO_1W

◆ BIDI_DATA

◆ BIDI_REQUEST_CONTAINER

◆ BIDI_REQUEST_DATA

◆ BIDI_RESPONSE_CONTAINER

◆ BIDI_RESPONSE_DATA

◆ BINARY_CONTAINER

◆ DATATYPES_INFO_1A

◆ DATATYPES_INFO_1W

◆ DOC_INFO_1A

◆ DOC_INFO_1W

◆ DOC_INFO_2A

◆ DOC_INFO_2W

◆ DOC_INFO_3A

◆ DOC_INFO_3W

◆ DRIVER_INFO_1A

◆ DRIVER_INFO_1W

◆ DRIVER_INFO_2A

◆ DRIVER_INFO_2W

◆ DRIVER_INFO_3A

◆ DRIVER_INFO_3W

◆ DRIVER_INFO_4A

◆ DRIVER_INFO_4W

◆ DRIVER_INFO_5A

◆ DRIVER_INFO_5W

◆ DRIVER_INFO_6A

◆ DRIVER_INFO_6W

◆ DRIVER_INFO_8A

◆ DRIVER_INFO_8W

◆ FORM_INFO_1A

◆ FORM_INFO_1W

◆ FORM_INFO_2A

◆ FORM_INFO_2W

◆ JOB_INFO_1A

◆ JOB_INFO_1W

◆ JOB_INFO_2A

◆ JOB_INFO_2W

◆ JOB_INFO_3

◆ LPADDJOB_INFO_1A

◆ LPADDJOB_INFO_1W

◆ LPBIDI_DATA

◆ LPBIDI_REQUEST_CONTAINER

◆ LPBIDI_REQUEST_DATA

◆ LPBIDI_RESPONSE_CONTAINER

◆ LPBIDI_RESPONSE_DATA

◆ LPDATATYPES_INFO_1A

◆ LPDATATYPES_INFO_1W

◆ LPDOC_INFO_1A

◆ LPDOC_INFO_1W

◆ LPDOC_INFO_2A

◆ LPDOC_INFO_2W

◆ LPDOC_INFO_3A

◆ LPDOC_INFO_3W

◆ LPDRIVER_INFO_1A

◆ LPDRIVER_INFO_1W

◆ LPDRIVER_INFO_2A

◆ LPDRIVER_INFO_2W

◆ LPDRIVER_INFO_3A

◆ LPDRIVER_INFO_3W

◆ LPDRIVER_INFO_4A

◆ LPDRIVER_INFO_4W

◆ LPDRIVER_INFO_5A

◆ LPDRIVER_INFO_5W

◆ LPDRIVER_INFO_6A

◆ LPDRIVER_INFO_6W

◆ LPDRIVER_INFO_8A

◆ LPDRIVER_INFO_8W

◆ LPFORM_INFO_1A

◆ LPFORM_INFO_1W

◆ LPJOB_INFO_1A

◆ LPJOB_INFO_1W

◆ LPJOB_INFO_2A

◆ LPJOB_INFO_2W

◆ LPJOB_INFO_3

◆ LPMONITOR_INFO_1A

◆ LPMONITOR_INFO_1W

◆ LPMONITOR_INFO_2A

◆ LPMONITOR_INFO_2W

◆ LPPORT_INFO_1A

◆ LPPORT_INFO_1W

◆ LPPORT_INFO_2A

◆ LPPORT_INFO_2W

◆ LPPORT_INFO_3A

◆ LPPORT_INFO_3W

◆ LPPRINTER_DEFAULTSA

◆ LPPRINTER_DEFAULTSW

◆ LPPRINTER_ENUM_VALUESA

◆ LPPRINTER_ENUM_VALUESW

◆ LPPRINTER_INFO_1A

◆ LPPRINTER_INFO_1W

◆ LPPRINTER_INFO_2A

◆ LPPRINTER_INFO_2W

◆ LPPRINTER_INFO_3

◆ LPPRINTER_INFO_4A

◆ LPPRINTER_INFO_4W

◆ LPPRINTER_INFO_5A

◆ LPPRINTER_INFO_5W

◆ LPPRINTER_INFO_6

◆ LPPRINTER_INFO_7A

◆ LPPRINTER_INFO_7W

◆ LPPRINTER_INFO_8A

◆ LPPRINTER_INFO_8W

◆ LPPRINTER_INFO_9A

◆ LPPRINTER_INFO_9W

◆ LPPRINTER_NOTIFY_INFO

◆ LPPRINTER_NOTIFY_INFO_DATA

◆ LPPRINTER_NOTIFY_OPTIONS

◆ LPPRINTER_NOTIFY_OPTIONS_TYPE

◆ LPPRINTPROCESSOR_INFO_1A

◆ LPPRINTPROCESSOR_INFO_1W

◆ LPPROVIDOR_INFO_1A

◆ LPPROVIDOR_INFO_1W

◆ LPPROVIDOR_INFO_2A

◆ LPPROVIDOR_INFO_2W

◆ MONITOR_INFO_1A

◆ MONITOR_INFO_1W

◆ MONITOR_INFO_2A

◆ MONITOR_INFO_2W

◆ PADDJOB_INFO_1A

◆ PADDJOB_INFO_1W

◆ PBIDI_DATA

◆ PBIDI_REQUEST_CONTAINER

◆ PBIDI_REQUEST_DATA

◆ PBIDI_RESPONSE_CONTAINER

◆ PBIDI_RESPONSE_DATA

◆ PBINARY_CONTAINER

◆ PDATATYPES_INFO_1A

◆ PDATATYPES_INFO_1W

◆ PDOC_INFO_1A

◆ PDOC_INFO_1W

◆ PDOC_INFO_2A

◆ PDOC_INFO_2W

◆ PDOC_INFO_3A

◆ PDOC_INFO_3W

◆ PDRIVER_INFO_1A

◆ PDRIVER_INFO_1W

◆ PDRIVER_INFO_2A

◆ PDRIVER_INFO_2W

◆ PDRIVER_INFO_3A

◆ PDRIVER_INFO_3W

◆ PDRIVER_INFO_4A

◆ PDRIVER_INFO_4W

◆ PDRIVER_INFO_5A

◆ PDRIVER_INFO_5W

◆ PDRIVER_INFO_6A

◆ PDRIVER_INFO_6W

◆ PDRIVER_INFO_8A

◆ PDRIVER_INFO_8W

◆ PFORM_INFO_1A

◆ PFORM_INFO_1W

◆ PFORM_INFO_2A

◆ PFORM_INFO_2W

◆ PJOB_INFO_1A

◆ PJOB_INFO_1W

◆ PJOB_INFO_2A

◆ PJOB_INFO_2W

◆ PJOB_INFO_3

◆ PMONITOR_INFO_1A

◆ PMONITOR_INFO_1W

◆ PMONITOR_INFO_2A

◆ PMONITOR_INFO_2W

◆ PORT_INFO_1A

◆ PORT_INFO_1W

◆ PORT_INFO_2A

◆ PORT_INFO_2W

◆ PORT_INFO_3A

◆ PORT_INFO_3W

◆ PPORT_INFO_1A

◆ PPORT_INFO_1W

◆ PPORT_INFO_2A

◆ PPORT_INFO_2W

◆ PPORT_INFO_3A

◆ PPORT_INFO_3W

◆ PPRINTER_DEFAULTSA

◆ PPRINTER_DEFAULTSW

◆ PPRINTER_ENUM_VALUESA

◆ PPRINTER_ENUM_VALUESW

◆ PPRINTER_INFO_1A

◆ PPRINTER_INFO_1W

◆ PPRINTER_INFO_2A

◆ PPRINTER_INFO_2W

◆ PPRINTER_INFO_3

◆ PPRINTER_INFO_4A

◆ PPRINTER_INFO_4W

◆ PPRINTER_INFO_5A

◆ PPRINTER_INFO_5W

◆ PPRINTER_INFO_6

◆ PPRINTER_INFO_7A

◆ PPRINTER_INFO_7W

◆ PPRINTER_INFO_8A

◆ PPRINTER_INFO_8W

◆ PPRINTER_INFO_9A

◆ PPRINTER_INFO_9W

◆ PPRINTER_NOTIFY_INFO

◆ PPRINTER_NOTIFY_INFO_DATA

◆ PPRINTER_NOTIFY_OPTIONS

◆ PPRINTER_NOTIFY_OPTIONS_TYPE

◆ PPRINTPROCESSOR_CAPS_1

◆ PPRINTPROCESSOR_INFO_1A

◆ PPRINTPROCESSOR_INFO_1W

◆ PPROVIDOR_INFO_1A

◆ PPROVIDOR_INFO_1W

◆ PPROVIDOR_INFO_2A

◆ PPROVIDOR_INFO_2W

◆ PRINTER_DEFAULTSA

◆ PRINTER_DEFAULTSW

◆ PRINTER_ENUM_VALUESA

◆ PRINTER_ENUM_VALUESW

◆ PRINTER_INFO_1A

This file has no copyright assigned and is placed in the Public Domain. This file is part of the mingw-w64 runtime package. No warranty is given; refer to the file DISCLAIMER.PD within this package.

◆ PRINTER_INFO_1W

◆ PRINTER_INFO_2A

◆ PRINTER_INFO_2W

◆ PRINTER_INFO_3

◆ PRINTER_INFO_4A

◆ PRINTER_INFO_4W

◆ PRINTER_INFO_5A

◆ PRINTER_INFO_5W

◆ PRINTER_INFO_6

◆ PRINTER_INFO_7A

◆ PRINTER_INFO_7W

◆ PRINTER_INFO_8A

◆ PRINTER_INFO_8W

◆ PRINTER_INFO_9A

◆ PRINTER_INFO_9W

◆ PRINTER_NOTIFY_INFO

◆ PRINTER_NOTIFY_INFO_DATA

◆ PRINTER_NOTIFY_OPTIONS

◆ PRINTER_NOTIFY_OPTIONS_TYPE

◆ PRINTPROCESSOR_CAPS_1

◆ PRINTPROCESSOR_INFO_1A

◆ PRINTPROCESSOR_INFO_1W

◆ PROVIDOR_INFO_1A

◆ PROVIDOR_INFO_1W

◆ PROVIDOR_INFO_2A

◆ PROVIDOR_INFO_2W

Enumeration Type Documentation

◆ BIDI_TYPE

Enumerator
BIDI_NULL 
BIDI_INT 
BIDI_FLOAT 
BIDI_BOOL 
BIDI_STRING 
BIDI_TEXT 
BIDI_ENUM 
BIDI_BLOB 

Definition at line 1181 of file winspool.h.

1181 {
1183 } BIDI_TYPE;
BIDI_TYPE
Definition: winspool.h:1181
@ BIDI_BLOB
Definition: winspool.h:1182
@ BIDI_FLOAT
Definition: winspool.h:1182
@ BIDI_INT
Definition: winspool.h:1182
@ BIDI_STRING
Definition: winspool.h:1182
@ BIDI_BOOL
Definition: winspool.h:1182
@ BIDI_NULL
Definition: winspool.h:1182
@ BIDI_TEXT
Definition: winspool.h:1182
@ BIDI_ENUM
Definition: winspool.h:1182

Function Documentation

◆ AbortPrinter()

WINBOOL WINAPI AbortPrinter ( HANDLE  hPrinter)

Definition at line 11 of file printers.c.

12{
14
15 // Sanity checks.
16 if (!pHandle)
17 {
19 return FALSE;
20 }
21
22 return pHandle->pPrintProvider->PrintProvider.fpAbortPrinter(pHandle->hPrinter);
23}
#define FALSE
Definition: types.h:117
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
PSPOOLSS_PRINT_PROVIDER pPrintProvider
Definition: precomp.h:46
PRINTPROVIDOR PrintProvider
Definition: precomp.h:36
struct _SPOOLSS_PRINTER_HANDLE * PSPOOLSS_PRINTER_HANDLE

Referenced by _RpcAbortPrinter().

◆ AddFormA()

WINBOOL WINAPI AddFormA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pForm 
)

◆ AddFormW()

WINBOOL WINAPI AddFormW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pForm 
)

◆ AddJobA()

WINBOOL WINAPI AddJobA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pData,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ AddJobW()

WINBOOL WINAPI AddJobW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pData,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Referenced by StartDocPrinterW().

◆ AddMonitorA()

WINBOOL WINAPI AddMonitorA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pMonitorInfo 
)

◆ AddMonitorW()

WINBOOL WINAPI AddMonitorW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pMonitorInfo 
)

◆ AddPortA()

WINBOOL WINAPI AddPortA ( LPSTR  pName,
HWND  hWnd,
LPSTR  pMonitorName 
)

Definition at line 420 of file ports.c.

421{
422 LPWSTR nameW = NULL;
424 DWORD len;
425 BOOL res;
426
427 TRACE("AddPortA(%s, %p, %s)\n",debugstr_a(pName), hWnd, debugstr_a(pMonitorName));
428
429 if (pName)
430 {
431 len = MultiByteToWideChar(CP_ACP, 0, pName, -1, NULL, 0);
432 nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
434 }
435
436 if (pMonitorName)
437 {
438 len = MultiByteToWideChar(CP_ACP, 0, pMonitorName, -1, NULL, 0);
439 monitorW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
440 MultiByteToWideChar(CP_ACP, 0, pMonitorName, -1, monitorW, len);
441 }
442
444
447
448 return res;
449}
HWND hWnd
Definition: settings.c:17
static const WCHAR nameW[]
Definition: main.c:46
#define NULL
Definition: types.h:112
#define GetProcessHeap()
Definition: compat.h:736
#define CP_ACP
Definition: compat.h:109
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define MultiByteToWideChar
Definition: compat.h:110
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint res
Definition: glext.h:9613
GLenum GLsizei len
Definition: glext.h:6722
#define debugstr_a
Definition: kernel32.h:31
static LPSTR pName
Definition: security.c:75
static const WCHAR monitorW[]
#define TRACE(s)
Definition: solgame.cpp:4
BOOL WINAPI AddPortW(PWSTR pName, HWND hWnd, PWSTR pMonitorName)
Definition: ports.c:586
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by test_AddPort().

◆ AddPortW()

WINBOOL WINAPI AddPortW ( LPWSTR  pName,
HWND  hWnd,
LPWSTR  pMonitorName 
)

◆ AddPrinterA()

HANDLE WINAPI AddPrinterA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pPrinter 
)

◆ AddPrinterConnectionA()

WINBOOL WINAPI AddPrinterConnectionA ( LPSTR  pName)

◆ AddPrinterConnectionW()

WINBOOL WINAPI AddPrinterConnectionW ( LPWSTR  pName)

◆ AddPrinterDriverA()

WINBOOL WINAPI AddPrinterDriverA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pDriverInfo 
)

◆ AddPrinterDriverExA()

WINBOOL WINAPI AddPrinterDriverExA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  dwFileCopyFlags 
)

◆ AddPrinterDriverExW()

WINBOOL WINAPI AddPrinterDriverExW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  dwFileCopyFlags 
)

◆ AddPrinterDriverW()

WINBOOL WINAPI AddPrinterDriverW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pDriverInfo 
)

◆ AddPrinterW()

HANDLE WINAPI AddPrinterW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pPrinter 
)

◆ AddPrintProcessorA()

WINBOOL WINAPI AddPrintProcessorA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pPathName,
LPSTR  pPrintProcessorName 
)

Definition at line 13 of file printprocessors.c.

14{
15 UNICODE_STRING NameW, EnvW, PathW, ProcessorW;
16 BOOL Ret;
17
18 TRACE("AddPrintProcessorA(%s, %s, %s, %s)\n", pName, pEnvironment, pPathName, pPrintProcessorName);
19
20 AsciiToUnicode(&NameW, pName);
21 AsciiToUnicode(&EnvW, pEnvironment);
22 AsciiToUnicode(&PathW, pPathName);
23 AsciiToUnicode(&ProcessorW, pPrintProcessorName);
24
25 Ret = AddPrintProcessorW(NameW.Buffer, EnvW.Buffer, PathW.Buffer, ProcessorW.Buffer);
26
27 RtlFreeUnicodeString(&ProcessorW);
31
32 return Ret;
33}
BOOL WINAPI AddPrintProcessorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPathName, PWSTR pPrintProcessorName)
wstring AsciiToUnicode(const char *AsciiString)
Definition: tools.cpp:220
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)

◆ AddPrintProcessorW()

WINBOOL WINAPI AddPrintProcessorW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pPathName,
LPWSTR  pPrintProcessorName 
)

◆ AddPrintProvidorA()

WINBOOL WINAPI AddPrintProvidorA ( LPSTR  pName,
DWORD  level,
LPBYTE  pProvidorInfo 
)

◆ AddPrintProvidorW()

WINBOOL WINAPI AddPrintProvidorW ( LPWSTR  pName,
DWORD  level,
LPBYTE  pProvidorInfo 
)

◆ AdvancedDocumentPropertiesA()

LONG WINAPI AdvancedDocumentPropertiesA ( HWND  hWnd,
HANDLE  hPrinter,
LPSTR  pDeviceName,
PDEVMODEA  pDevModeOutput,
PDEVMODEA  pDevModeInput 
)

Definition at line 27 of file printerdata.c.

28{
29 TRACE("AdvancedDocumentPropertiesA(%p, %p, %s, %p, %p)\n", hWnd, hPrinter, pDeviceName, pDevModeOutput, pDevModeInput);
31 return 0;
32}
#define UNIMPLEMENTED
Definition: debug.h:115

Referenced by AdvancedSetupDialog().

◆ AdvancedDocumentPropertiesW()

LONG WINAPI AdvancedDocumentPropertiesW ( HWND  hWnd,
HANDLE  hPrinter,
LPWSTR  pDeviceName,
PDEVMODEW  pDevModeOutput,
PDEVMODEW  pDevModeInput 
)

◆ ClosePrinter()

WINBOOL WINAPI ClosePrinter ( HANDLE  hPrinter)

Definition at line 176 of file printers.c.

177{
178 BOOL bReturnValue;
180
181 FIXME("ClosePrinter %p\n",hPrinter);
182
183 // Sanity checks.
184 if (!pHandle)
185 {
187 return FALSE;
188 }
189
190 // FIXME: Call FindClosePrinterChangeNotification for all created change notifications (according to MSDN).
191
192 // Call CloseHandle of the Print Provider.
193 bReturnValue = pHandle->pPrintProvider->PrintProvider.fpClosePrinter(pHandle->hPrinter);
194 FIXME("ClosePrinter 2\n");
195 // Free our handle information.
196 DllFreeSplMem(pHandle);
197 FIXME("ClosePrinter 3\n");
198 return bReturnValue;
199}
#define FIXME(fmt,...)
Definition: debug.h:111
BOOL WINAPI DllFreeSplMem(PVOID pMem)
Definition: memory.c:112

Referenced by _RpcClosePrinter(), AdvancedSetupDialog(), DeviceCapabilitiesW(), DocumentPropertiesW(), GetMonitorUI(), LocalmonClosePort(), LocalmonEndDocPort(), localui_AddPortUI(), localui_ConfigurePortUI(), localui_DeletePortUI(), pagesetup_change_printer(), pagesetup_printer_properties(), PRINTDLG_ChangePrinterA(), PRINTDLG_ChangePrinterW(), PRINTDLG_WMCommandA(), PRINTDLG_WMCommandW(), PrintDlgA(), PrintDlgExA(), PrintDlgExW(), PrintDlgW(), PrintRawJob(), SpoolerPrinterEvent(), START_TEST(), test_ClosePrinter(), test_DocumentProperties(), test_EnumForms(), test_GetPrinter(), test_GetPrinterData(), test_GetPrinterDataEx(), test_GetPrinterDriver(), test_OpenPrinter(), test_OpenPrinter_defaults(), test_XcvDataW_MonitorUI(), test_XcvDataW_PortIsValid(), and wmain().

◆ ConfigurePortA()

WINBOOL WINAPI ConfigurePortA ( LPSTR  pName,
HWND  hWnd,
LPSTR  pPortName 
)

Definition at line 629 of file ports.c.

630{
631 LPWSTR nameW = NULL;
632 LPWSTR portW = NULL;
633 INT len;
634 DWORD res;
635
636 TRACE("ConfigurePortA(%s, %p, %s)\n", debugstr_a(pName), hWnd, debugstr_a(pPortName));
637
638 /* convert servername to unicode */
639 if (pName)
640 {
641 len = MultiByteToWideChar(CP_ACP, 0, pName, -1, NULL, 0);
642 nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
644 }
645
646 /* convert portname to unicode */
647 if (pPortName)
648 {
649 len = MultiByteToWideChar(CP_ACP, 0, pPortName, -1, NULL, 0);
650 portW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
651 MultiByteToWideChar(CP_ACP, 0, pPortName, -1, portW, len);
652 }
653
654 res = ConfigurePortW(nameW, hWnd, portW);
655
657 if (portW) HeapFree(GetProcessHeap(), 0, portW);
658
659 return res;
660}
int32_t INT
Definition: typedefs.h:58
BOOL WINAPI ConfigurePortW(PWSTR pName, HWND hWnd, PWSTR pPortName)
Definition: ports.c:663

Referenced by test_ConfigurePort().

◆ ConfigurePortW()

WINBOOL WINAPI ConfigurePortW ( LPWSTR  pName,
HWND  hWnd,
LPWSTR  pPortName 
)

◆ ConnectToPrinterDlg()

HANDLE WINAPI ConnectToPrinterDlg ( HWND  hwnd,
DWORD  Flags 
)

◆ DeleteFormA()

WINBOOL WINAPI DeleteFormA ( HANDLE  hPrinter,
LPSTR  pFormName 
)

Definition at line 129 of file forms.c.

130{
131 UNICODE_STRING FormNameW;
132 BOOL Ret;
133
134 TRACE("DeleteFormA(%p, %s)\n", hPrinter, pFormName);
135
136 AsciiToUnicode(&FormNameW, pFormName);
137
138 Ret = DeleteFormW( hPrinter, FormNameW.Buffer );
139
140 RtlFreeUnicodeString(&FormNameW);
141
142 return Ret;
143}
BOOL WINAPI DeleteFormW(HANDLE hPrinter, PWSTR pFormName)
Definition: forms.c:146

◆ DeleteFormW()

WINBOOL WINAPI DeleteFormW ( HANDLE  hPrinter,
LPWSTR  pFormName 
)

◆ DeleteMonitorA()

WINBOOL WINAPI DeleteMonitorA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pMonitorName 
)

Definition at line 111 of file monitors.c.

112{
113 LPWSTR nameW = NULL;
114 LPWSTR EnvironmentW = NULL;
115 LPWSTR MonitorNameW = NULL;
116 BOOL res;
117 INT len;
118
119 TRACE("DeleteMonitorA(%s, %s, %s)\n", pName, pEnvironment, pMonitorName);
120
121 if (pName) {
122 len = MultiByteToWideChar(CP_ACP, 0, pName, -1, NULL, 0);
123 nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
125 }
126
127 if (pEnvironment) {
128 len = MultiByteToWideChar(CP_ACP, 0, pEnvironment, -1, NULL, 0);
129 EnvironmentW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
130 MultiByteToWideChar(CP_ACP, 0, pEnvironment, -1, EnvironmentW, len);
131 }
132 if (pMonitorName) {
133 len = MultiByteToWideChar(CP_ACP, 0, pMonitorName, -1, NULL, 0);
134 MonitorNameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
135 MultiByteToWideChar(CP_ACP, 0, pMonitorName, -1, MonitorNameW, len);
136 }
137
138 res = DeleteMonitorW(nameW, EnvironmentW, MonitorNameW);
139
140 if (MonitorNameW) HeapFree(GetProcessHeap(), 0, MonitorNameW);
141 if (EnvironmentW) HeapFree(GetProcessHeap(), 0, EnvironmentW);
143
144 return (res);
145}
BOOL WINAPI DeleteMonitorW(PWSTR pName, PWSTR pEnvironment, PWSTR pMonitorName)
Definition: monitors.c:148

Referenced by find_installed_monitor(), test_AddMonitor(), and test_DeleteMonitor().

◆ DeleteMonitorW()

WINBOOL WINAPI DeleteMonitorW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pMonitorName 
)

◆ DeletePortA()

WINBOOL WINAPI DeletePortA ( LPSTR  pName,
HWND  hWnd,
LPSTR  pPortName 
)

Definition at line 705 of file ports.c.

706{
707 LPWSTR nameW = NULL;
708 LPWSTR portW = NULL;
709 INT len;
710 DWORD res;
711
712 FIXME("DeletePortA(%s, %p, %s)\n", debugstr_a(pName), hWnd, debugstr_a(pPortName));
713
714 /* convert servername to unicode */
715 if (pName)
716 {
717 len = MultiByteToWideChar(CP_ACP, 0, pName, -1, NULL, 0);
718 nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
720 }
721
722 /* convert portname to unicode */
723 if (pPortName)
724 {
725 len = MultiByteToWideChar(CP_ACP, 0, pPortName, -1, NULL, 0);
726 portW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
727 MultiByteToWideChar(CP_ACP, 0, pPortName, -1, portW, len);
728 }
729
730 res = DeletePortW(nameW, hWnd, portW);
731
733 if (portW) HeapFree(GetProcessHeap(), 0, portW);
734
735 return res;
736}
BOOL WINAPI DeletePortW(PWSTR pName, HWND hWnd, PWSTR pPortName)
Definition: ports.c:739

Referenced by test_AddPortEx(), and test_DeletePort().

◆ DeletePortW()

WINBOOL WINAPI DeletePortW ( LPWSTR  pName,
HWND  hWnd,
LPWSTR  pPortName 
)

◆ DeletePrinter()

WINBOOL WINAPI DeletePrinter ( HANDLE  hPrinter)

Definition at line 202 of file printers.c.

203{
205
206 // Sanity checks.
207 if (!pHandle)
208 {
210 return FALSE;
211 }
212
213 return pHandle->pPrintProvider->PrintProvider.fpDeletePrinter(pHandle->hPrinter);
214}

Referenced by _RpcDeletePrinter().

◆ DeletePrinterConnectionA()

WINBOOL WINAPI DeletePrinterConnectionA ( LPSTR  pName)

◆ DeletePrinterConnectionW()

WINBOOL WINAPI DeletePrinterConnectionW ( LPWSTR  pName)

◆ DeletePrinterDataA()

DWORD WINAPI DeletePrinterDataA ( HANDLE  hPrinter,
LPSTR  pValueName 
)

Definition at line 43 of file printerdata.c.

44{
45 LPWSTR valuenameW = NULL;
46 INT len;
47 DWORD res;
48
49 TRACE("DeletePrinterDataA(%p, %s)\n", hPrinter, pValueName);
50
51 if (pValueName)
52 {
53 len = MultiByteToWideChar(CP_ACP, 0, pValueName, -1, NULL, 0);
54 valuenameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
55 MultiByteToWideChar(CP_ACP, 0, pValueName, -1, valuenameW, len);
56 }
57
58 res = DeletePrinterDataW( hPrinter, valuenameW );
59
60 if (valuenameW) HeapFree(GetProcessHeap(), 0, valuenameW);
61
62 return res;
63
64}
DWORD WINAPI DeletePrinterDataW(HANDLE hPrinter, PWSTR pValueName)
Definition: printerdata.c:107

◆ DeletePrinterDataExA()

DWORD WINAPI DeletePrinterDataExA ( HANDLE  hPrinter,
LPCSTR  pKeyName,
LPCSTR  pValueName 
)

Definition at line 67 of file printerdata.c.

68{
69 LPWSTR keynameW = NULL;
70 LPWSTR valuenameW = NULL;
71 INT len;
72 DWORD res;
73
74 TRACE("DeletePrinterDataExA(%p, %s, %s)\n", hPrinter, pKeyName, pValueName);
75
76 if (pKeyName)
77 {
78 len = MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, NULL, 0);
79 keynameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
80 MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, keynameW, len);
81 }
82
83 if (pValueName)
84 {
85 len = MultiByteToWideChar(CP_ACP, 0, pValueName, -1, NULL, 0);
86 valuenameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
87 MultiByteToWideChar(CP_ACP, 0, pValueName, -1, valuenameW, len);
88 }
89
90 res = DeletePrinterDataExW( hPrinter, keynameW, valuenameW );
91
92 if (keynameW) HeapFree(GetProcessHeap(), 0, keynameW);
93 if (valuenameW) HeapFree(GetProcessHeap(), 0, valuenameW);
94
95 return res;
96}
DWORD WINAPI DeletePrinterDataExW(HANDLE hPrinter, PCWSTR pKeyName, PCWSTR pValueName)
Definition: printerdata.c:99

◆ DeletePrinterDataExW()

DWORD WINAPI DeletePrinterDataExW ( HANDLE  hPrinter,
LPCWSTR  pKeyName,
LPCWSTR  pValueName 
)

◆ DeletePrinterDataW()

DWORD WINAPI DeletePrinterDataW ( HANDLE  hPrinter,
LPWSTR  pValueName 
)

◆ DeletePrinterDriverA()

WINBOOL WINAPI DeletePrinterDriverA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pDriverName 
)

Definition at line 392 of file printerdrivers.c.

393{
394 TRACE("DeletePrinterDriverA(%s, %s, %s)\n", pName, pEnvironment, pDriverName);
395 return DeletePrinterDriverExA(pName, pEnvironment, pDriverName, 0, 0);
396}
BOOL WINAPI DeletePrinterDriverExA(PSTR pName, PSTR pEnvironment, PSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag)

◆ DeletePrinterDriverExA()

WINBOOL WINAPI DeletePrinterDriverExA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pDriverName,
DWORD  dwDeleteFlag,
DWORD  dwVersionFlag 
)

Definition at line 399 of file printerdrivers.c.

400{
401 DWORD dwErrorCode;
402 UNICODE_STRING NameW, EnvW, DriverW;
403 BOOL ret;
404
405 TRACE("DeletePrinterDriverExA(%s, %s, %s, %lu, %lu)\n", pName, pEnvironment, pDriverName, dwDeleteFlag, dwVersionFlag);
406
407 AsciiToUnicode(&NameW, pName);
408 AsciiToUnicode(&EnvW, pEnvironment);
409 AsciiToUnicode(&DriverW, pDriverName);
410
411 ret = DeletePrinterDriverExW(NameW.Buffer, EnvW.Buffer, DriverW.Buffer, dwDeleteFlag, dwVersionFlag);
412
413 dwErrorCode = GetLastError();
414
415 RtlFreeUnicodeString(&DriverW);
417 RtlFreeUnicodeString(&NameW);
418
419 SetLastError(dwErrorCode);
420 return ret;
421}
BOOL WINAPI DeletePrinterDriverExW(PWSTR pName, PWSTR pEnvironment, PWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionFlag)
int ret
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by DeletePrinterDriverA().

◆ DeletePrinterDriverExW()

WINBOOL WINAPI DeletePrinterDriverExW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pDriverName,
DWORD  dwDeleteFlag,
DWORD  dwVersionFlag 
)

◆ DeletePrinterDriverW()

WINBOOL WINAPI DeletePrinterDriverW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pDriverName 
)

◆ DeletePrinterKeyA()

DWORD WINAPI DeletePrinterKeyA ( HANDLE  hPrinter,
LPCSTR  pKeyName 
)

Definition at line 115 of file printerdata.c.

116{
117 LPWSTR keynameW = NULL;
118 INT len;
119 DWORD res;
120
121 TRACE("DeletePrinterKeyA(%p, %s)\n", hPrinter, pKeyName);
122
123 if (pKeyName)
124 {
125 len = MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, NULL, 0);
126 keynameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
127 MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, keynameW, len);
128 }
129
130 res = DeletePrinterKeyW( hPrinter, keynameW );
131
132 if (keynameW) HeapFree(GetProcessHeap(), 0, keynameW);
133
134 return res;
135}
DWORD WINAPI DeletePrinterKeyW(HANDLE hPrinter, PCWSTR pKeyName)
Definition: printerdata.c:138

◆ DeletePrinterKeyW()

DWORD WINAPI DeletePrinterKeyW ( HANDLE  hPrinter,
LPCWSTR  pKeyName 
)

◆ DeletePrintProcessorA()

WINBOOL WINAPI DeletePrintProcessorA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pPrintProcessorName 
)

Definition at line 58 of file printprocessors.c.

59{
60 UNICODE_STRING NameW, EnvW, ProcessorW;
61 BOOL Ret;
62
63 TRACE("DeletePrintProcessorA(%s, %s, %s)\n", pName, pEnvironment, pPrintProcessorName);
64
65 AsciiToUnicode(&NameW, pName);
66 AsciiToUnicode(&EnvW, pEnvironment);
67 AsciiToUnicode(&ProcessorW, pPrintProcessorName);
68
69 Ret = DeletePrintProcessorW(NameW.Buffer, EnvW.Buffer, ProcessorW.Buffer);
70
71 RtlFreeUnicodeString(&ProcessorW);
74
75 return Ret;
76}
BOOL WINAPI DeletePrintProcessorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPrintProcessorName)

◆ DeletePrintProcessorW()

WINBOOL WINAPI DeletePrintProcessorW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pPrintProcessorName 
)

◆ DeletePrintProvidorA()

WINBOOL WINAPI DeletePrintProvidorA ( LPSTR  pName,
LPSTR  pEnvironment,
LPSTR  pPrintProvidorName 
)

Definition at line 121 of file printproviders.c.

122{
123 UNICODE_STRING NameW, EnvW, ProviderW;
124 BOOL Ret;
125
126 TRACE("DeletePrintProvidorW(%s, %s, %s)\n", pName, pEnvironment, pPrintProviderName);
127
128 AsciiToUnicode(&NameW, pName);
129 AsciiToUnicode(&EnvW, pEnvironment);
130 AsciiToUnicode(&ProviderW, pPrintProviderName);
131
132 Ret = DeletePrintProvidorW(NameW.Buffer, EnvW.Buffer, ProviderW.Buffer);
133
134 RtlFreeUnicodeString(&ProviderW);
136 RtlFreeUnicodeString(&NameW);
137
138 return Ret;
139}
BOOL WINAPI DeletePrintProvidorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPrintProviderName)

◆ DeletePrintProvidorW()

WINBOOL WINAPI DeletePrintProvidorW ( LPWSTR  pName,
LPWSTR  pEnvironment,
LPWSTR  pPrintProvidorName 
)

◆ DocumentPropertiesA()

LONG WINAPI DocumentPropertiesA ( HWND  hWnd,
HANDLE  hPrinter,
LPSTR  pDeviceName,
PDEVMODEA  pDevModeOutput,
PDEVMODEA  pDevModeInput,
DWORD  fMode 
)

Definition at line 666 of file printers.c.

667{
669 PDEVMODEW pdmwInput = NULL;
670 PDEVMODEW pdmwOutput = NULL;
671 LONG lReturnValue = -1;
672 DWORD cch;
673
674 FIXME("DocumentPropertiesA(%p, %p, %s, %p, %p, %lu)\n", hWnd, hPrinter, pDeviceName, pDevModeOutput, pDevModeInput, fMode);
675
676 if (pDeviceName)
677 {
678 // Convert pName to a Unicode string pwszDeviceName.
679 cch = strlen(pDeviceName);
680
681 pwszDeviceName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
682 if (!pwszDeviceName)
683 {
685 ERR("HeapAlloc failed!\n");
686 goto Cleanup;
687 }
688
689 MultiByteToWideChar(CP_ACP, 0, pDeviceName, -1, pwszDeviceName, cch + 1);
690 }
691
692 if (pDevModeInput)
693 {
694 // Create working buffer for input to DocumentPropertiesW.
695 RosConvertAnsiDevModeToUnicodeDevmode(pDevModeInput, &pdmwInput);
696 }
697
698 if (pDevModeOutput)
699 {
700 // Create working buffer for output from DocumentPropertiesW.
701
702 // Do it RIGHT! Get the F...ing Size!
704
705 if ( Size < 0 )
706 {
707 goto Cleanup;
708 }
709
710 pdmwOutput = HeapAlloc(hProcessHeap, 0, Size);
711 if (!pdmwOutput)
712 {
714 ERR("HeapAlloc failed!\n");
715 goto Cleanup;
716 }
717 }
718
719 lReturnValue = DocumentPropertiesW(hWnd, hPrinter, pwszDeviceName, pdmwOutput, pdmwInput, fMode);
720 FIXME("lReturnValue from DocumentPropertiesW is '%ld'.\n", lReturnValue);
721
722 if (lReturnValue < 0)
723 {
724 FIXME("DocumentPropertiesW failed!\n");
725 goto Cleanup;
726 }
727
728 if (pdmwOutput)
729 {
730 RosConvertUnicodeDevModeToAnsiDevmode(pdmwOutput, pDevModeOutput);
731 }
732
733Cleanup:
736
737 if (pdmwInput)
738 HeapFree(hProcessHeap, 0, pdmwInput);
739
740 if (pdmwOutput)
741 HeapFree(hProcessHeap, 0, pdmwOutput);
742
743 return lReturnValue;
744}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter, LPWSTR pDeviceName, PDEVMODEW pDevModeOutput, PDEVMODEW pDevModeInput, DWORD fMode)
Definition: printers.c:1177
#define ERR(fmt,...)
Definition: debug.h:110
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
void RosConvertUnicodeDevModeToAnsiDevmode(PDEVMODEW pDevModeInput, PDEVMODEA pDevModeOutput)
Definition: devmode.c:353
void RosConvertAnsiDevModeToUnicodeDevmode(PDEVMODEA pDevModeInput, PDEVMODEW *pDevModeOutput)
Definition: devmode.c:285
static const WCHAR Cleanup[]
Definition: register.c:80
HANDLE hProcessHeap
Definition: kbswitch.c:37
static DWORD DWORD void LPSTR DWORD cch
Definition: str.c:202
long LONG
Definition: pedump.c:60
uint16_t * PWSTR
Definition: typedefs.h:56
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO _In_ HDEV _In_ LPWSTR pwszDeviceName
Definition: winddi.h:3556

Referenced by PRINTDLG_ChangePrinterA(), PRINTDLG_WMCommandA(), and test_DocumentProperties().

◆ DocumentPropertiesW()

LONG WINAPI DocumentPropertiesW ( HWND  hWnd,
HANDLE  hPrinter,
LPWSTR  pDeviceName,
PDEVMODEW  pDevModeOutput,
PDEVMODEW  pDevModeInput,
DWORD  fMode 
)

Definition at line 1177 of file printers.c.

1178{
1179 HANDLE hUseHandle = NULL;
1180 DOCUMENTPROPERTYHEADER docprophdr;
1181 LONG Result = IDOK;
1182
1183 FIXME("DocumentPropertiesW(%p, %p, %S, %p, %p, %lu)\n", hWnd, hPrinter, pDeviceName, pDevModeOutput, pDevModeInput, fMode);
1184
1185 if (hPrinter)
1186 {
1187 hUseHandle = hPrinter;
1188 }
1189 else if (!OpenPrinterW(pDeviceName, &hUseHandle, NULL))
1190 {
1191 ERR("No handle, and no usable printer name passed in\n");
1192 return -1;
1193 }
1194
1195 if ( !(fMode & DM_IN_BUFFER ) ||
1196 ( ( pDevModeInput && !IsValidDevmodeNoSizeW( (PDEVMODEW)pDevModeInput ) ) ) )
1197 {
1198 pDevModeInput = NULL;
1199 fMode &= ~DM_IN_BUFFER;
1200 }
1201
1202 docprophdr.cbSize = sizeof(DOCUMENTPROPERTYHEADER);
1203 docprophdr.Reserved = 0;
1204 docprophdr.hPrinter = hUseHandle;
1205 docprophdr.pszPrinterName = pDeviceName;
1206 docprophdr.cbOut = 0;
1207
1208 if ( pDevModeOutput )
1209 {
1210 docprophdr.pdmIn = NULL;
1211 docprophdr.pdmOut = NULL;
1212 docprophdr.fMode = 0;
1213 FIXME("DPW : Call DocumentPropertySheets with pDevModeOutput %p\n",pDevModeOutput);
1214 docprophdr.cbOut = DocumentPropertySheets( NULL, (LPARAM)&docprophdr );
1215 }
1216
1217 docprophdr.pdmIn = pDevModeInput;
1218 docprophdr.pdmOut = pDevModeOutput;
1219 docprophdr.fMode = fMode;
1220
1221 if ( fMode & DM_IN_PROMPT )
1222 {
1224
1225 //
1226 // Now call the Property Sheet for Print > Properties.
1227 //
1229 {
1230 FIXME("CallCommonPropertySheetUI return error\n");
1232 }
1233 else
1234 Result = (Result == CPSUI_OK) ? IDOK : IDCANCEL;
1235 FIXME("CallCommonPropertySheetUI returned\n");
1236 }
1237 else
1238 {
1239 FIXME("DPW : CallDocumentPropertySheets\n");
1240 Result = DocumentPropertySheets( NULL, (LPARAM)&docprophdr );
1241 }
1242
1244 {
1245 if ( pDevModeOutput )
1246 {
1247 if ( !IsValidDevmodeNoSizeW( pDevModeOutput ) )
1248 {
1249 ERR("DPW : Improper pDevModeOutput size.\n");
1250 Result = -1;
1251 }
1252 }
1253 else
1254 {
1255 ERR("No pDevModeOutput\n");
1256 }
1257 }
1258
1259 if (hUseHandle && !hPrinter)
1260 ClosePrinter(hUseHandle);
1261 return Result;
1262}
BOOL WINAPI OpenPrinterW(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault)
Definition: printers.c:2653
LONG WINAPI DocumentPropertySheets(PPROPSHEETUI_INFO pCPSUIInfo, LPARAM lparam)
Definition: printers.c:919
BOOL WINAPI ClosePrinter(HANDLE hPrinter)
Definition: printers.c:411
LONG WINAPI CallCommonPropertySheetUI(HWND hWnd, PFNPROPSHEETUI pfnPropSheetUI, LPARAM lparam, LPDWORD pResult)
Definition: printers.c:1155
BOOL WINAPI IsValidDevmodeNoSizeW(PDEVMODEW pDevmode)
Definition: devmode.c:238
#define CPSUI_OK
Definition: compstui.h:640
#define CPSUI_CANCEL
Definition: compstui.h:639
#define ERR_CPSUI_GETLASTERROR
Definition: compstui.h:644
#define ERR_CPSUI_ALLOCMEM_FAILED
Definition: compstui.h:645
LONG(FAR * PFNPROPSHEETUI)(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam)
Definition: compstui.h:905
struct _DOCUMENTPROPERTYHEADER DOCUMENTPROPERTYHEADER
uint32_t * LPDWORD
Definition: typedefs.h:59
#define DM_IN_BUFFER
Definition: windef.h:357
LONG_PTR LPARAM
Definition: windef.h:208
#define DM_IN_PROMPT
Definition: windef.h:358
#define IDCANCEL
Definition: winuser.h:831
#define IDOK
Definition: winuser.h:830
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by DocumentPropertiesA(), pagesetup_change_printer(), pagesetup_printer_properties(), PRINTDLG_ChangePrinterW(), and PRINTDLG_WMCommandW().

◆ EndDocPrinter()

WINBOOL WINAPI EndDocPrinter ( HANDLE  hPrinter)

Definition at line 217 of file printers.c.

218{
220
221 // Sanity checks.
222 if (!pHandle)
223 {
225 return FALSE;
226 }
227
228 return pHandle->pPrintProvider->PrintProvider.fpEndDocPrinter(pHandle->hPrinter);
229}

Referenced by _RpcEndDocPrinter(), PrintRawJob(), and wmain().

◆ EndPagePrinter()

WINBOOL WINAPI EndPagePrinter ( HANDLE  hPrinter)

Definition at line 232 of file printers.c.

233{
235
236 // Sanity checks.
237 if (!pHandle)
238 {
240 return FALSE;
241 }
242
243 return pHandle->pPrintProvider->PrintProvider.fpEndPagePrinter(pHandle->hPrinter);
244}

Referenced by _RpcEndPagePrinter(), and wmain().

◆ EnumFormsA()

WINBOOL WINAPI EnumFormsA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pForm,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by test_EnumForms().

◆ EnumFormsW()

WINBOOL WINAPI EnumFormsW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pForm,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumJobsA()

WINBOOL WINAPI EnumJobsA ( HANDLE  hPrinter,
DWORD  FirstJob,
DWORD  NoJobs,
DWORD  Level,
LPBYTE  pJob,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumJobsW()

WINBOOL WINAPI EnumJobsW ( HANDLE  hPrinter,
DWORD  FirstJob,
DWORD  NoJobs,
DWORD  Level,
LPBYTE  pJob,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumMonitorsA()

WINBOOL WINAPI EnumMonitorsA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pMonitor,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by test_EnumMonitors().

◆ EnumMonitorsW()

WINBOOL WINAPI EnumMonitorsW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pMonitor,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by PSetupCreateMonitorInfo().

◆ EnumPortsA()

WINBOOL WINAPI EnumPortsA ( LPSTR  pName,
DWORD  Level,
LPBYTE  pPorts,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by test_EnumPorts().

◆ EnumPortsW()

WINBOOL WINAPI EnumPortsW ( LPWSTR  pName,
DWORD  Level,
LPBYTE  pPorts,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by DoesPortExist(), and find_portinfo2().

◆ EnumPrinterDataA()

DWORD WINAPI EnumPrinterDataA ( HANDLE  hPrinter,
DWORD  dwIndex,
LPSTR  pValueName,
DWORD  cbValueName,
LPDWORD  pcbValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  cbData,
LPDWORD  pcbData 
)

◆ EnumPrinterDataExA()

DWORD WINAPI EnumPrinterDataExA ( HANDLE  hPrinter,
LPCSTR  pKeyName,
LPBYTE  pEnumValues,
DWORD  cbEnumValues,
LPDWORD  pcbEnumValues,
LPDWORD  pnEnumValues 
)

◆ EnumPrinterDataExW()

DWORD WINAPI EnumPrinterDataExW ( HANDLE  hPrinter,
LPCWSTR  pKeyName,
LPBYTE  pEnumValues,
DWORD  cbEnumValues,
LPDWORD  pcbEnumValues,
LPDWORD  pnEnumValues 
)

◆ EnumPrinterDataW()

DWORD WINAPI EnumPrinterDataW ( HANDLE  hPrinter,
DWORD  dwIndex,
LPWSTR  pValueName,
DWORD  cbValueName,
LPDWORD  pcbValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  cbData,
LPDWORD  pcbData 
)

◆ EnumPrinterDriversA()

WINBOOL WINAPI EnumPrinterDriversA ( LPSTR  pName,
LPSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by test_EnumPrinterDrivers().

◆ EnumPrinterDriversW()

WINBOOL WINAPI EnumPrinterDriversW ( LPWSTR  pName,
LPWSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumPrinterKeyA()

DWORD WINAPI EnumPrinterKeyA ( HANDLE  hPrinter,
LPCSTR  pKeyName,
LPSTR  pSubkey,
DWORD  cbSubkey,
LPDWORD  pcbSubkey 
)

◆ EnumPrinterKeyW()

DWORD WINAPI EnumPrinterKeyW ( HANDLE  hPrinter,
LPCWSTR  pKeyName,
LPWSTR  pSubkey,
DWORD  cbSubkey,
LPDWORD  pcbSubkey 
)

◆ EnumPrintersA()

WINBOOL WINAPI EnumPrintersA ( DWORD  Flags,
LPSTR  Name,
DWORD  Level,
LPBYTE  pPrinterEnum,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumPrintersW()

WINBOOL WINAPI EnumPrintersW ( DWORD  Flags,
LPWSTR  Name,
DWORD  Level,
LPBYTE  pPrinterEnum,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumPrintProcessorDatatypesA()

WINBOOL WINAPI EnumPrintProcessorDatatypesA ( LPSTR  pName,
LPSTR  pPrintProcessorName,
DWORD  Level,
LPBYTE  pDatatypes,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumPrintProcessorDatatypesW()

WINBOOL WINAPI EnumPrintProcessorDatatypesW ( LPWSTR  pName,
LPWSTR  pPrintProcessorName,
DWORD  Level,
LPBYTE  pDatatypes,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

Referenced by START_TEST().

◆ EnumPrintProcessorsA()

WINBOOL WINAPI EnumPrintProcessorsA ( LPSTR  pName,
LPSTR  pEnvironment,
DWORD  Level,
LPBYTE  pPrintProcessorInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ EnumPrintProcessorsW()

WINBOOL WINAPI EnumPrintProcessorsW ( LPWSTR  pName,
LPWSTR  pEnvironment,
DWORD  Level,
LPBYTE  pPrintProcessorInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded,
LPDWORD  pcReturned 
)

◆ ExtDeviceMode()

LONG ExtDeviceMode ( HWND  hWnd,
HANDLE  hInst,
LPDEVMODEA  pDevModeOutput,
LPSTR  pDeviceName,
LPSTR  pPort,
LPDEVMODEA  pDevModeInput,
LPSTR  pProfile,
DWORD  fMode 
)

◆ FindClosePrinterChangeNotification()

WINBOOL WINAPI FindClosePrinterChangeNotification ( HANDLE  hChange)

◆ FindFirstPrinterChangeNotification()

HANDLE WINAPI FindFirstPrinterChangeNotification ( HANDLE  hPrinter,
DWORD  fdwFlags,
DWORD  fdwOptions,
LPVOID  pPrinterNotifyOptions 
)

◆ FindNextPrinterChangeNotification()

WINBOOL WINAPI FindNextPrinterChangeNotification ( HANDLE  hChange,
PDWORD  pdwChange,
LPVOID  pPrinterNotifyOptions,
LPVOID ppPrinterNotifyInfo 
)

◆ FlushPrinter()

WINBOOL WINAPI FlushPrinter ( HANDLE  hPrinter,
LPVOID  pBuf,
DWORD  cbBuf,
LPDWORD  pcWritten,
DWORD  cSleep 
)

◆ FreePrinterNotifyInfo()

WINBOOL WINAPI FreePrinterNotifyInfo ( PPRINTER_NOTIFY_INFO  pPrinterNotifyInfo)

◆ GetDefaultPrinterA()

WINBOOL WINAPI GetDefaultPrinterA ( LPSTR  pszBuffer,
LPDWORD  pcchBuffer 
)

Definition at line 1925 of file printers.c.

1926{
1927 DWORD dwErrorCode;
1928 PWSTR pwszBuffer = NULL;
1929
1930 TRACE("GetDefaultPrinterA(%p, %p)\n", pszBuffer, pcchBuffer);
1931
1932 // Sanity check.
1933 if (!pcchBuffer)
1934 {
1935 dwErrorCode = ERROR_INVALID_PARAMETER;
1936 goto Cleanup;
1937 }
1938
1939 // Check if an ANSI buffer was given and if so, allocate a Unicode buffer of the same size.
1940 if (pszBuffer && *pcchBuffer)
1941 {
1942 pwszBuffer = HeapAlloc(hProcessHeap, 0, *pcchBuffer * sizeof(WCHAR));
1943 if (!pwszBuffer)
1944 {
1945 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
1946 ERR("HeapAlloc failed!\n");
1947 goto Cleanup;
1948 }
1949 }
1950
1951 if (!GetDefaultPrinterW(pwszBuffer, pcchBuffer))
1952 {
1953 dwErrorCode = GetLastError();
1954 goto Cleanup;
1955 }
1956
1957 // We successfully got a string in pwszBuffer, so convert the Unicode string to ANSI.
1958 WideCharToMultiByte(CP_ACP, 0, pwszBuffer, -1, pszBuffer, *pcchBuffer, NULL, NULL);
1959
1960 dwErrorCode = ERROR_SUCCESS;
1961
1962Cleanup:
1963 if (pwszBuffer)
1964 HeapFree(hProcessHeap, 0, pwszBuffer);
1965
1966 SetLastError(dwErrorCode);
1967 return (dwErrorCode == ERROR_SUCCESS);
1968}
BOOL WINAPI GetDefaultPrinterW(LPWSTR pszBuffer, LPDWORD pcchBuffer)
Definition: printers.c:1971
#define ERROR_SUCCESS
Definition: deptool.c:10
#define WideCharToMultiByte
Definition: compat.h:111

Referenced by PRINTDLG_CreateDevNames(), PRINTDLG_SetUpPrinterListComboA(), PRINTDLG_WMInitDialog(), and START_TEST().

◆ GetDefaultPrinterW()

WINBOOL WINAPI GetDefaultPrinterW ( LPWSTR  pszBuffer,
LPDWORD  pcchBuffer 
)

Definition at line 1971 of file printers.c.

1972{
1973 DWORD cbNeeded;
1974 DWORD cchInputBuffer;
1975 DWORD dwErrorCode;
1976 HKEY hWindowsKey = NULL;
1977 PWSTR pwszDevice = NULL;
1978 PWSTR pwszComma;
1979
1980 TRACE("GetDefaultPrinterW(%p, %p)\n", pszBuffer, pcchBuffer);
1981
1982 // Sanity check.
1983 if (!pcchBuffer)
1984 {
1985 dwErrorCode = ERROR_INVALID_PARAMETER;
1986 goto Cleanup;
1987 }
1988
1989 cchInputBuffer = *pcchBuffer;
1990
1991 // Open the registry key where the default printer for the current user is stored.
1992 dwErrorCode = (DWORD)RegOpenKeyExW(HKEY_CURRENT_USER, wszWindowsKey, 0, KEY_READ, &hWindowsKey);
1993 if (dwErrorCode != ERROR_SUCCESS)
1994 {
1995 ERR("RegOpenKeyExW failed with status %lu!\n", dwErrorCode);
1996 goto Cleanup;
1997 }
1998
1999 // Determine the size of the required buffer.
2000 dwErrorCode = (DWORD)RegQueryValueExW(hWindowsKey, wszDeviceValue, NULL, NULL, NULL, &cbNeeded);
2001 if (dwErrorCode != ERROR_SUCCESS)
2002 {
2003 ERR("RegQueryValueExW failed with status %lu!\n", dwErrorCode);
2004 goto Cleanup;
2005 }
2006
2007 // Allocate it.
2008 pwszDevice = HeapAlloc(hProcessHeap, 0, cbNeeded);
2009 if (!pwszDevice)
2010 {
2011 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2012 ERR("HeapAlloc failed!\n");
2013 goto Cleanup;
2014 }
2015
2016 // Now get the actual value.
2017 dwErrorCode = RegQueryValueExW(hWindowsKey, wszDeviceValue, NULL, NULL, (PBYTE)pwszDevice, &cbNeeded);
2018 if (dwErrorCode != ERROR_SUCCESS)
2019 {
2020 ERR("RegQueryValueExW failed with status %lu!\n", dwErrorCode);
2021 goto Cleanup;
2022 }
2023
2024 // We get a string "<Printer Name>,winspool,<Port>:".
2025 // Extract the printer name from it.
2026 pwszComma = wcschr(pwszDevice, L',');
2027 if (!pwszComma)
2028 {
2029 ERR("Found no or invalid default printer: %S!\n", pwszDevice);
2030 dwErrorCode = ERROR_INVALID_NAME;
2031 goto Cleanup;
2032 }
2033
2034 // Store the length of the Printer Name (including the terminating NUL character!) in *pcchBuffer.
2035 *pcchBuffer = pwszComma - pwszDevice + 1;
2036
2037 // Check if the supplied buffer is large enough.
2038 if ( !pszBuffer || cchInputBuffer < *pcchBuffer)
2039 {
2040 dwErrorCode = ERROR_INSUFFICIENT_BUFFER;
2041 goto Cleanup;
2042 }
2043
2044 // Copy the default printer.
2045 *pwszComma = 0;
2046 CopyMemory(pszBuffer, pwszDevice, *pcchBuffer * sizeof(WCHAR));
2047
2048 dwErrorCode = ERROR_SUCCESS;
2049
2050Cleanup:
2051 if (hWindowsKey)
2052 RegCloseKey(hWindowsKey);
2053
2054 if (pwszDevice)
2055 HeapFree(hProcessHeap, 0, pwszDevice);
2056
2057 SetLastError(dwErrorCode);
2058 return (dwErrorCode == ERROR_SUCCESS);
2059}
static const WCHAR wszWindowsKey[]
Definition: printers.c:61
static const WCHAR wszDeviceValue[]
Definition: printers.c:62
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define wcschr
Definition: compat.h:17
#define ERROR_INVALID_NAME
Definition: compat.h:103
#define KEY_READ
Definition: nt_native.h:1023
#define DWORD
Definition: nt_native.h:44
#define L(x)
Definition: ntvdm.h:50
BYTE * PBYTE
Definition: pedump.c:66
#define CopyMemory
Definition: winbase.h:1710
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by get_default_printer(), GetDefaultPrinterA(), pagesetup_set_devnames(), PRINTDLG_CreateDevNamesW(), PRINTDLG_OpenDefaultPrinter(), PRINTDLG_SetUpPrinterListComboW(), PRINTDLG_WMInitDialogW(), SetDefaultPrinterW(), and START_TEST().

◆ GetFormA()

WINBOOL WINAPI GetFormA ( HANDLE  hPrinter,
LPSTR  pFormName,
DWORD  Level,
LPBYTE  pForm,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetFormW()

WINBOOL WINAPI GetFormW ( HANDLE  hPrinter,
LPWSTR  pFormName,
DWORD  Level,
LPBYTE  pForm,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetJobA()

WINBOOL WINAPI GetJobA ( HANDLE  hPrinter,
DWORD  JobId,
DWORD  Level,
LPBYTE  pJob,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetJobW()

WINBOOL WINAPI GetJobW ( HANDLE  hPrinter,
DWORD  JobId,
DWORD  Level,
LPBYTE  pJob,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Referenced by _StartDocPrinterSpooled().

◆ GetPrinterA()

WINBOOL WINAPI GetPrinterA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pPrinter,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Definition at line 2062 of file printers.c.

2063{
2064 DWORD dwErrorCode;
2065 PPRINTER_INFO_1A ppi1a = (PPRINTER_INFO_1A)pPrinter;
2066 PPRINTER_INFO_1W ppi1w = (PPRINTER_INFO_1W)pPrinter;
2067 PPRINTER_INFO_2A ppi2a = (PPRINTER_INFO_2A)pPrinter;
2068 PPRINTER_INFO_2W ppi2w = (PPRINTER_INFO_2W)pPrinter;
2069 PPRINTER_INFO_4A ppi4a = (PPRINTER_INFO_4A)pPrinter;
2070 PPRINTER_INFO_4W ppi4w = (PPRINTER_INFO_4W)pPrinter;
2071 PPRINTER_INFO_5A ppi5a = (PPRINTER_INFO_5A)pPrinter;
2072 PPRINTER_INFO_5W ppi5w = (PPRINTER_INFO_5W)pPrinter;
2073 PPRINTER_INFO_7A ppi7a = (PPRINTER_INFO_7A)pPrinter;
2074 PPRINTER_INFO_7W ppi7w = (PPRINTER_INFO_7W)pPrinter;
2075 PPRINTER_INFO_9A ppi9a = (PPRINTER_INFO_9A)pPrinter;
2076 PPRINTER_INFO_9W ppi9w = (PPRINTER_INFO_9W)pPrinter;
2077 DWORD cch;
2078
2079 TRACE("GetPrinterA(%p, %lu, %p, %lu, %p)\n", hPrinter, Level, pPrinter, cbBuf, pcbNeeded);
2080
2081 // Check for invalid levels here for early error return. Should be 1-9.
2082 if (Level < 1 || Level > 9)
2083 {
2084 dwErrorCode = ERROR_INVALID_LEVEL;
2085 ERR("Invalid Level!\n");
2086 goto Cleanup;
2087 }
2088
2089 if (!GetPrinterW(hPrinter, Level, pPrinter, cbBuf, pcbNeeded))
2090 {
2091 dwErrorCode = GetLastError();
2092 goto Cleanup;
2093 }
2094
2095 switch (Level)
2096 {
2097 case 1:
2098 {
2099 if (ppi1w->pDescription)
2100 {
2101 PSTR pszDescription;
2102
2103 // Convert Unicode pDescription to a ANSI string pszDescription.
2104 cch = wcslen(ppi1w->pDescription);
2105
2106 pszDescription = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2107 if (!pszDescription)
2108 {
2109 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2110 ERR("HeapAlloc failed!\n");
2111 goto Cleanup;
2112 }
2113
2114 WideCharToMultiByte(CP_ACP, 0, ppi1w->pDescription, -1, pszDescription, cch + 1, NULL, NULL);
2115 StringCchCopyA(ppi1a->pDescription, cch + 1, pszDescription);
2116
2117 HeapFree(hProcessHeap, 0, pszDescription);
2118 }
2119
2120 if (ppi1w->pName)
2121 {
2122 PSTR pszName;
2123
2124 // Convert Unicode pName to a ANSI string pszName.
2125 cch = wcslen(ppi1w->pName);
2126
2127 pszName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2128 if (!pszName)
2129 {
2130 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2131 ERR("HeapAlloc failed!\n");
2132 goto Cleanup;
2133 }
2134
2135 WideCharToMultiByte(CP_ACP, 0, ppi1w->pName, -1, pszName, cch + 1, NULL, NULL);
2136 StringCchCopyA(ppi1a->pName, cch + 1, pszName);
2137
2138 HeapFree(hProcessHeap, 0, pszName);
2139 }
2140
2141 if (ppi1w->pComment)
2142 {
2143 PSTR pszComment;
2144
2145 // Convert Unicode pComment to a ANSI string pszComment.
2146 cch = wcslen(ppi1w->pComment);
2147
2148 pszComment = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2149 if (!pszComment)
2150 {
2151 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2152 ERR("HeapAlloc failed!\n");
2153 goto Cleanup;
2154 }
2155
2156 WideCharToMultiByte(CP_ACP, 0, ppi1w->pComment, -1, pszComment, cch + 1, NULL, NULL);
2157 StringCchCopyA(ppi1a->pComment, cch + 1, pszComment);
2158
2159 HeapFree(hProcessHeap, 0, pszComment);
2160 }
2161 break;
2162 }
2163
2164 case 2:
2165 {
2166 if (ppi2w->pServerName)
2167 {
2168 PSTR pszServerName;
2169
2170 // Convert Unicode pServerName to a ANSI string pszServerName.
2171 cch = wcslen(ppi2w->pServerName);
2172
2173 pszServerName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2174 if (!pszServerName)
2175 {
2176 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2177 ERR("HeapAlloc failed!\n");
2178 goto Cleanup;
2179 }
2180
2181 WideCharToMultiByte(CP_ACP, 0, ppi2w->pServerName, -1, pszServerName, cch + 1, NULL, NULL);
2182 StringCchCopyA(ppi2a->pServerName, cch + 1, pszServerName);
2183
2184 HeapFree(hProcessHeap, 0, pszServerName);
2185 }
2186
2187 if (ppi2w->pPrinterName)
2188 {
2189 PSTR pszPrinterName;
2190
2191 // Convert Unicode pPrinterName to a ANSI string pszPrinterName.
2192 cch = wcslen(ppi2w->pPrinterName);
2193
2194 pszPrinterName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2195 if (!pszPrinterName)
2196 {
2197 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2198 ERR("HeapAlloc failed!\n");
2199 goto Cleanup;
2200 }
2201
2202 WideCharToMultiByte(CP_ACP, 0, ppi2w->pPrinterName, -1, pszPrinterName, cch + 1, NULL, NULL);
2203 StringCchCopyA(ppi2a->pPrinterName, cch + 1, pszPrinterName);
2204
2205 HeapFree(hProcessHeap, 0, pszPrinterName);
2206 }
2207
2208 if (ppi2w->pShareName)
2209 {
2210 PSTR pszShareName;
2211
2212 // Convert Unicode pShareName to a ANSI string pszShareName.
2213 cch = wcslen(ppi2w->pShareName);
2214
2215 pszShareName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2216 if (!pszShareName)
2217 {
2218 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2219 ERR("HeapAlloc failed!\n");
2220 goto Cleanup;
2221 }
2222
2223 WideCharToMultiByte(CP_ACP, 0, ppi2w->pShareName, -1, pszShareName, cch + 1, NULL, NULL);
2224 StringCchCopyA(ppi2a->pShareName, cch + 1, pszShareName);
2225
2226 HeapFree(hProcessHeap, 0, pszShareName);
2227 }
2228
2229 if (ppi2w->pPortName)
2230 {
2231 PSTR pszPortName;
2232
2233 // Convert Unicode pPortName to a ANSI string pszPortName.
2234 cch = wcslen(ppi2w->pPortName);
2235
2236 pszPortName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2237 if (!pszPortName)
2238 {
2239 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2240 ERR("HeapAlloc failed!\n");
2241 goto Cleanup;
2242 }
2243
2244 WideCharToMultiByte(CP_ACP, 0, ppi2w->pPortName, -1, pszPortName, cch + 1, NULL, NULL);
2245 StringCchCopyA(ppi2a->pPortName, cch + 1, pszPortName);
2246
2247 HeapFree(hProcessHeap, 0, pszPortName);
2248 }
2249
2250 if (ppi2w->pDriverName)
2251 {
2252 PSTR pszDriverName;
2253
2254 // Convert Unicode pDriverName to a ANSI string pszDriverName.
2255 cch = wcslen(ppi2w->pDriverName);
2256
2257 pszDriverName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2258 if (!pszDriverName)
2259 {
2260 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2261 ERR("HeapAlloc failed!\n");
2262 goto Cleanup;
2263 }
2264
2265 WideCharToMultiByte(CP_ACP, 0, ppi2w->pDriverName, -1, pszDriverName, cch + 1, NULL, NULL);
2266 StringCchCopyA(ppi2a->pDriverName, cch + 1, pszDriverName);
2267
2268 HeapFree(hProcessHeap, 0, pszDriverName);
2269 }
2270
2271 if (ppi2w->pComment)
2272 {
2273 PSTR pszComment;
2274
2275 // Convert Unicode pComment to a ANSI string pszComment.
2276 cch = wcslen(ppi2w->pComment);
2277
2278 pszComment = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2279 if (!pszComment)
2280 {
2281 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2282 ERR("HeapAlloc failed!\n");
2283 goto Cleanup;
2284 }
2285
2286 WideCharToMultiByte(CP_ACP, 0, ppi2w->pComment, -1, pszComment, cch + 1, NULL, NULL);
2287 StringCchCopyA(ppi2a->pComment, cch + 1, pszComment);
2288
2289 HeapFree(hProcessHeap, 0, pszComment);
2290 }
2291
2292 if (ppi2w->pLocation)
2293 {
2294 PSTR pszLocation;
2295
2296 // Convert Unicode pLocation to a ANSI string pszLocation.
2297 cch = wcslen(ppi2w->pLocation);
2298
2299 pszLocation = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2300 if (!pszLocation)
2301 {
2302 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2303 ERR("HeapAlloc failed!\n");
2304 goto Cleanup;
2305 }
2306
2307 WideCharToMultiByte(CP_ACP, 0, ppi2w->pLocation, -1, pszLocation, cch + 1, NULL, NULL);
2308 StringCchCopyA(ppi2a->pLocation, cch + 1, pszLocation);
2309
2310 HeapFree(hProcessHeap, 0, pszLocation);
2311 }
2312
2313 if (ppi2w->pSepFile)
2314 {
2315 PSTR pszSepFile;
2316
2317 // Convert Unicode pSepFile to a ANSI string pszSepFile.
2318 cch = wcslen(ppi2w->pSepFile);
2319
2320 pszSepFile = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2321 if (!pszSepFile)
2322 {
2323 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2324 ERR("HeapAlloc failed!\n");
2325 goto Cleanup;
2326 }
2327
2328 WideCharToMultiByte(CP_ACP, 0, ppi2w->pSepFile, -1, pszSepFile, cch + 1, NULL, NULL);
2329 StringCchCopyA(ppi2a->pSepFile, cch + 1, pszSepFile);
2330
2331 HeapFree(hProcessHeap, 0, pszSepFile);
2332 }
2333
2334 if (ppi2w->pPrintProcessor)
2335 {
2336 PSTR pszPrintProcessor;
2337
2338 // Convert Unicode pPrintProcessor to a ANSI string pszPrintProcessor.
2339 cch = wcslen(ppi2w->pPrintProcessor);
2340
2341 pszPrintProcessor = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2342 if (!pszPrintProcessor)
2343 {
2344 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2345 ERR("HeapAlloc failed!\n");
2346 goto Cleanup;
2347 }
2348
2349 WideCharToMultiByte(CP_ACP, 0, ppi2w->pPrintProcessor, -1, pszPrintProcessor, cch + 1, NULL, NULL);
2350 StringCchCopyA(ppi2a->pPrintProcessor, cch + 1, pszPrintProcessor);
2351
2352 HeapFree(hProcessHeap, 0, pszPrintProcessor);
2353 }
2354
2355 if (ppi2w->pDatatype)
2356 {
2357 PSTR pszDatatype;
2358
2359 // Convert Unicode pDatatype to a ANSI string pszDatatype.
2360 cch = wcslen(ppi2w->pDatatype);
2361
2362 pszDatatype = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2363 if (!pszDatatype)
2364 {
2365 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2366 ERR("HeapAlloc failed!\n");
2367 goto Cleanup;
2368 }
2369
2370 WideCharToMultiByte(CP_ACP, 0, ppi2w->pDatatype, -1, pszDatatype, cch + 1, NULL, NULL);
2371 StringCchCopyA(ppi2a->pDatatype, cch + 1, pszDatatype);
2372
2373 HeapFree(hProcessHeap, 0, pszDatatype);
2374 }
2375
2376 if (ppi2w->pParameters)
2377 {
2378 PSTR pszParameters;
2379
2380 // Convert Unicode pParameters to a ANSI string pszParameters.
2381 cch = wcslen(ppi2w->pParameters);
2382
2383 pszParameters = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2384 if (!pszParameters)
2385 {
2386 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2387 ERR("HeapAlloc failed!\n");
2388 goto Cleanup;
2389 }
2390
2391 WideCharToMultiByte(CP_ACP, 0, ppi2w->pParameters, -1, pszParameters, cch + 1, NULL, NULL);
2392 StringCchCopyA(ppi2a->pParameters, cch + 1, pszParameters);
2393
2394 HeapFree(hProcessHeap, 0, pszParameters);
2395 }
2396 if ( ppi2w->pDevMode )
2397 {
2399 }
2400 break;
2401 }
2402
2403 case 4:
2404 {
2405 if (ppi4w->pPrinterName)
2406 {
2407 PSTR pszPrinterName;
2408
2409 // Convert Unicode pPrinterName to a ANSI string pszPrinterName.
2410 cch = wcslen(ppi4w->pPrinterName);
2411
2412 pszPrinterName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2413 if (!pszPrinterName)
2414 {
2415 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2416 ERR("HeapAlloc failed!\n");
2417 goto Cleanup;
2418 }
2419
2420 WideCharToMultiByte(CP_ACP, 0, ppi4w->pPrinterName, -1, pszPrinterName, cch + 1, NULL, NULL);
2421 StringCchCopyA(ppi4a->pPrinterName, cch + 1, pszPrinterName);
2422
2423 HeapFree(hProcessHeap, 0, pszPrinterName);
2424 }
2425
2426 if (ppi4w->pServerName)
2427 {
2428 PSTR pszServerName;
2429
2430 // Convert Unicode pServerName to a ANSI string pszServerName.
2431 cch = wcslen(ppi4w->pServerName);
2432
2433 pszServerName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2434 if (!pszServerName)
2435 {
2436 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2437 ERR("HeapAlloc failed!\n");
2438 goto Cleanup;
2439 }
2440
2441 WideCharToMultiByte(CP_ACP, 0, ppi4w->pServerName, -1, pszServerName, cch + 1, NULL, NULL);
2442 StringCchCopyA(ppi4a->pServerName, cch + 1, pszServerName);
2443
2444 HeapFree(hProcessHeap, 0, pszServerName);
2445 }
2446 break;
2447 }
2448
2449 case 5:
2450 {
2451 if (ppi5w->pPrinterName)
2452 {
2453 PSTR pszPrinterName;
2454
2455 // Convert Unicode pPrinterName to a ANSI string pszPrinterName.
2456 cch = wcslen(ppi5w->pPrinterName);
2457
2458 pszPrinterName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2459 if (!pszPrinterName)
2460 {
2461 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2462 ERR("HeapAlloc failed!\n");
2463 goto Cleanup;
2464 }
2465
2466 WideCharToMultiByte(CP_ACP, 0, ppi5w->pPrinterName, -1, pszPrinterName, cch + 1, NULL, NULL);
2467 StringCchCopyA(ppi5a->pPrinterName, cch + 1, pszPrinterName);
2468
2469 HeapFree(hProcessHeap, 0, pszPrinterName);
2470 }
2471
2472 if (ppi5w->pPortName)
2473 {
2474 PSTR pszPortName;
2475
2476 // Convert Unicode pPortName to a ANSI string pszPortName.
2477 cch = wcslen(ppi5w->pPortName);
2478
2479 pszPortName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2480 if (!pszPortName)
2481 {
2482 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2483 ERR("HeapAlloc failed!\n");
2484 goto Cleanup;
2485 }
2486
2487 WideCharToMultiByte(CP_ACP, 0, ppi5w->pPortName, -1, pszPortName, cch + 1, NULL, NULL);
2488 StringCchCopyA(ppi5a->pPortName, cch + 1, pszPortName);
2489
2490 HeapFree(hProcessHeap, 0, pszPortName);
2491 }
2492 break;
2493 }
2494
2495 case 7:
2496 {
2497 if (ppi7w->pszObjectGUID)
2498 {
2499 PSTR pszaObjectGUID;
2500
2501 // Convert Unicode pszObjectGUID to a ANSI string pszaObjectGUID.
2502 cch = wcslen(ppi7w->pszObjectGUID);
2503
2504 pszaObjectGUID = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(CHAR));
2505 if (!pszaObjectGUID)
2506 {
2507 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2508 ERR("HeapAlloc failed!\n");
2509 goto Cleanup;
2510 }
2511
2512 WideCharToMultiByte(CP_ACP, 0, ppi7w->pszObjectGUID, -1, pszaObjectGUID, cch + 1, NULL, NULL);
2513 StringCchCopyA(ppi7a->pszObjectGUID, cch + 1, pszaObjectGUID);
2514
2515 HeapFree(hProcessHeap, 0, pszaObjectGUID);
2516 }
2517 }
2518 break;
2519 case 8:
2520 case 9:
2522 break;
2523 } // switch
2524
2525 dwErrorCode = ERROR_SUCCESS;
2526
2527Cleanup:
2528 SetLastError(dwErrorCode);
2529 return (dwErrorCode == ERROR_SUCCESS);
2530}
BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
Definition: printers.c:2533
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
Definition: strsafe.h:145
LPSTR pComment
Definition: winspool.h:23
LPSTR pDescription
Definition: winspool.h:21
LPWSTR pName
Definition: winspool.h:29
LPWSTR pComment
Definition: winspool.h:30
LPWSTR pDescription
Definition: winspool.h:28
LPDEVMODEA pDevMode
Definition: winspool.h:45
LPSTR pDriverName
Definition: winspool.h:42
LPSTR pParameters
Definition: winspool.h:49
LPSTR pPrinterName
Definition: winspool.h:39
LPSTR pDatatype
Definition: winspool.h:48
LPSTR pPortName
Definition: winspool.h:41
LPSTR pSepFile
Definition: winspool.h:46
LPSTR pServerName
Definition: winspool.h:38
LPSTR pComment
Definition: winspool.h:43
LPSTR pLocation
Definition: winspool.h:44
LPSTR pShareName
Definition: winspool.h:40
LPSTR pPrintProcessor
Definition: winspool.h:47
LPWSTR pPrintProcessor
Definition: winspool.h:71
LPWSTR pSepFile
Definition: winspool.h:70
LPWSTR pDatatype
Definition: winspool.h:72
LPWSTR pServerName
Definition: winspool.h:62
LPWSTR pLocation
Definition: winspool.h:68
LPWSTR pPrinterName
Definition: winspool.h:63
LPWSTR pComment
Definition: winspool.h:67
LPWSTR pPortName
Definition: winspool.h:65
LPWSTR pDriverName
Definition: winspool.h:66
LPWSTR pShareName
Definition: winspool.h:64
LPDEVMODEW pDevMode
Definition: winspool.h:69
LPWSTR pParameters
Definition: winspool.h:73
LPSTR pPrinterName
Definition: winspool.h:94
LPSTR pServerName
Definition: winspool.h:95
LPWSTR pServerName
Definition: winspool.h:101
LPWSTR pPrinterName
Definition: winspool.h:100
LPSTR pPrinterName
Definition: winspool.h:110
LPWSTR pPrinterName
Definition: winspool.h:118
LPWSTR pPortName
Definition: winspool.h:119
LPSTR pszObjectGUID
Definition: winspool.h:134
LPWSTR pszObjectGUID
Definition: winspool.h:139
LPDEVMODEA pDevMode
Definition: winspool.h:166
LPDEVMODEW pDevMode
Definition: winspool.h:170
char * PSTR
Definition: typedefs.h:51
_In_ DWORD _Out_ PDWORD pcbNeeded
Definition: winddi.h:3828
#define ERROR_INVALID_LEVEL
Definition: winerror.h:196
struct _PRINTER_INFO_2W * PPRINTER_INFO_2W
struct _PRINTER_INFO_2A * PPRINTER_INFO_2A
struct _PRINTER_INFO_1A * PPRINTER_INFO_1A
struct _PRINTER_INFO_4W * PPRINTER_INFO_4W
struct _PRINTER_INFO_1W * PPRINTER_INFO_1W
struct _PRINTER_INFO_9A * PPRINTER_INFO_9A
struct _PRINTER_INFO_4A * PPRINTER_INFO_4A
struct _PRINTER_INFO_5A * PPRINTER_INFO_5A
struct _PRINTER_INFO_7W * PPRINTER_INFO_7W
struct _PRINTER_INFO_5W * PPRINTER_INFO_5W
struct _PRINTER_INFO_7A * PPRINTER_INFO_7A
struct _PRINTER_INFO_9W * PPRINTER_INFO_9W
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:56
char CHAR
Definition: xmlstorage.h:175

Referenced by get_printer_infoA(), PRINTDLG_ChangePrinterA(), PrintDlgA(), test_GetPrinter(), and test_OpenPrinter_defaults().

◆ GetPrinterDataA()

DWORD WINAPI GetPrinterDataA ( HANDLE  hPrinter,
LPSTR  pValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  nSize,
LPDWORD  pcbNeeded 
)

Definition at line 326 of file printerdata.c.

327{
328 TRACE("GetPrinterDataA(%p, %s, %p, %p, %lu, %p)\n", hPrinter, pValueName, pType, pData, nSize, pcbNeeded);
329 return GetPrinterDataExA(hPrinter, "PrinterDriverData", pValueName, pType, pData, nSize, pcbNeeded);
330}
DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPCSTR pKeyName, LPCSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
Definition: printerdata.c:333
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
*nSize LPSTR _Inout_ LPDWORD nSize
Definition: winbase.h:2084

Referenced by test_GetPrinterData().

◆ GetPrinterDataExA()

DWORD WINAPI GetPrinterDataExA ( HANDLE  hPrinter,
LPCSTR  pKeyName,
LPCSTR  pValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  nSize,
LPDWORD  pcbNeeded 
)

Definition at line 333 of file printerdata.c.

334{
335 DWORD cbUnicodeData;
336 DWORD cch;
337 DWORD dwReturnValue;
338 DWORD dwType;
339 POSVERSIONINFOEXA pInfoA;
340 POSVERSIONINFOEXW pInfoW;
341 PVOID pUnicodeData = NULL;
342 PWSTR pwszKeyName = NULL;
344
345 TRACE("GetPrinterDataExA(%p, %s, %s, %p, %p, %lu, %p)\n", hPrinter, pKeyName, pValueName, pType, pData, nSize, pcbNeeded);
346
347 if (pKeyName)
348 {
349 // Convert pKeyName to a Unicode string pwszKeyName
350 cch = strlen(pKeyName);
351
352 pwszKeyName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
353 if (!pwszKeyName)
354 {
355 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
356 ERR("HeapAlloc failed!\n");
357 goto Cleanup;
358 }
359
360 MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, pwszKeyName, cch + 1);
361 }
362
363 if (pValueName)
364 {
365 // Convert pValueName to a Unicode string pwszValueName
366 cch = strlen(pValueName);
367
368 pwszValueName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
369 if (!pwszValueName)
370 {
371 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
372 ERR("HeapAlloc failed!\n");
373 goto Cleanup;
374 }
375
376 MultiByteToWideChar(CP_ACP, 0, pValueName, -1, pwszValueName, cch + 1);
377 }
378
379 // We need the data type information, even if no pData was passed.
380 if (!pType)
381 pType = &dwType;
382
383 // Call GetPrinterDataExW for the first time.
384 // If we're lucky, the supplied buffer is already large enough and we don't need to do the expensive RPC call a second time.
385 dwReturnValue = GetPrinterDataExW(hPrinter, pwszKeyName, pwszValueName, pType, pData, nSize, pcbNeeded);
386
387 // If a critical error occurred, just return it. We cannot do anything else in this case.
388 if (dwReturnValue != ERROR_SUCCESS && dwReturnValue != ERROR_MORE_DATA)
389 goto Cleanup;
390
391 // Save the needed buffer size for the Unicode data. We may alter *pcbNeeded for an ANSI buffer size.
392 cbUnicodeData = *pcbNeeded;
393
394 if (*pType == REG_SZ || *pType == REG_MULTI_SZ || *pType == REG_EXPAND_SZ)
395 {
396 // This is a string that needs to be converted from Unicode to ANSI.
397 // Output the required buffer size for the ANSI string.
398 *pcbNeeded /= sizeof(WCHAR);
399 }
400 else if (*pType == REG_NONE)
401 {
402 if (cbUnicodeData == sizeof(OSVERSIONINFOW) && wcsicmp(pwszValueName, SPLREG_OS_VERSION) == 0)
403 {
404 // This is a Unicode OSVERSIONINFOW structure that needs to be converted to an ANSI OSVERSIONINFOA.
405 *pcbNeeded = sizeof(OSVERSIONINFOA);
406 }
407 else if (cbUnicodeData == sizeof(OSVERSIONINFOEXW) && wcsicmp(pwszValueName, SPLREG_OS_VERSIONEX) == 0)
408 {
409 // This is a Unicode OSVERSIONINFOEXW structure that needs to be converted to an ANSI OSVERSIONINFOEXA.
410 *pcbNeeded = sizeof(OSVERSIONINFOEXA);
411 }
412 else
413 {
414 // Other REG_NONE value, nothing to do.
415 goto Cleanup;
416 }
417 }
418
419 // Check if the supplied buffer is large enough for the ANSI data.
420 if (nSize < *pcbNeeded)
421 {
422 dwReturnValue = ERROR_MORE_DATA;
423 goto Cleanup;
424 }
425
426 // Allocate a temporary buffer for the Unicode data.
427 pUnicodeData = HeapAlloc(hProcessHeap, 0, cbUnicodeData);
428 if (!pUnicodeData)
429 {
430 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
431 ERR("HeapAlloc failed!\n");
432 goto Cleanup;
433 }
434
435 if (dwReturnValue == ERROR_SUCCESS)
436 {
437 // ERROR_SUCCESS: The buffer is large enough for the ANSI and the Unicode string,
438 // so the Unicode string has been copied into pData. Copy it to pUnicodeData.
439 CopyMemory(pUnicodeData, pData, cbUnicodeData);
440 }
441 else
442 {
443 // ERROR_MORE_DATA: The buffer is large enough for the ANSI string, but not for the Unicode string.
444 // We have to call GetPrinterDataExW again with the temporary buffer.
445 dwReturnValue = GetPrinterDataExW(hPrinter, pwszKeyName, pwszValueName, NULL, (PBYTE)pUnicodeData, cbUnicodeData, &cbUnicodeData);
446 if (dwReturnValue != ERROR_SUCCESS)
447 goto Cleanup;
448 }
449
450 if (*pType == REG_SZ || *pType == REG_MULTI_SZ || *pType == REG_EXPAND_SZ)
451 {
452 // Convert the Unicode string to ANSI.
453 WideCharToMultiByte(CP_ACP, 0, (PWSTR)pUnicodeData, -1, (PSTR)pData, *pcbNeeded, NULL, NULL);
454 }
455 else
456 {
457 // This is a REG_NONE with either OSVERSIONINFOW or OSVERSIONINFOEXW.
458 // Copy the fields and convert the Unicode CSD Version string to ANSI.
459 pInfoW = (POSVERSIONINFOEXW)pUnicodeData;
460 pInfoA = (POSVERSIONINFOEXA)pData;
461 pInfoA->dwMajorVersion = pInfoW->dwMajorVersion;
462 pInfoA->dwMinorVersion = pInfoW->dwMinorVersion;
463 pInfoA->dwBuildNumber = pInfoW->dwBuildNumber;
464 pInfoA->dwPlatformId = pInfoW->dwPlatformId;
465 WideCharToMultiByte(CP_ACP, 0, pInfoW->szCSDVersion, -1, pInfoA->szCSDVersion, sizeof(pInfoA->szCSDVersion), NULL, NULL);
466
467 if (cbUnicodeData == sizeof(OSVERSIONINFOW))
468 {
469 pInfoA->dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
470 }
471 else
472 {
473 pInfoA->dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
474 pInfoA->wServicePackMajor = pInfoW->wServicePackMajor;
475 pInfoA->wServicePackMinor = pInfoW->wServicePackMinor;
476 pInfoA->wSuiteMask = pInfoW->wSuiteMask;
477 pInfoA->wProductType = pInfoW->wProductType;
478 pInfoA->wReserved = pInfoW->wReserved;
479 }
480 }
481
482Cleanup:
483 if (pwszKeyName)
484 HeapFree(hProcessHeap, 0, pwszKeyName);
485
486 if (pwszValueName)
488
489 if (pUnicodeData)
490 HeapFree(hProcessHeap, 0, pUnicodeData);
491
492 return dwReturnValue;
493}
DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName, LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
Definition: printerdata.c:496
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define wcsicmp
Definition: compat.h:15
#define REG_SZ
Definition: layer.c:22
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define REG_NONE
Definition: nt_native.h:1492
#define REG_EXPAND_SZ
Definition: nt_native.h:1494
ULONG dwMajorVersion
Definition: rtltypes.h:256
ULONG dwMinorVersion
Definition: rtltypes.h:257
ULONG dwOSVersionInfoSize
Definition: rtltypes.h:255
ULONG dwBuildNumber
Definition: rtltypes.h:258
USHORT wServicePackMajor
Definition: rtltypes.h:261
CHAR szCSDVersion[128]
Definition: rtltypes.h:260
USHORT wSuiteMask
Definition: rtltypes.h:263
UCHAR wProductType
Definition: rtltypes.h:264
USHORT wServicePackMinor
Definition: rtltypes.h:262
ULONG dwPlatformId
Definition: rtltypes.h:259
WCHAR szCSDVersion[128]
Definition: rtltypes.h:274
ULONG dwMajorVersion
Definition: rtltypes.h:270
ULONG dwMinorVersion
Definition: rtltypes.h:271
USHORT wServicePackMinor
Definition: rtltypes.h:276
ULONG dwPlatformId
Definition: rtltypes.h:273
UCHAR wProductType
Definition: rtltypes.h:278
USHORT wSuiteMask
Definition: rtltypes.h:277
ULONG dwBuildNumber
Definition: rtltypes.h:272
USHORT wServicePackMajor
Definition: rtltypes.h:275
_In_z_ PCWSTR pwszValueName
Definition: ntuser.h:42
#define SPLREG_OS_VERSIONEX
Definition: winspool.h:1356
#define SPLREG_OS_VERSION
Definition: winspool.h:1355
struct _OSVERSIONINFOA OSVERSIONINFOA
struct _OSVERSIONINFOEXW * POSVERSIONINFOEXW
struct _OSVERSIONINFOEXA OSVERSIONINFOEXA
struct _OSVERSIONINFOEXA * POSVERSIONINFOEXA

Referenced by GetPrinterDataA(), and START_TEST().

◆ GetPrinterDataExW()

DWORD WINAPI GetPrinterDataExW ( HANDLE  hPrinter,
LPCWSTR  pKeyName,
LPCWSTR  pValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  nSize,
LPDWORD  pcbNeeded 
)

Definition at line 101 of file printerdata.c.

102{
104
105 // Sanity check.
106 if (!pHandle)
107 {
108 // Yes, Windows checks for the handle here and sets the last error to ERROR_INVALID_HANDLE,
109 // but returns FALSE and not the error code.
111 return FALSE;
112 }
113
114 // Call GetPrinterDataEx of the Print Provider.
115 return pHandle->pPrintProvider->PrintProvider.fpGetPrinterDataEx(pHandle->hPrinter, pKeyName, pValueName, pType, pData, nSize, pcbNeeded);
116}
#define ERROR_INVALID_HANDLE
Definition: compat.h:98

Referenced by _RpcGetPrinterDataEx(), GetPrinterDataExA(), GetPrinterDataW(), and START_TEST().

◆ GetPrinterDataW()

DWORD WINAPI GetPrinterDataW ( HANDLE  hPrinter,
LPWSTR  pValueName,
LPDWORD  pType,
LPBYTE  pData,
DWORD  nSize,
LPDWORD  pcbNeeded 
)

Definition at line 119 of file printerdata.c.

120{
121 // The ReactOS Printing Stack forwards all GetPrinterData calls to GetPrinterDataEx as soon as possible.
122 // This function may only be called if spoolss.dll is used together with Windows Printing Stack components.
123 WARN("This function should never be called!\n");
124 return GetPrinterDataExW(hPrinter, L"PrinterDriverData", pValueName, pType, pData, nSize, pcbNeeded);
125}
#define WARN(fmt,...)
Definition: debug.h:112

◆ GetPrinterDriverA()

WINBOOL WINAPI GetPrinterDriverA ( HANDLE  hPrinter,
LPSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Definition at line 680 of file printerdrivers.c.

681{
682 DWORD dwErrorCode;
683 /*
684 * We are mapping multiple different pointers to the same pDriverInfo pointer here so that
685 * we can use the same incoming pointer for different Levels
686 */
687 PDRIVER_INFO_1W pdi1w = (PDRIVER_INFO_1W)pDriverInfo;
688 PDRIVER_INFO_8W pdi8w = (PDRIVER_INFO_8W)pDriverInfo;
689
690 DWORD cch;
691 PWSTR pwszEnvironment = NULL;
692
693 TRACE("GetPrinterDriverA(%p, %s, %lu, %p, %lu, %p)\n", hPrinter, pEnvironment, Level, pDriverInfo, cbBuf, pcbNeeded);
694
695 // Check for invalid levels here for early error return. Should be 1-6 & 8.
696 if (Level < 1 || Level == 7 || Level > 8)
697 {
698 dwErrorCode = ERROR_INVALID_LEVEL;
699 ERR("Invalid Level! %d\n",Level);
700 goto Cleanup;
701 }
702
703 if (pEnvironment)
704 {
705 // Convert pEnvironment to a Unicode string pwszEnvironment.
706 cch = strlen(pEnvironment);
707
708 pwszEnvironment = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
709 if (!pwszEnvironment)
710 {
711 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
712 ERR("HeapAlloc failed!\n");
713 goto Cleanup;
714 }
715
716 MultiByteToWideChar(CP_ACP, 0, pEnvironment, -1, pwszEnvironment, cch + 1);
717 }
718
719 if (!GetPrinterDriverW(hPrinter, pwszEnvironment, Level, pDriverInfo, cbBuf, pcbNeeded))
720 {
721 dwErrorCode = GetLastError();
722 goto Cleanup;
723 }
724
725 // Do Unicode to ANSI conversions for strings based on Level
726 switch (Level)
727 {
728 case 1:
729 {
730 dwErrorCode = UnicodeToAnsiInPlace(pdi1w->pName);
731 if (dwErrorCode != ERROR_SUCCESS)
732 {
733 goto Cleanup;
734 }
735 break;
736 }
737 case 8:
738 {
739 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszPrintProcessor);
740 if (dwErrorCode != ERROR_SUCCESS)
741 {
742 goto Cleanup;
743 }
744 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszVendorSetup);
745 if (dwErrorCode != ERROR_SUCCESS)
746 {
747 goto Cleanup;
748 }
749 dwErrorCode = UnicodeToAnsiZZInPlace(pdi8w->pszzColorProfiles);
750 if (dwErrorCode != ERROR_SUCCESS)
751 {
752 goto Cleanup;
753 }
754 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszInfPath);
755 if (dwErrorCode != ERROR_SUCCESS)
756 {
757 goto Cleanup;
758 }
760 if (dwErrorCode != ERROR_SUCCESS)
761 {
762 goto Cleanup;
763 }
764 }
765 case 6:
766 {
767 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszMfgName);
768 if (dwErrorCode != ERROR_SUCCESS)
769 {
770 goto Cleanup;
771 }
772
773 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszOEMUrl);
774 if (dwErrorCode != ERROR_SUCCESS)
775 {
776 goto Cleanup;
777 }
778
779 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszHardwareID);
780 if (dwErrorCode != ERROR_SUCCESS)
781 {
782 goto Cleanup;
783 }
784
785 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pszProvider);
786 if (dwErrorCode != ERROR_SUCCESS)
787 {
788 goto Cleanup;
789 }
790 }
791 case 4:
792 {
793 dwErrorCode = UnicodeToAnsiZZInPlace(pdi8w->pszzPreviousNames);
794 if (dwErrorCode != ERROR_SUCCESS)
795 {
796 goto Cleanup;
797 }
798 }
799 case 3:
800 {
801 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pHelpFile);
802 if (dwErrorCode != ERROR_SUCCESS)
803 {
804 goto Cleanup;
805 }
806
807 dwErrorCode = UnicodeToAnsiZZInPlace(pdi8w->pDependentFiles);
808 if (dwErrorCode != ERROR_SUCCESS)
809 {
810 goto Cleanup;
811 }
812
813 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pMonitorName);
814 if (dwErrorCode != ERROR_SUCCESS)
815 {
816 goto Cleanup;
817 }
818
819 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pDefaultDataType);
820 if (dwErrorCode != ERROR_SUCCESS)
821 {
822 goto Cleanup;
823 }
824 }
825 case 2:
826 case 5:
827 {
828 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pConfigFile);
829 if (dwErrorCode != ERROR_SUCCESS)
830 {
831 goto Cleanup;
832 }
833 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pDataFile);
834
835 if (dwErrorCode != ERROR_SUCCESS)
836 {
837 goto Cleanup;
838 }
839
840 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pDriverPath);
841 if (dwErrorCode != ERROR_SUCCESS)
842 {
843 goto Cleanup;
844 }
845
846 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pEnvironment);
847 if (dwErrorCode != ERROR_SUCCESS)
848 {
849 goto Cleanup;
850 }
851
852 dwErrorCode = UnicodeToAnsiInPlace(pdi8w->pName);
853 if (dwErrorCode != ERROR_SUCCESS)
854 {
855 goto Cleanup;
856 }
857 }
858 }
859
860 dwErrorCode = ERROR_SUCCESS;
861
862Cleanup:
863 if (pwszEnvironment)
864 {
865 HeapFree(hProcessHeap, 0, pwszEnvironment);
866 }
867
868 SetLastError(dwErrorCode);
869 return (dwErrorCode == ERROR_SUCCESS);
870}
BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded)
LPWSTR pName
Definition: winspool.h:373
LPWSTR pszVendorSetup
Definition: winspool.h:555
LPWSTR pDependentFiles
Definition: winspool.h:544
LPWSTR pDataFile
Definition: winspool.h:541
LPWSTR pszPrintProcessor
Definition: winspool.h:554
LPWSTR pEnvironment
Definition: winspool.h:539
LPWSTR pszMfgName
Definition: winspool.h:550
LPWSTR pszzCoreDriverDependencies
Definition: winspool.h:559
LPWSTR pDriverPath
Definition: winspool.h:540
LPWSTR pszzColorProfiles
Definition: winspool.h:556
LPWSTR pDefaultDataType
Definition: winspool.h:546
LPWSTR pMonitorName
Definition: winspool.h:545
LPWSTR pszInfPath
Definition: winspool.h:557
LPWSTR pszProvider
Definition: winspool.h:553
LPWSTR pszOEMUrl
Definition: winspool.h:551
LPWSTR pConfigFile
Definition: winspool.h:542
LPWSTR pszzPreviousNames
Definition: winspool.h:547
LPWSTR pszHardwareID
Definition: winspool.h:552
LPWSTR pHelpFile
Definition: winspool.h:543
LPWSTR pName
Definition: winspool.h:538
DWORD UnicodeToAnsiInPlace(PWSTR pwszField)
Definition: utils.c:28
DWORD UnicodeToAnsiZZInPlace(PWSTR pwszzField)
Definition: utils.c:78
struct _DRIVER_INFO_8W * PDRIVER_INFO_8W
struct _DRIVER_INFO_1W * PDRIVER_INFO_1W

Referenced by get_driver_infoA(), PRINTDLG_ChangePrinterA(), PrintDlgA(), and test_GetPrinterDriver().

◆ GetPrinterDriverDirectoryA()

WINBOOL WINAPI GetPrinterDriverDirectoryA ( LPSTR  pName,
LPSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverDirectory,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetPrinterDriverDirectoryW()

WINBOOL WINAPI GetPrinterDriverDirectoryW ( LPWSTR  pName,
LPWSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverDirectory,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetPrinterDriverW()

WINBOOL WINAPI GetPrinterDriverW ( HANDLE  hPrinter,
LPWSTR  pEnvironment,
DWORD  Level,
LPBYTE  pDriverInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Definition at line 873 of file printerdrivers.c.

874{
875 DWORD dwErrorCode;
876 PSPOOLER_HANDLE pHandle = (PSPOOLER_HANDLE)hPrinter;
877
878 TRACE("GetPrinterDriverW(%p, %S, %lu, %p, %lu, %p)\n", hPrinter, pEnvironment, Level, pDriverInfo, cbBuf, pcbNeeded);
879
880 // Sanity checks.
881 if (!pHandle)
882 {
883 dwErrorCode = ERROR_INVALID_HANDLE;
884 goto Cleanup;
885 }
886
887 // Dismiss invalid levels already at this point.
888 if (Level > 8 || Level == 7 || Level < 1)
889 {
890 dwErrorCode = ERROR_INVALID_LEVEL;
891 goto Cleanup;
892 }
893
894 if ( !pEnvironment || !*pEnvironment )
895 {
896 pEnvironment = (PWSTR)wszCurrentEnvironment;
897 }
898
899 if (cbBuf && pDriverInfo)
900 ZeroMemory(pDriverInfo, cbBuf);
901
902 // Do the RPC call
904 {
905 dwErrorCode = _RpcGetPrinterDriver(pHandle->hPrinter, pEnvironment, Level, pDriverInfo, cbBuf, pcbNeeded);
906 }
908 {
909 dwErrorCode = RpcExceptionCode();
910 ERR("_RpcGetPrinterDriver failed with exception code %lu!\n", dwErrorCode);
911 }
913
914 if (dwErrorCode == ERROR_SUCCESS)
915 {
916 // Replace relative offset addresses in the output by absolute pointers.
917 ASSERT(Level <= 6 || Level == 8);
918 MarshallUpStructure(cbBuf, pDriverInfo, pPrinterDriverMarshalling[Level]->pInfo, pPrinterDriverMarshalling[Level]->cbStructureSize, TRUE);
919 }
920
921Cleanup:
922 SetLastError(dwErrorCode);
923 return (dwErrorCode == ERROR_SUCCESS);
924}
DWORD _RpcGetPrinterDriver(WINSPOOL_PRINTER_HANDLE hPrinter, WCHAR *pEnvironment, DWORD Level, BYTE *pDriver, DWORD cbBuf, DWORD *pcbNeeded)
const WCHAR wszCurrentEnvironment[]
Definition: prtprocenv.h:11
#define TRUE
Definition: types.h:120
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
BOOL WINAPI MarshallUpStructure(DWORD cbSize, PVOID pStructure, const MARSHALLING_INFO *pInfo, DWORD cbStructureSize, BOOL bSomeBoolean)
Definition: marshalling.c:137
#define ASSERT(a)
Definition: mode.c:44
static const MARSHALLING * pPrinterDriverMarshalling[]
#define RpcEndExcept
Definition: rpc.h:128
#define RpcTryExcept
Definition: rpc.h:126
#define RpcExcept(expr)
Definition: rpc.h:127
#define RpcExceptionCode()
Definition: rpc.h:132
HANDLE hPrinter
Definition: precomp.h:50
struct _SPOOLER_HANDLE * PSPOOLER_HANDLE
#define ZeroMemory
Definition: winbase.h:1712

Referenced by get_driver_infoW(), LoadPrinterDriver(), pagesetup_change_printer(), PRINTDLG_ChangePrinterW(), and PrintDlgW().

◆ GetPrinterW()

WINBOOL WINAPI GetPrinterW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pPrinter,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

Definition at line 2533 of file printers.c.

2534{
2535 DWORD dwErrorCode;
2536 PSPOOLER_HANDLE pHandle = (PSPOOLER_HANDLE)hPrinter;
2537
2538 TRACE("GetPrinterW(%p, %lu, %p, %lu, %p)\n", hPrinter, Level, pPrinter, cbBuf, pcbNeeded);
2539
2540 // Sanity checks.
2541 if (!pHandle)
2542 {
2543 dwErrorCode = ERROR_INVALID_HANDLE;
2544 goto Cleanup;
2545 }
2546
2547 // Dismiss invalid levels already at this point.
2548 if (Level > 9)
2549 {
2550 dwErrorCode = ERROR_INVALID_LEVEL;
2551 goto Cleanup;
2552 }
2553
2554 if (cbBuf && pPrinter)
2555 ZeroMemory(pPrinter, cbBuf);
2556
2557 // Do the RPC call
2559 {
2560 dwErrorCode = _RpcGetPrinter(pHandle->hPrinter, Level, pPrinter, cbBuf, pcbNeeded);
2561 }
2563 {
2564 dwErrorCode = RpcExceptionCode();
2565 ERR("_RpcGetPrinter failed with exception code %lu!\n", dwErrorCode);
2566 }
2568
2569 if (dwErrorCode == ERROR_SUCCESS)
2570 {
2571 // Replace relative offset addresses in the output by absolute pointers.
2572 ASSERT(Level <= 9);
2573 MarshallUpStructure(cbBuf, pPrinter, pPrinterInfoMarshalling[Level]->pInfo, pPrinterInfoMarshalling[Level]->cbStructureSize, TRUE);
2574 }
2575
2576Cleanup:
2577 SetLastError(dwErrorCode);
2578 return (dwErrorCode == ERROR_SUCCESS);
2579}
DWORD _RpcGetPrinter(WINSPOOL_PRINTER_HANDLE hPrinter, DWORD Level, BYTE *pPrinter, DWORD cbBuf, DWORD *pcbNeeded)
Definition: printers.c:162
static const MARSHALLING * pPrinterInfoMarshalling[]
Definition: printers.h:146

Referenced by get_printer_infoW(), pagesetup_change_printer(), PRINTDLG_ChangePrinterW(), PrintDlgW(), START_TEST(), and UpdateTrayIcon().

◆ GetPrintProcessorDirectoryA()

WINBOOL WINAPI GetPrintProcessorDirectoryA ( LPSTR  pName,
LPSTR  pEnvironment,
DWORD  Level,
LPBYTE  pPrintProcessorInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ GetPrintProcessorDirectoryW()

WINBOOL WINAPI GetPrintProcessorDirectoryW ( LPWSTR  pName,
LPWSTR  pEnvironment,
DWORD  Level,
LPBYTE  pPrintProcessorInfo,
DWORD  cbBuf,
LPDWORD  pcbNeeded 
)

◆ IsValidDevmodeA()

WINBOOL WINAPI IsValidDevmodeA ( PDEVMODEA  pDevmode,
size_t  DevmodeSize 
)

Definition at line 134 of file devmode.c.

135{
137 WORD wRequiredSize;
138
139 TRACE("IsValidDevmodeA(%p, %lu)\n", pDevmode, DevmodeSize);
140
141 // Check if a Devmode was given at all.
142 if (!pDevmode)
143 goto Failure;
144
145 // Verify that DevmodeSize is large enough to hold the public and private members of the structure.
146 if (DevmodeSize < pDevmode->dmSize + pDevmode->dmDriverExtra)
147 goto Failure;
148
149 // If the structure has private members, the public structure must be 32-bit packed.
150 if (pDevmode->dmDriverExtra && pDevmode->dmSize % 4)
151 goto Failure;
152
153 // Now determine the minimum possible dmSize based on the given fields in dmFields.
154 wRequiredSize = FIELD_OFFSET(DEVMODEA, dmFields) + RTL_FIELD_SIZE(DEVMODEA, dmFields);
155
156 while (pTable->dwField)
157 {
158 if (pDevmode->dmFields & pTable->dwField)
159 {
160 wRequiredSize = pTable->wSize;
161 break;
162 }
163
164 pTable++;
165 }
166
167 // Verify that the value in dmSize is big enough for the used fields.
168 if (pDevmode->dmSize < wRequiredSize)
169 goto Failure;
170
171 // Check if dmDeviceName and (if used) dmFormName are null-terminated.
172 // Fix this if they aren't.
173 _FixStringA(pDevmode->dmDeviceName, sizeof(pDevmode->dmDeviceName));
174 if (pDevmode->dmFields & DM_FORMNAME)
175 _FixStringA(pDevmode->dmFormName, sizeof(pDevmode->dmFormName));
176
177 // Return success without setting the error code.
178 return TRUE;
179
180Failure:
182 return FALSE;
183}
static MINIMUM_SIZE_TABLE MinimumSizeA[]
Definition: devmode.c:20
static __inline void _FixStringA(PBYTE String, DWORD cbString)
Definition: devmode.c:95
unsigned short WORD
Definition: ntddk_ex.h:93
#define RTL_FIELD_SIZE(type, field)
Definition: kdb_expr.c:86
BYTE dmFormName[CCHFORMNAME]
Definition: wingdi.h:1593
DWORD dmFields
Definition: wingdi.h:1570
WORD dmDriverExtra
Definition: wingdi.h:1569
BYTE dmDeviceName[CCHDEVICENAME]
Definition: wingdi.h:1565
WORD dmSize
Definition: wingdi.h:1568
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
static const EHCI_PERIOD pTable[]
Definition: usbehci.c:29
#define ERROR_INVALID_DATA
Definition: winerror.h:116
#define DM_FORMNAME
Definition: wingdi.h:1266

Referenced by START_TEST().

◆ IsValidDevmodeW()

WINBOOL WINAPI IsValidDevmodeW ( PDEVMODEW  pDevmode,
size_t  DevmodeSize 
)

Definition at line 186 of file devmode.c.

187{
189 WORD wRequiredSize;
190
191 TRACE("IsValidDevmodeW(%p, %lu)\n", pDevmode, DevmodeSize);
192
193 // Check if a Devmode was given at all.
194 if (!pDevmode)
195 goto Failure;
196
197 // Verify that DevmodeSize is large enough to hold the public and private members of the structure.
198 if (DevmodeSize < pDevmode->dmSize + pDevmode->dmDriverExtra)
199 goto Failure;
200
201 // If the structure has private members, the public structure must be 32-bit packed.
202 if (pDevmode->dmDriverExtra && pDevmode->dmSize % 4)
203 goto Failure;
204
205 // Now determine the minimum possible dmSize based on the given fields in dmFields.
206 wRequiredSize = FIELD_OFFSET(DEVMODEW, dmFields) + RTL_FIELD_SIZE(DEVMODEW, dmFields);
207
208 while (pTable->dwField)
209 {
210 if (pDevmode->dmFields & pTable->dwField)
211 {
212 wRequiredSize = pTable->wSize;
213 break;
214 }
215
216 pTable++;
217 }
218
219 // Verify that the value in dmSize is big enough for the used fields.
220 if (pDevmode->dmSize < wRequiredSize)
221 goto Failure;
222
223 // Check if dmDeviceName and (if used) dmFormName are null-terminated.
224 // Fix this if they aren't.
225 _FixStringW(pDevmode->dmDeviceName, sizeof(pDevmode->dmDeviceName));
226 if (pDevmode->dmFields & DM_FORMNAME)
227 _FixStringW(pDevmode->dmFormName, sizeof(pDevmode->dmFormName));
228
229 // Return success without setting the error code.
230 return TRUE;
231
232Failure:
234 return FALSE;
235}
static __inline void _FixStringW(PWSTR String, DWORD cbString)
Definition: devmode.c:116
static MINIMUM_SIZE_TABLE MinimumSizeW[]
Definition: devmode.c:57
WCHAR dmDeviceName[CCHDEVICENAME]
Definition: wingdi.h:1617
DWORD dmFields
Definition: wingdi.h:1622
WORD dmDriverExtra
Definition: wingdi.h:1621
WCHAR dmFormName[CCHFORMNAME]
Definition: wingdi.h:1645
WORD dmSize
Definition: wingdi.h:1620

Referenced by START_TEST(), and test_IsValidDevmodeW().

◆ OpenPrinterA()

WINBOOL WINAPI OpenPrinterA ( LPSTR  pPrinterName,
LPHANDLE  phPrinter,
LPPRINTER_DEFAULTSA  pDefault 
)

Definition at line 2582 of file printers.c.

2583{
2584 BOOL bReturnValue = FALSE;
2585 DWORD cch;
2586 PWSTR pwszPrinterName = NULL;
2587 PRINTER_DEFAULTSW wDefault = { 0 };
2588
2589 TRACE("OpenPrinterA(%s, %p, %p)\n", pPrinterName, phPrinter, pDefault);
2590
2591 if (pPrinterName)
2592 {
2593 // Convert pPrinterName to a Unicode string pwszPrinterName
2594 cch = strlen(pPrinterName);
2595
2596 pwszPrinterName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
2597 if (!pwszPrinterName)
2598 {
2600 ERR("HeapAlloc failed!\n");
2601 goto Cleanup;
2602 }
2603
2604 MultiByteToWideChar(CP_ACP, 0, pPrinterName, -1, pwszPrinterName, cch + 1);
2605 }
2606
2607 if (pDefault)
2608 {
2609 wDefault.DesiredAccess = pDefault->DesiredAccess;
2610
2611 if (pDefault->pDatatype)
2612 {
2613 // Convert pDefault->pDatatype to a Unicode string wDefault.pDatatype
2614 cch = strlen(pDefault->pDatatype);
2615
2616 wDefault.pDatatype = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
2617 if (!wDefault.pDatatype)
2618 {
2620 ERR("HeapAlloc failed!\n");
2621 goto Cleanup;
2622 }
2623
2624 MultiByteToWideChar(CP_ACP, 0, pDefault->pDatatype, -1, wDefault.pDatatype, cch + 1);
2625 }
2626
2627 if (pDefault->pDevMode)
2628 wDefault.pDevMode = GdiConvertToDevmodeW(pDefault->pDevMode);
2629 }
2630
2631 bReturnValue = OpenPrinterW(pwszPrinterName, phPrinter, &wDefault);
2632
2633 if ( bReturnValue )
2634 {
2635 PSPOOLER_HANDLE pHandle = (PSPOOLER_HANDLE)*phPrinter;
2636 pHandle->bAnsi = TRUE;
2637 }
2638
2639Cleanup:
2640 if (wDefault.pDatatype)
2641 HeapFree(hProcessHeap, 0, wDefault.pDatatype);
2642
2643 if (wDefault.pDevMode)
2644 HeapFree(hProcessHeap, 0, wDefault.pDevMode);
2645
2646 if (pwszPrinterName)
2647 HeapFree(hProcessHeap, 0, pwszPrinterName);
2648
2649 return bReturnValue;
2650}
LPDEVMODEA pDevMode
Definition: winspool.h:856
ACCESS_MASK DesiredAccess
Definition: winspool.h:857
LPDEVMODEW pDevMode
Definition: winspool.h:862
ACCESS_MASK DesiredAccess
Definition: winspool.h:863
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
Definition: misc.c:969

Referenced by AdvancedSetupDialog(), PRINTDLG_ChangePrinterA(), PRINTDLG_WMCommandA(), test_ClosePrinter(), test_DocumentProperties(), test_EnumForms(), test_GetPrinter(), test_GetPrinterData(), test_GetPrinterDataEx(), test_GetPrinterDriver(), test_OpenPrinter(), test_OpenPrinter_defaults(), test_XcvDataW_MonitorUI(), and test_XcvDataW_PortIsValid().

◆ OpenPrinterW()

WINBOOL WINAPI OpenPrinterW ( LPWSTR  pPrinterName,
LPHANDLE  phPrinter,
LPPRINTER_DEFAULTSW  pDefault 
)

Definition at line 2653 of file printers.c.

2654{
2655 DWORD dwErrorCode;
2656 HANDLE hPrinter;
2657 PSPOOLER_HANDLE pHandle;
2658 PWSTR pDatatype = NULL;
2659 WINSPOOL_DEVMODE_CONTAINER DevModeContainer = { 0 };
2660 ACCESS_MASK AccessRequired = 0;
2661
2662 TRACE("OpenPrinterW(%S, %p, %p)\n", pPrinterName, phPrinter, pDefault);
2663
2664 // Sanity check
2665 if (!phPrinter)
2666 {
2667 dwErrorCode = ERROR_INVALID_PARAMETER;
2668 goto Cleanup;
2669 }
2670
2671 // Prepare the additional parameters in the format required by _RpcOpenPrinter
2672 if (pDefault)
2673 {
2674 pDatatype = pDefault->pDatatype;
2675 DevModeContainer.cbBuf = sizeof(DEVMODEW);
2676 DevModeContainer.pDevMode = (BYTE*)pDefault->pDevMode;
2677 AccessRequired = pDefault->DesiredAccess;
2678 }
2679
2680 // Do the RPC call
2682 {
2683 dwErrorCode = _RpcOpenPrinter(pPrinterName, &hPrinter, pDatatype, &DevModeContainer, AccessRequired);
2684 }
2686 {
2687 dwErrorCode = RpcExceptionCode();
2688 ERR("_RpcOpenPrinter failed with exception code %lu!\n", dwErrorCode);
2689 }
2691
2692 if (dwErrorCode == ERROR_SUCCESS)
2693 {
2694 // Create a new SPOOLER_HANDLE structure.
2696 if (!pHandle)
2697 {
2698 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
2699 ERR("HeapAlloc failed!\n");
2700 goto Cleanup;
2701 }
2702
2703 pHandle->Sig = SPOOLER_HANDLE_SIG;
2704 pHandle->hPrinter = hPrinter;
2705 pHandle->hSPLFile = INVALID_HANDLE_VALUE;
2707
2708 // Return it as phPrinter.
2709 *phPrinter = (HANDLE)pHandle;
2710 }
2711
2712Cleanup:
2713 SetLastError(dwErrorCode);
2714 return (dwErrorCode == ERROR_SUCCESS);
2715}
DWORD _RpcOpenPrinter(WINSPOOL_HANDLE pPrinterName, WINSPOOL_PRINTER_HANDLE *phPrinter, WCHAR *pDatatype, WINSPOOL_DEVMODE_CONTAINER *pDevModeContainer, DWORD AccessRequired)
Definition: printers.c:194
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
ULONG ACCESS_MASK
Definition: nt_native.h:40
HANDLE hSpoolFileHandle
Definition: precomp.h:53
HANDLE hSPLFile
Definition: precomp.h:51
DWORD_PTR Sig
Definition: precomp.h:40
PVOID HANDLE
Definition: typedefs.h:73
#define SPOOLER_HANDLE_SIG
Definition: precomp.h:32
struct _devicemodeW DEVMODEW
unsigned char BYTE
Definition: xxhash.c:193

Referenced by GetMonitorUI(), LocalmonStartDocPort(), open_monitor_by_name(), pagesetup_change_printer(), pagesetup_printer_properties(), PRINTDLG_ChangePrinterW(), PRINTDLG_OpenDefaultPrinter(), PRINTDLG_WMCommandW(), PrintRawJob(), START_TEST(), and wmain().

◆ PrinterMessageBoxA()

DWORD WINAPI PrinterMessageBoxA ( HANDLE  hPrinter,
DWORD  Error,
HWND  hWnd,
LPSTR  pText,
LPSTR  pCaption,
DWORD  dwType 
)

Definition at line 2721 of file printers.c.

2722{
2723 return 50;
2724}

◆ PrinterMessageBoxW()

DWORD WINAPI PrinterMessageBoxW ( HANDLE  hPrinter,
DWORD  Error,
HWND  hWnd,
LPWSTR  pText,
LPWSTR  pCaption,
DWORD  dwType 
)

Definition at line 330 of file printers.c.

331{
333
334 // Sanity checks.
335 if (!pHandle)
336 {
338 return FALSE;
339 }
340
341 return pHandle->pPrintProvider->PrintProvider.fpPrinterMessageBox(pHandle->hPrinter, Error, hWnd, pText, pCaption, dwType);
342}
BOOL Error
Definition: chkdsk.c:66
LPCSTR pText
Definition: txtscale.cpp:79

Referenced by _RpcPrinterMessageBox().

◆ PrinterProperties()

WINBOOL WINAPI PrinterProperties ( HWND  hWnd,
HANDLE  hPrinter 
)

Definition at line 1266 of file printers.c.

1267{
1268 PRINTER_INFO_2W *pi2 = NULL;
1269 DWORD needed = 0;
1270 LONG Ret, Result = 0;
1271 BOOL res;
1272 DEVICEPROPERTYHEADER devprophdr;
1273
1274 FIXME("PrinterProperties(%p, %p)\n", hWnd, hPrinter);
1275
1276 devprophdr.cbSize = sizeof(DEVICEPROPERTYHEADER);
1277 devprophdr.Flags = DPS_NOPERMISSION;
1278 devprophdr.hPrinter = hPrinter;
1279 devprophdr.pszPrinterName = NULL;
1280
1281 res = GetPrinterW( hPrinter, 2, NULL, 0, &needed);
1283 {
1284 pi2 = HeapAlloc(hProcessHeap, 0, needed);
1285 if (!pi2)
1286 {
1287 ERR("Failed to allocate PRINTER_INFO_2W of %u bytes\n", needed);
1288 return FALSE;
1289 }
1290 res = GetPrinterW(hPrinter, 2, (LPBYTE)pi2, needed, &needed);
1291 }
1292
1293 //
1294 // Above can fail, still process w/o printer name.
1295 //
1296 if ( res ) devprophdr.pszPrinterName = pi2->pPrinterName;
1297
1298 needed = 1;
1299
1300 if ( ( SetPrinterDataW( hPrinter, L"PrinterPropertiesPermission", REG_DWORD, (LPBYTE)&needed, sizeof(DWORD) ) == ERROR_SUCCESS ) )
1301 {
1302 devprophdr.Flags &= ~DPS_NOPERMISSION;
1303 }
1304
1306
1307 res = (Ret >= 0);
1308
1309 if (!res)
1310 {
1311 FIXME("PrinterProperties fail ICPSUI\n");
1312 }
1313
1314 if (pi2) HeapFree(hProcessHeap, 0, pi2);
1315
1316 return res;
1317}
LONG WINAPI DevicePropertySheets(PPROPSHEETUI_INFO pCPSUIInfo, LPARAM lparam)
Definition: printers.c:1069
struct _DEVICEPROPERTYHEADER DEVICEPROPERTYHEADER
#define DPS_NOPERMISSION
Definition: winddiui.h:123
#define REG_DWORD
Definition: sdbapi.c:596
unsigned char * LPBYTE
Definition: typedefs.h:53
DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData)

◆ ReadPrinter()

WINBOOL WINAPI ReadPrinter ( HANDLE  hPrinter,
LPVOID  pBuf,
DWORD  cbBuf,
LPDWORD  pNoBytesRead 
)

Referenced by PrintRawJob().

◆ ResetPrinterA()

WINBOOL WINAPI ResetPrinterA ( HANDLE  hPrinter,
LPPRINTER_DEFAULTSA  pDefault 
)

Definition at line 2925 of file printers.c.

2926{
2927 BOOL ret;
2928 UNICODE_STRING pNameW;
2929 PDEVMODEW pdmw = NULL;
2930 PPRINTER_DEFAULTSW pdw = (PPRINTER_DEFAULTSW)pDefault;
2931
2932 TRACE("ResetPrinterA(%p, %p)\n", hPrinter, pDefault);
2933
2934 if ( pDefault->pDatatype == (LPSTR)-1 )
2935 {
2936 pdw->pDatatype = (LPWSTR)-1;
2937 }
2938 else
2939 {
2940 pdw->pDatatype = AsciiToUnicode( &pNameW, pDefault->pDatatype );
2941 }
2942 if ( pDefault->pDevMode == (LPDEVMODEA)-1)
2943 {
2944 pdw->pDevMode = (LPDEVMODEW)-1;
2945 }
2946 else
2947 {
2948 if ( pDefault->pDevMode )//&& IsValidDevmodeNoSizeW( pDefault->pDevMode ) )
2949 {
2951 pdw->pDevMode = pdmw;
2952 }
2953 }
2954
2955 ret = ResetPrinterW( hPrinter, pdw );
2956
2957 if (pdmw) HeapFree(hProcessHeap, 0, pdmw);
2958
2959 RtlFreeUnicodeString( &pNameW );
2960
2961 return ret;
2962}
BOOL WINAPI ResetPrinterW(HANDLE hPrinter, PPRINTER_DEFAULTSW pDefault)
Definition: printers.c:2965
struct _devicemodeW * LPDEVMODEW
struct _PRINTER_DEFAULTSW * PPRINTER_DEFAULTSW
char * LPSTR
Definition: xmlstorage.h:182

◆ ResetPrinterW()

WINBOOL WINAPI ResetPrinterW ( HANDLE  hPrinter,
LPPRINTER_DEFAULTSW  pDefault 
)

Definition at line 2965 of file printers.c.

2966{
2967 TRACE("ResetPrinterW(%p, %p)\n", hPrinter, pDefault);
2969 return FALSE;
2970}

Referenced by _RpcResetPrinterEx(), and ResetPrinterA().

◆ ScheduleJob()

WINBOOL WINAPI ScheduleJob ( HANDLE  hPrinter,
DWORD  JobId 
)

Definition at line 56 of file jobs.c.

57{
59
60 // Sanity checks.
61 if (!pHandle)
62 {
64 return FALSE;
65 }
66
67 return pHandle->pPrintProvider->PrintProvider.fpScheduleJob(pHandle->hPrinter, dwJobID);
68}

Referenced by _RpcScheduleJob(), AbortPrinter(), and test_OpenPrinter_defaults().

◆ SetDefaultPrinterA()

WINBOOL WINAPI SetDefaultPrinterA ( LPCSTR  pszPrinter)

Definition at line 3005 of file printers.c.

3006{
3007 BOOL bReturnValue = FALSE;
3008 DWORD cch;
3009 PWSTR pwszPrinter = NULL;
3010
3011 TRACE("SetDefaultPrinterA(%s)\n", pszPrinter);
3012
3013 if (pszPrinter)
3014 {
3015 // Convert pszPrinter to a Unicode string pwszPrinter
3016 cch = strlen(pszPrinter);
3017
3018 pwszPrinter = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
3019 if (!pwszPrinter)
3020 {
3022 ERR("HeapAlloc failed!\n");
3023 goto Cleanup;
3024 }
3025
3026 MultiByteToWideChar(CP_ACP, 0, pszPrinter, -1, pwszPrinter, cch + 1);
3027 }
3028
3029 bReturnValue = SetDefaultPrinterW(pwszPrinter);
3030
3031Cleanup:
3032 if (pwszPrinter)
3033 HeapFree(hProcessHeap, 0, pwszPrinter);
3034
3035 return bReturnValue;
3036}
BOOL WINAPI SetDefaultPrinterW(LPCWSTR pszPrinter)
Definition: printers.c:3039

Referenced by START_TEST().

◆ SetDefaultPrinterW()

WINBOOL WINAPI SetDefaultPrinterW ( LPCWSTR  pszPrinter)

Definition at line 3039 of file printers.c.

3040{
3041 const WCHAR wszDevicesKey[] = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Devices";
3042
3043 DWORD cbDeviceValueData;
3044 DWORD cbPrinterValueData = 0;
3045 DWORD cchPrinter;
3046 DWORD dwErrorCode;
3047 HKEY hDevicesKey = NULL;
3048 HKEY hWindowsKey = NULL;
3049 PWSTR pwszDeviceValueData = NULL;
3050 WCHAR wszPrinter[MAX_PRINTER_NAME + 1];
3051
3052 TRACE("SetDefaultPrinterW(%S)\n", pszPrinter);
3053
3054 // Open the Devices registry key.
3055 dwErrorCode = (DWORD)RegOpenKeyExW(HKEY_CURRENT_USER, wszDevicesKey, 0, KEY_READ, &hDevicesKey);
3056 if (dwErrorCode != ERROR_SUCCESS)
3057 {
3058 ERR("RegOpenKeyExW failed with status %lu!\n", dwErrorCode);
3059 goto Cleanup;
3060 }
3061
3062 // Did the caller give us a printer to set as default?
3063 if (pszPrinter && *pszPrinter)
3064 {
3065 // Check if the given printer exists and query the value data size.
3066 dwErrorCode = (DWORD)RegQueryValueExW(hDevicesKey, pszPrinter, NULL, NULL, NULL, &cbPrinterValueData);
3067 if (dwErrorCode == ERROR_FILE_NOT_FOUND)
3068 {
3069 dwErrorCode = ERROR_INVALID_PRINTER_NAME;
3070 goto Cleanup;
3071 }
3072 else if (dwErrorCode != ERROR_SUCCESS)
3073 {
3074 ERR("RegQueryValueExW failed with status %lu!\n", dwErrorCode);
3075 goto Cleanup;
3076 }
3077
3078 cchPrinter = wcslen(pszPrinter);
3079 }
3080 else
3081 {
3082 // If there is already a default printer, we're done!
3083 cchPrinter = _countof(wszPrinter);
3084 if (GetDefaultPrinterW(wszPrinter, &cchPrinter))
3085 {
3086 dwErrorCode = ERROR_SUCCESS;
3087 goto Cleanup;
3088 }
3089
3090 // Otherwise, get us the first printer from the "Devices" key to later set it as default and query the value data size.
3091 cchPrinter = _countof(wszPrinter);
3092 dwErrorCode = (DWORD)RegEnumValueW(hDevicesKey, 0, wszPrinter, &cchPrinter, NULL, NULL, NULL, &cbPrinterValueData);
3093 if (dwErrorCode != ERROR_MORE_DATA)
3094 goto Cleanup;
3095
3096 pszPrinter = wszPrinter;
3097 }
3098
3099 // We now need to query the value data, which has the format "winspool,<Port>:"
3100 // and make "<Printer Name>,winspool,<Port>:" out of it.
3101 // Allocate a buffer large enough for the final data.
3102 cbDeviceValueData = (cchPrinter + 1) * sizeof(WCHAR) + cbPrinterValueData;
3103 pwszDeviceValueData = HeapAlloc(hProcessHeap, 0, cbDeviceValueData);
3104 if (!pwszDeviceValueData)
3105 {
3106 dwErrorCode = ERROR_NOT_ENOUGH_MEMORY;
3107 ERR("HeapAlloc failed!\n");
3108 goto Cleanup;
3109 }
3110
3111 // Copy the Printer Name and a comma into it.
3112 CopyMemory(pwszDeviceValueData, pszPrinter, cchPrinter * sizeof(WCHAR));
3113 pwszDeviceValueData[cchPrinter] = L',';
3114
3115 // Append the value data, which has the format "winspool,<Port>:"
3116 dwErrorCode = (DWORD)RegQueryValueExW(hDevicesKey, pszPrinter, NULL, NULL, (PBYTE)&pwszDeviceValueData[cchPrinter + 1], &cbPrinterValueData);
3117 if (dwErrorCode != ERROR_SUCCESS)
3118 goto Cleanup;
3119
3120 // Open the Windows registry key.
3121 dwErrorCode = (DWORD)RegOpenKeyExW(HKEY_CURRENT_USER, wszWindowsKey, 0, KEY_SET_VALUE, &hWindowsKey);
3122 if (dwErrorCode != ERROR_SUCCESS)
3123 {
3124 ERR("RegOpenKeyExW failed with status %lu!\n", dwErrorCode);
3125 goto Cleanup;
3126 }
3127
3128 // Store our new default printer.
3129 dwErrorCode = (DWORD)RegSetValueExW(hWindowsKey, wszDeviceValue, 0, REG_SZ, (PBYTE)pwszDeviceValueData, cbDeviceValueData);
3130 if (dwErrorCode != ERROR_SUCCESS)
3131 {
3132 ERR("RegSetValueExW failed with status %lu!\n", dwErrorCode);
3133 goto Cleanup;
3134 }
3135
3136Cleanup:
3137 if (hDevicesKey)
3138 RegCloseKey(hDevicesKey);
3139
3140 if (hWindowsKey)
3141 RegCloseKey(hWindowsKey);
3142
3143 if (pwszDeviceValueData)
3144 HeapFree(hProcessHeap, 0, pwszDeviceValueData);
3145
3146 SetLastError(dwErrorCode);
3147 return (dwErrorCode == ERROR_SUCCESS);
3148}
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
#define MAX_PRINTER_NAME
Definition: fpSetJob.c:25
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define KEY_SET_VALUE
Definition: nt_native.h:1017
#define _countof(array)
Definition: sndvol32.h:68
#define ERROR_INVALID_PRINTER_NAME
Definition: winerror.h:1108

Referenced by SetDefaultPrinterA(), and START_TEST().

◆ SetFormA()

WINBOOL WINAPI SetFormA ( HANDLE  hPrinter,
LPSTR  pFormName,
DWORD  Level,
LPBYTE  pForm 
)

◆ SetFormW()

WINBOOL WINAPI SetFormW ( HANDLE  hPrinter,
LPWSTR  pFormName,
DWORD  Level,
LPBYTE  pForm 
)

◆ SetJobA()

WINBOOL WINAPI SetJobA ( HANDLE  hPrinter,
DWORD  JobId,
DWORD  Level,
LPBYTE  pJob,
DWORD  Command 
)

◆ SetJobW()

WINBOOL WINAPI SetJobW ( HANDLE  hPrinter,
DWORD  JobId,
DWORD  Level,
LPBYTE  pJob,
DWORD  Command 
)

◆ SetPortA()

WINBOOL WINAPI SetPortA ( LPSTR  pName,
LPSTR  pPortName,
DWORD  dwLevel,
LPBYTE  pPortInfo 
)

◆ SetPortW()

WINBOOL WINAPI SetPortW ( LPWSTR  pName,
LPWSTR  pPortName,
DWORD  dwLevel,
LPBYTE  pPortInfo 
)

◆ SetPrinterA()

WINBOOL WINAPI SetPrinterA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pPrinter,
DWORD  Command 
)

◆ SetPrinterDataA()

DWORD WINAPI SetPrinterDataA ( HANDLE  hPrinter,
LPSTR  pValueName,
DWORD  Type,
LPBYTE  pData,
DWORD  cbData 
)

◆ SetPrinterDataExA()

DWORD WINAPI SetPrinterDataExA ( HANDLE  hPrinter,
LPCSTR  pKeyName,
LPCSTR  pValueName,
DWORD  Type,
LPBYTE  pData,
DWORD  cbData 
)

Definition at line 551 of file printerdata.c.

552{
553 DWORD cch;
554 DWORD dwReturnValue;
555 PWSTR pwszKeyName = NULL;
557 PWSTR pUnicodeData = NULL;
558
559 TRACE("SetPrinterDataExA(%p, %s, %s, %lu, %p, %lu)\n", hPrinter, pKeyName, pValueName, Type, pData, cbData);
560
561 if (pKeyName)
562 {
563 // Convert pKeyName to a Unicode string pwszKeyName
564 cch = strlen(pKeyName);
565
566 pwszKeyName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
567 if (!pwszKeyName)
568 {
569 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
570 ERR("HeapAlloc failed!\n");
571 goto Cleanup;
572 }
573
574 MultiByteToWideChar(CP_ACP, 0, pKeyName, -1, pwszKeyName, cch + 1);
575 }
576
577 if (pValueName)
578 {
579 // Convert pValueName to a Unicode string pwszValueName
580 cch = strlen(pValueName);
581
582 pwszValueName = HeapAlloc(hProcessHeap, 0, (cch + 1) * sizeof(WCHAR));
583 if (!pwszValueName)
584 {
585 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
586 ERR("HeapAlloc failed!\n");
587 goto Cleanup;
588 }
589
590 MultiByteToWideChar(CP_ACP, 0, pValueName, -1, pwszValueName, cch + 1);
591 }
592
593 if (Type == REG_SZ || Type == REG_MULTI_SZ || Type == REG_EXPAND_SZ)
594 {
595 // Convert pData to a Unicode string pUnicodeData.
596 pUnicodeData = HeapAlloc(hProcessHeap, 0, cbData * sizeof(WCHAR));
597 if (!pUnicodeData)
598 {
599 dwReturnValue = ERROR_NOT_ENOUGH_MEMORY;
600 ERR("HeapAlloc failed!\n");
601 goto Cleanup;
602 }
603
604 MultiByteToWideChar(CP_ACP, 0, (PCSTR)pData, -1, pUnicodeData, cbData);
605
606 pData = (PBYTE)pUnicodeData;
607 cbData *= sizeof(WCHAR);
608 }
609
610 dwReturnValue = SetPrinterDataExW(hPrinter, pwszKeyName, pwszValueName, Type, pData, cbData);
611
612Cleanup:
613 if (pwszKeyName)
614 HeapFree(hProcessHeap, 0, pwszKeyName);
615
616 if (pwszValueName)
618
619 if (pUnicodeData)
620 HeapFree(hProcessHeap, 0, pUnicodeData);
621
622 return dwReturnValue;
623}
Type
Definition: Type.h:7
DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPCWSTR pKeyName, LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData)
Definition: printerdata.c:626
const char * PCSTR
Definition: typedefs.h:52

Referenced by SetPrinterDataA().

◆ SetPrinterDataExW()

DWORD WINAPI SetPrinterDataExW ( HANDLE  hPrinter,
LPCWSTR  pKeyName,
LPCWSTR  pValueName,
DWORD  Type,
LPBYTE  pData,
DWORD  cbData 
)

Definition at line 128 of file printerdata.c.

129{
131
132 // Sanity check.
133 if (!pHandle)
134 {
135 // Yes, Windows checks for the handle here and sets the last error to ERROR_INVALID_HANDLE,
136 // but returns FALSE and not the error code.
138 return FALSE;
139 }
140
141 // Call SetPrinterDataEx of the Print Provider.
142 return pHandle->pPrintProvider->PrintProvider.fpSetPrinterDataEx(pHandle->hPrinter, pKeyName, pValueName, Type, pData, cbData);
143}

Referenced by _RpcSetPrinterDataEx(), SetPrinterDataExA(), SetPrinterDataW(), and START_TEST().

◆ SetPrinterDataW()

DWORD WINAPI SetPrinterDataW ( HANDLE  hPrinter,
LPWSTR  pValueName,
DWORD  Type,
LPBYTE  pData,
DWORD  cbData 
)

Referenced by PrinterProperties().

◆ SetPrinterW()

WINBOOL WINAPI SetPrinterW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pPrinter,
DWORD  Command 
)

◆ StartDocPrinterA()

DWORD WINAPI StartDocPrinterA ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pDocInfo 
)

◆ StartDocPrinterW()

DWORD WINAPI StartDocPrinterW ( HANDLE  hPrinter,
DWORD  Level,
LPBYTE  pDocInfo 
)

Referenced by PrintRawJob(), START_TEST(), and wmain().

◆ StartPagePrinter()

WINBOOL WINAPI StartPagePrinter ( HANDLE  hPrinter)

Definition at line 457 of file printers.c.

458{
460
461 // Sanity checks.
462 if (!pHandle)
463 {
465 return FALSE;
466 }
467
468 return pHandle->pPrintProvider->PrintProvider.fpStartPagePrinter(pHandle->hPrinter);
469}

Referenced by _RpcStartPagePrinter(), and wmain().

◆ WaitForPrinterChange()

DWORD WINAPI WaitForPrinterChange ( HANDLE  hPrinter,
DWORD  Flags 
)

◆ WritePrinter()

WINBOOL WINAPI WritePrinter ( HANDLE  hPrinter,
LPVOID  pBuf,
DWORD  cbBuf,
LPDWORD  pcWritten 
)

Referenced by PrintRawJob(), and wmain().

◆ XcvDataW()

WINBOOL WINAPI XcvDataW ( HANDLE  hXcv,
PCWSTR  pszDataName,
PBYTE  pInputData,
DWORD  cbInputData,
PBYTE  pOutputData,
DWORD  cbOutputData,
PDWORD  pcbOutputNeeded,
PDWORD  pdwStatus 
)

Definition at line 487 of file printers.c.

488{
490
491 FIXME("XcvDataW( %p, %S,,,)\n",hXcv, pszDataName);
492
493 // Sanity checks.
494 if (!pHandle)
495 {
497 return FALSE;
498 }
499
500 return pHandle->pPrintProvider->PrintProvider.fpXcvData(pHandle->hPrinter, pszDataName, pInputData, cbInputData, pOutputData, cbOutputData, pcbOutputNeeded, pdwStatus);
501}
static HANDLE hXcv
Definition: localmon.c:73

Referenced by _RpcXcvData(), dlg_configure_com(), dlgproc_addport(), dlgproc_lptconfig(), localui_AddPortUI(), and localui_DeletePortUI().