// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
//! Winspool header file
use shared::guiddef::GUID;
use shared::minwindef::{
BOOL, BYTE, DWORD, FILETIME, FLOAT, LPBYTE, LPDWORD, LPHANDLE, LPVOID, MAX_PATH, PBYTE, PDW
ORD,
PULONG, PWORD, UINT, ULONG, WORD,
};
use shared::windef::{HWND, RECTL, SIZEL};
use shared::winerror::ERROR_NOT_SUPPORTED;
use um::minwinbase::SYSTEMTIME;
use um::wingdi::{LPDEVMODEA, LPDEVMODEW, PDEVMODEA, PDEVMODEW};
use um::winnt::{
ACCESS_MASK, CHAR, DWORDLONG, HANDLE, HRESULT, LANGID, LONG, LONGLONG, LPCSTR, LPCWSTR, LPSTR,
LPWSTR, PCWSTR, PSECURITY_DESCRIPTOR, PVOID, PWSTR, STANDARD_RIGHTS_EXECUTE,
STANDARD_RIGHTS_READ, STANDARD_RIGHTS_REQUIRED, STANDARD_RIGHTS_WRITE, WCHAR,
};
use vc::vcruntime::size_t;
STRUCT !{struct PRINTER_INFO_1A {
Flags: DWORD,
pDescription: LPSTR,
pName: LPSTR,
pComment: LPSTR,
}}
pub type PPRINTER_INFO_1A = *mut PRINTER_INFO_1A;
pub type LPPRINTER_INFO_1A = *mut PRINTER_INFO_1A;
STRUCT !{struct PRINTER_INFO_1W {
Flags: DWORD,
pDescription: LPWSTR,
pName: LPWSTR,
pComment: LPWSTR,
}}
pub type PPRINTER_INFO_1W = *mut PRINTER_INFO_1W;
pub type LPPRINTER_INFO_1W = *mut PRINTER_INFO_1W;
STRUCT !{struct PRINTER_INFO_2A {
pServerName: LPSTR,
pPrinterName: LPSTR,
pShareName: LPSTR,
pPortName: LPSTR,
pDriverName: LPSTR,
pComment: LPSTR,
pLocation: LPSTR,
pDevMode: LPDEVMODEA,
pSepFile: LPSTR,
pPrintProcessor: LPSTR,
pDatatype: LPSTR,
pParameters: LPSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Attributes: DWORD,
Priority: DWORD,
DefaultPriority: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
Status: DWORD,
cJobs: DWORD,
AveragePPM: DWORD,
}}
pub type PPRINTER_INFO_2A = *mut PRINTER_INFO_2A;
pub type LPPRINTER_INFO_2A = *mut PRINTER_INFO_2A;
STRUCT !{struct PRINTER_INFO_2W {
pServerName: LPWSTR,
pPrinterName: LPWSTR,
pShareName: LPWSTR,
pPortName: LPWSTR,
pDriverName: LPWSTR,
pComment: LPWSTR,
pLocation: LPWSTR,
pDevMode: LPDEVMODEW,
pSepFile: LPWSTR,
pPrintProcessor: LPWSTR,
pDatatype: LPWSTR,
pParameters: LPWSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Attributes: DWORD,
Priority: DWORD,
DefaultPriority: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
Status: DWORD,
cJobs: DWORD,
AveragePPM: DWORD,
}}
pub type PPRINTER_INFO_2W = *mut PRINTER_INFO_2W;
pub type LPPRINTER_INFO_2W = *mut PRINTER_INFO_2W;
STRUCT !{struct PRINTER_INFO_3 {
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
}}
pub type PPRINTER_INFO_3 = *mut PRINTER_INFO_3;
pub type LPPRINTER_INFO_3 = *mut PRINTER_INFO_3;
STRUCT !{struct PRINTER_INFO_4A {
pPrinterName: LPSTR,
pServerName: LPSTR,
Attributes: DWORD,
}}
pub type PPRINTER_INFO_4A = *mut PRINTER_INFO_4A;
pub type LPPRINTER_INFO_4A = *mut PRINTER_INFO_4A;
STRUCT !{struct PRINTER_INFO_4W {
pPrinterName: LPWSTR,
pServerName: LPWSTR,
Attributes: DWORD,
}}
pub type PPRINTER_INFO_4W = *mut PRINTER_INFO_4W;
pub type LPPRINTER_INFO_4W = *mut PRINTER_INFO_4W;
STRUCT !{struct PRINTER_INFO_5A {
pPrinterName: LPSTR,
pPortName: LPSTR,
Attributes: DWORD,
DeviceNotSelectedTimeout: DWORD,
TransmissionRetryTimeout: DWORD,
}}
pub type PPRINTER_INFO_5A = *mut PRINTER_INFO_5A;
pub type LPPRINTER_INFO_5A = *mut PRINTER_INFO_5A;
STRUCT !{struct PRINTER_INFO_5W {
pPrinterName: LPWSTR,
pPortName: LPWSTR,
Attributes: DWORD,
DeviceNotSelectedTimeout: DWORD,
TransmissionRetryTimeout: DWORD,
}}
pub type PPRINTER_INFO_5W = *mut PRINTER_INFO_5W;
pub type LPPRINTER_INFO_5W = *mut PRINTER_INFO_5W;
STRUCT !{struct PRINTER_INFO_6 {
dwStatus: DWORD,
}}
pub type PPRINTER_INFO_6 = *mut PRINTER_INFO_6;
pub type LPPRINTER_INFO_6 = *mut PRINTER_INFO_6;
STRUCT !{struct PRINTER_INFO_7A {
pszObjectGUID: LPSTR,
dwAction: DWORD,
}}
pub type PPRINTER_INFO_7A = *mut PRINTER_INFO_7A;
pub type LPPRINTER_INFO_7A = *mut PRINTER_INFO_7A;
STRUCT !{struct PRINTER_INFO_7W {
pszObjectGUID: LPWSTR,
dwAction: DWORD,
}}
pub type PPRINTER_INFO_7W = *mut PRINTER_INFO_7W;
pub type LPPRINTER_INFO_7W = *mut PRINTER_INFO_7W;
pub const DSPRINT_PUBLISH: DWORD = 0 x00000001;
pub const DSPRINT_UPDATE: DWORD = 0 x00000002;
pub const DSPRINT_UNPUBLISH: DWORD = 0 x00000004;
pub const DSPRINT_REPUBLISH: DWORD = 0 x00000008;
pub const DSPRINT_PENDING: DWORD = 0 x80000000;
STRUCT !{struct PRINTER_INFO_8A {
pDevMode: LPDEVMODEA,
}}
pub type PPRINTER_INFO_8A = *mut PRINTER_INFO_8A;
pub type LPPRINTER_INFO_8A = *mut PRINTER_INFO_8A;
STRUCT !{struct PRINTER_INFO_8W {
pDevMode: LPDEVMODEW,
}}
pub type PPRINTER_INFO_8W = *mut PRINTER_INFO_8W;
pub type LPPRINTER_INFO_8W = *mut PRINTER_INFO_8W;
STRUCT !{struct PRINTER_INFO_9A {
pDevMode: LPDEVMODEA,
}}
pub type PPRINTER_INFO_9A = *mut PRINTER_INFO_9A;
pub type LPPRINTER_INFO_9A = *mut PRINTER_INFO_9A;
STRUCT !{struct PRINTER_INFO_9W {
pDevMode: LPDEVMODEW,
}}
pub type PPRINTER_INFO_9W = *mut PRINTER_INFO_9W;
pub type LPPRINTER_INFO_9W = *mut PRINTER_INFO_9W;
pub const PRINTER_CONTROL_PAUSE: DWORD = 1 ;
pub const PRINTER_CONTROL_RESUME: DWORD = 2 ;
pub const PRINTER_CONTROL_PURGE: DWORD = 3 ;
pub const PRINTER_CONTROL_SET_STATUS: DWORD = 4 ;
pub const PRINTER_STATUS_PAUSED: DWORD = 0 x00000001;
pub const PRINTER_STATUS_ERROR: DWORD = 0 x00000002;
pub const PRINTER_STATUS_PENDING_DELETION: DWORD = 0 x00000004;
pub const PRINTER_STATUS_PAPER_JAM: DWORD = 0 x00000008;
pub const PRINTER_STATUS_PAPER_OUT: DWORD = 0 x00000010;
pub const PRINTER_STATUS_MANUAL_FEED: DWORD = 0 x00000020;
pub const PRINTER_STATUS_PAPER_PROBLEM: DWORD = 0 x00000040;
pub const PRINTER_STATUS_OFFLINE: DWORD = 0 x00000080;
pub const PRINTER_STATUS_IO_ACTIVE: DWORD = 0 x00000100;
pub const PRINTER_STATUS_BUSY: DWORD = 0 x00000200;
pub const PRINTER_STATUS_PRINTING: DWORD = 0 x00000400;
pub const PRINTER_STATUS_OUTPUT_BIN_FULL: DWORD = 0 x00000800;
pub const PRINTER_STATUS_NOT_AVAILABLE: DWORD = 0 x00001000;
pub const PRINTER_STATUS_WAITING: DWORD = 0 x00002000;
pub const PRINTER_STATUS_PROCESSING: DWORD = 0 x00004000;
pub const PRINTER_STATUS_INITIALIZING: DWORD = 0 x00008000;
pub const PRINTER_STATUS_WARMING_UP: DWORD = 0 x00010000;
pub const PRINTER_STATUS_TONER_LOW: DWORD = 0 x00020000;
pub const PRINTER_STATUS_NO_TONER: DWORD = 0 x00040000;
pub const PRINTER_STATUS_PAGE_PUNT: DWORD = 0 x00080000;
pub const PRINTER_STATUS_USER_INTERVENTION: DWORD = 0 x00100000;
pub const PRINTER_STATUS_OUT_OF_MEMORY: DWORD = 0 x00200000;
pub const PRINTER_STATUS_DOOR_OPEN: DWORD = 0 x00400000;
pub const PRINTER_STATUS_SERVER_UNKNOWN: DWORD = 0 x00800000;
pub const PRINTER_STATUS_POWER_SAVE: DWORD = 0 x01000000;
pub const PRINTER_STATUS_SERVER_OFFLINE: DWORD = 0 x02000000;
pub const PRINTER_STATUS_DRIVER_UPDATE_NEEDED: DWORD = 0 x04000000;
pub const PRINTER_ATTRIBUTE_QUEUED: DWORD = 0 x00000001;
pub const PRINTER_ATTRIBUTE_DIRECT: DWORD = 0 x00000002;
pub const PRINTER_ATTRIBUTE_DEFAULT: DWORD = 0 x00000004;
pub const PRINTER_ATTRIBUTE_SHARED: DWORD = 0 x00000008;
pub const PRINTER_ATTRIBUTE_NETWORK: DWORD = 0 x00000010;
pub const PRINTER_ATTRIBUTE_HIDDEN: DWORD = 0 x00000020;
pub const PRINTER_ATTRIBUTE_LOCAL: DWORD = 0 x00000040;
pub const PRINTER_ATTRIBUTE_ENABLE_DEVQ: DWORD = 0 x00000080;
pub const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS: DWORD = 0 x00000100;
pub const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST: DWORD = 0 x00000200;
pub const PRINTER_ATTRIBUTE_WORK_OFFLINE: DWORD = 0 x00000400;
pub const PRINTER_ATTRIBUTE_ENABLE_BIDI: DWORD = 0 x00000800;
pub const PRINTER_ATTRIBUTE_RAW_ONLY: DWORD = 0 x00001000;
pub const PRINTER_ATTRIBUTE_PUBLISHED: DWORD = 0 x00002000;
pub const PRINTER_ATTRIBUTE_FAX: DWORD = 0 x00004000;
pub const PRINTER_ATTRIBUTE_TS: DWORD = 0 x00008000;
pub const PRINTER_ATTRIBUTE_PUSHED_USER: DWORD = 0 x00020000;
pub const PRINTER_ATTRIBUTE_PUSHED_MACHINE: DWORD = 0 x00040000;
pub const PRINTER_ATTRIBUTE_MACHINE: DWORD = 0 x00080000;
pub const PRINTER_ATTRIBUTE_FRIENDLY_NAME: DWORD = 0 x00100000;
pub const PRINTER_ATTRIBUTE_TS_GENERIC_DRIVER: DWORD = 0 x00200000;
pub const PRINTER_ATTRIBUTE_PER_USER: DWORD = 0 x00400000;
pub const PRINTER_ATTRIBUTE_ENTERPRISE_CLOUD: DWORD = 0 x00800000;
pub const NO_PRIORITY: DWORD = 0 ;
pub const MAX_PRIORITY: DWORD = 99 ;
pub const MIN_PRIORITY: DWORD = 1 ;
pub const DEF_PRIORITY: DWORD = 1 ;
STRUCT !{struct JOB_INFO_1A {
JobId: DWORD,
pPrinterName: LPSTR,
pMachineName: LPSTR,
pUserName: LPSTR,
pDocument: LPSTR,
pDatatype: LPSTR,
pStatus: LPSTR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
TotalPages: DWORD,
PagesPrinted: DWORD,
Submitted: SYSTEMTIME,
}}
pub type PJOB_INFO_1A = *mut JOB_INFO_1A;
pub type LPJOB_INFO_1A = *mut JOB_INFO_1A;
STRUCT !{struct JOB_INFO_1W {
JobId: DWORD,
pPrinterName: LPWSTR,
pMachineName: LPWSTR,
pUserName: LPWSTR,
pDocument: LPWSTR,
pDatatype: LPWSTR,
pStatus: LPWSTR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
TotalPages: DWORD,
PagesPrinted: DWORD,
Submitted: SYSTEMTIME,
}}
pub type PJOB_INFO_1W = *mut JOB_INFO_1W;
pub type LPJOB_INFO_1W = *mut JOB_INFO_1W;
STRUCT !{struct JOB_INFO_2A {
JobId: DWORD,
pPrinterName: LPSTR,
pMachineName: LPSTR,
pUserName: LPSTR,
pDocument: LPSTR,
pNotifyName: LPSTR,
pDatatype: LPSTR,
pPrintProcessor: LPSTR,
pParameters: LPSTR,
pDriverName: LPSTR,
pDevMode: LPDEVMODEA,
pStatus: LPSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
TotalPages: DWORD,
Size: DWORD,
Submitted: SYSTEMTIME,
Time: DWORD,
PagesPrinted: DWORD,
}}
pub type PJOB_INFO_2A = *mut JOB_INFO_2A;
pub type LPJOB_INFO_2A = *mut JOB_INFO_2A;
STRUCT !{struct JOB_INFO_2W {
JobId: DWORD,
pPrinterName: LPWSTR,
pMachineName: LPWSTR,
pUserName: LPWSTR,
pDocument: LPWSTR,
pNotifyName: LPWSTR,
pDatatype: LPWSTR,
pPrintProcessor: LPWSTR,
pParameters: LPWSTR,
pDriverName: LPWSTR,
pDevMode: LPDEVMODEW,
pStatus: LPWSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
TotalPages: DWORD,
Size: DWORD,
Submitted: SYSTEMTIME,
Time: DWORD,
PagesPrinted: DWORD,
}}
pub type PJOB_INFO_2W = *mut JOB_INFO_2W;
pub type LPJOB_INFO_2W = *mut JOB_INFO_2W;
STRUCT !{struct JOB_INFO_3 {
JobId: DWORD,
NextJobId: DWORD,
Reserved: DWORD,
}}
pub type PJOB_INFO_3 = *mut JOB_INFO_3;
pub type LPJOB_INFO_3 = *mut JOB_INFO_3;
STRUCT !{struct JOB_INFO_4A {
JobId: DWORD,
pPrinterName: LPSTR,
pMachineName: LPSTR,
pUserName: LPSTR,
pDocument: LPSTR,
pNotifyName: LPSTR,
pDatatype: LPSTR,
pPrintProcessor: LPSTR,
pParameters: LPSTR,
pDriverName: LPSTR,
pDevMode: LPDEVMODEA,
pStatus: LPSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
TotalPages: DWORD,
Size: DWORD,
Submitted: SYSTEMTIME,
Time: DWORD,
PagesPrinted: DWORD,
SizeHigh: LONG,
}}
pub type PJOB_INFO_4A = *mut JOB_INFO_4A;
pub type LPJOB_INFO_4A = *mut JOB_INFO_4A;
STRUCT !{struct JOB_INFO_4W {
JobId: DWORD,
pPrinterName: LPWSTR,
pMachineName: LPWSTR,
pUserName: LPWSTR,
pDocument: LPWSTR,
pNotifyName: LPWSTR,
pDatatype: LPWSTR,
pPrintProcessor: LPWSTR,
pParameters: LPWSTR,
pDriverName: LPWSTR,
pDevMode: LPDEVMODEW,
pStatus: LPWSTR,
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
Status: DWORD,
Priority: DWORD,
Position: DWORD,
StartTime: DWORD,
UntilTime: DWORD,
TotalPages: DWORD,
Size: DWORD,
Submitted: SYSTEMTIME,
Time: DWORD,
PagesPrinted: DWORD,
SizeHigh: LONG,
}}
pub type PJOB_INFO_4W = *mut JOB_INFO_4W;
pub type LPJOB_INFO_4W = *mut JOB_INFO_4W;
pub const JOB_CONTROL_PAUSE: DWORD = 1 ;
pub const JOB_CONTROL_RESUME: DWORD = 2 ;
pub const JOB_CONTROL_CANCEL: DWORD = 3 ;
pub const JOB_CONTROL_RESTART: DWORD = 4 ;
pub const JOB_CONTROL_DELETE: DWORD = 5 ;
pub const JOB_CONTROL_SENT_TO_PRINTER: DWORD = 6 ;
pub const JOB_CONTROL_LAST_PAGE_EJECTED: DWORD = 7 ;
pub const JOB_STATUS_PAUSED: DWORD = 0 x00000001;
pub const JOB_STATUS_ERROR: DWORD = 0 x00000002;
pub const JOB_STATUS_DELETING: DWORD = 0 x00000004;
pub const JOB_STATUS_SPOOLING: DWORD = 0 x00000008;
pub const JOB_STATUS_PRINTING: DWORD = 0 x00000010;
pub const JOB_STATUS_OFFLINE: DWORD = 0 x00000020;
pub const JOB_STATUS_PAPEROUT: DWORD = 0 x00000040;
pub const JOB_STATUS_PRINTED: DWORD = 0 x00000080;
pub const JOB_STATUS_DELETED: DWORD = 0 x00000100;
pub const JOB_STATUS_BLOCKED_DEVQ: DWORD = 0 x00000200;
pub const JOB_STATUS_USER_INTERVENTION: DWORD = 0 x00000400;
pub const JOB_STATUS_RESTART: DWORD = 0 x00000800;
pub const JOB_POSITION_UNSPECIFIED: DWORD = 0 ;
STRUCT !{struct ADDJOB_INFO_1A {
Path: LPSTR,
JobId: DWORD,
}}
pub type PADDJOB_INFO_1A = *mut ADDJOB_INFO_1A;
pub type LPADDJOB_INFO_1A = *mut ADDJOB_INFO_1A;
STRUCT !{struct ADDJOB_INFO_1W {
Path: LPWSTR,
JobId: DWORD,
}}
pub type PADDJOB_INFO_1W = *mut ADDJOB_INFO_1W;
pub type LPADDJOB_INFO_1W = *mut ADDJOB_INFO_1W;
STRUCT !{struct DRIVER_INFO_1A {
pName: LPSTR,
}}
pub type PDRIVER_INFO_1A = *mut DRIVER_INFO_1A;
pub type LPDRIVER_INFO_1A = *mut DRIVER_INFO_1A;
STRUCT !{struct DRIVER_INFO_1W {
pName: LPWSTR,
}}
pub type PDRIVER_INFO_1W = *mut DRIVER_INFO_1W;
pub type LPDRIVER_INFO_1W = *mut DRIVER_INFO_1W;
STRUCT !{struct DRIVER_INFO_2A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
}}
pub type PDRIVER_INFO_2A = *mut DRIVER_INFO_2A;
pub type LPDRIVER_INFO_2A = *mut DRIVER_INFO_2A;
STRUCT !{struct DRIVER_INFO_2W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
}}
pub type PDRIVER_INFO_2W = *mut DRIVER_INFO_2W;
pub type LPDRIVER_INFO_2W = *mut DRIVER_INFO_2W;
STRUCT !{struct DRIVER_INFO_3A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
pHelpFile: LPSTR,
pDependentFiles: LPSTR,
pMonitorName: LPSTR,
pDefaultDataType: LPSTR,
}}
pub type PDRIVER_INFO_3A = *mut DRIVER_INFO_3A;
pub type LPDRIVER_INFO_3A = *mut DRIVER_INFO_3A;
STRUCT !{struct DRIVER_INFO_3W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
pHelpFile: LPWSTR,
pDependentFiles: LPWSTR,
pMonitorName: LPWSTR,
pDefaultDataType: LPWSTR,
}}
pub type PDRIVER_INFO_3W = *mut DRIVER_INFO_3W;
pub type LPDRIVER_INFO_3W = *mut DRIVER_INFO_3W;
STRUCT !{struct DRIVER_INFO_4A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
pHelpFile: LPSTR,
pDependentFiles: LPSTR,
pMonitorName: LPSTR,
pDefaultDataType: LPSTR,
pszzPreviousNames: LPSTR,
}}
pub type PDRIVER_INFO_4A = *mut DRIVER_INFO_4A;
pub type LPDRIVER_INFO_4A = *mut DRIVER_INFO_4A;
STRUCT !{struct DRIVER_INFO_4W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
pHelpFile: LPWSTR,
pDependentFiles: LPWSTR,
pMonitorName: LPWSTR,
pDefaultDataType: LPWSTR,
pszzPreviousNames: LPWSTR,
}}
pub type PDRIVER_INFO_4W = *mut DRIVER_INFO_4W;
pub type LPDRIVER_INFO_4W = *mut DRIVER_INFO_4W;
STRUCT !{struct DRIVER_INFO_5A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
dwDriverAttributes: DWORD,
dwConfigVersion: DWORD,
dwDriverVersion: DWORD,
}}
pub type PDRIVER_INFO_5A = *mut DRIVER_INFO_5A;
pub type LPDRIVER_INFO_5A = *mut DRIVER_INFO_5A;
STRUCT !{struct DRIVER_INFO_5W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
dwDriverAttributes: DWORD,
dwConfigVersion: DWORD,
dwDriverVersion: DWORD,
}}
pub type PDRIVER_INFO_5W = *mut DRIVER_INFO_5W;
pub type LPDRIVER_INFO_5W = *mut DRIVER_INFO_5W;
STRUCT !{struct DRIVER_INFO_6A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
pHelpFile: LPSTR,
pDependentFiles: LPSTR,
pMonitorName: LPSTR,
pDefaultDataType: LPSTR,
pszzPreviousNames: LPSTR,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pszMfgName: LPSTR,
pszOEMUrl: LPSTR,
pszHardwareID: LPSTR,
pszProvider: LPSTR,
}}
pub type PDRIVER_INFO_6A = *mut DRIVER_INFO_6A;
pub type LPDRIVER_INFO_6A = *mut DRIVER_INFO_6A;
STRUCT !{struct DRIVER_INFO_6W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
pHelpFile: LPWSTR,
pDependentFiles: LPWSTR,
pMonitorName: LPWSTR,
pDefaultDataType: LPWSTR,
pszzPreviousNames: LPWSTR,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pszMfgName: LPWSTR,
pszOEMUrl: LPWSTR,
pszHardwareID: LPWSTR,
pszProvider: LPWSTR,
}}
pub type PDRIVER_INFO_6W = *mut DRIVER_INFO_6W;
pub type LPDRIVER_INFO_6W = *mut DRIVER_INFO_6W;
pub const PRINTER_DRIVER_PACKAGE_AWARE: DWORD = 0 x00000001;
pub const PRINTER_DRIVER_XPS: DWORD = 0 x00000002;
pub const PRINTER_DRIVER_SANDBOX_ENABLED: DWORD = 0 x00000004;
pub const PRINTER_DRIVER_CLASS: DWORD = 0 x00000008;
pub const PRINTER_DRIVER_DERIVED: DWORD = 0 x00000010;
pub const PRINTER_DRIVER_NOT_SHAREABLE: DWORD = 0 x00000020;
pub const PRINTER_DRIVER_CATEGORY_FAX: DWORD = 0 x00000040;
pub const PRINTER_DRIVER_CATEGORY_FILE: DWORD = 0 x00000080;
pub const PRINTER_DRIVER_CATEGORY_VIRTUAL: DWORD = 0 x00000100;
pub const PRINTER_DRIVER_CATEGORY_SERVICE: DWORD = 0 x00000200;
pub const PRINTER_DRIVER_SOFT_RESET_REQUIRED: DWORD = 0 x00000400;
pub const PRINTER_DRIVER_SANDBOX_DISABLED: DWORD = 0 x00000800;
pub const PRINTER_DRIVER_CATEGORY_3D: DWORD = 0 x00001000;
pub const PRINTER_DRIVER_CATEGORY_CLOUD: DWORD = 0 x00002000;
STRUCT !{struct DRIVER_INFO_8A {
cVersion: DWORD,
pName: LPSTR,
pEnvironment: LPSTR,
pDriverPath: LPSTR,
pDataFile: LPSTR,
pConfigFile: LPSTR,
pHelpFile: LPSTR,
pDependentFiles: LPSTR,
pMonitorName: LPSTR,
pDefaultDataType: LPSTR,
pszzPreviousNames: LPSTR,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pszMfgName: LPSTR,
pszOEMUrl: LPSTR,
pszHardwareID: LPSTR,
pszProvider: LPSTR,
pszPrintProcessor: LPSTR,
pszVendorSetup: LPSTR,
pszzColorProfiles: LPSTR,
pszInfPath: LPSTR,
dwPrinterDriverAttributes: DWORD,
pszzCoreDriverDependencies: LPSTR,
ftMinInboxDriverVerDate: FILETIME,
dwlMinInboxDriverVerVersion: DWORDLONG,
}}
pub type PDRIVER_INFO_8A = *mut DRIVER_INFO_8A;
pub type LPDRIVER_INFO_8A = *mut DRIVER_INFO_8A;
STRUCT !{struct DRIVER_INFO_8W {
cVersion: DWORD,
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverPath: LPWSTR,
pDataFile: LPWSTR,
pConfigFile: LPWSTR,
pHelpFile: LPWSTR,
pDependentFiles: LPWSTR,
pMonitorName: LPWSTR,
pDefaultDataType: LPWSTR,
pszzPreviousNames: LPWSTR,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pszMfgName: LPWSTR,
pszOEMUrl: LPWSTR,
pszHardwareID: LPWSTR,
pszProvider: LPWSTR,
pszPrintProcessor: LPWSTR,
pszVendorSetup: LPWSTR,
pszzColorProfiles: LPWSTR,
pszInfPath: LPWSTR,
dwPrinterDriverAttributes: DWORD,
pszzCoreDriverDependencies: LPWSTR,
ftMinInboxDriverVerDate: FILETIME,
dwlMinInboxDriverVerVersion: DWORDLONG,
}}
pub type PDRIVER_INFO_8W = *mut DRIVER_INFO_8W;
pub type LPDRIVER_INFO_8W = *mut DRIVER_INFO_8W;
pub const DRIVER_KERNELMODE: DWORD = 0 x00000001;
pub const DRIVER_USERMODE: DWORD = 0 x00000002;
pub const DPD_DELETE_UNUSED_FILES: DWORD = 0 x00000001;
pub const DPD_DELETE_SPECIFIC_VERSION: DWORD = 0 x00000002;
pub const DPD_DELETE_ALL_FILES: DWORD = 0 x00000004;
pub const APD_STRICT_UPGRADE: DWORD = 0 x00000001;
pub const APD_STRICT_DOWNGRADE: DWORD = 0 x00000002;
pub const APD_COPY_ALL_FILES: DWORD = 0 x00000004;
pub const APD_COPY_NEW_FILES: DWORD = 0 x00000008;
pub const APD_COPY_FROM_DIRECTORY: DWORD = 0 x00000010;
STRUCT !{struct DOC_INFO_1A {
pDocName: LPSTR,
pOutputFile: LPSTR,
pDatatype: LPSTR,
}}
pub type PDOC_INFO_1A = *mut DOC_INFO_1A;
pub type LPDOC_INFO_1A = *mut DOC_INFO_1A;
STRUCT !{struct DOC_INFO_1W {
pDocName: LPWSTR,
pOutputFile: LPWSTR,
pDatatype: LPWSTR,
}}
pub type PDOC_INFO_1W = *mut DOC_INFO_1W;
pub type LPDOC_INFO_1W = *mut DOC_INFO_1W;
STRUCT !{struct FORM_INFO_1A {
Flags: DWORD,
pName: LPSTR,
Size: SIZEL,
ImageableArea: RECTL,
}}
pub type PFORM_INFO_1A = *mut FORM_INFO_1A;
pub type LPFORM_INFO_1A = *mut FORM_INFO_1A;
STRUCT !{struct FORM_INFO_1W {
Flags: DWORD,
pName: LPWSTR,
Size: SIZEL,
ImageableArea: RECTL,
}}
pub type PFORM_INFO_1W = *mut FORM_INFO_1W;
pub type LPFORM_INFO_1W = *mut FORM_INFO_1W;
pub const STRING_NONE: DWORD = 0 x00000001;
pub const STRING_MUIDLL: DWORD = 0 x00000002;
pub const STRING_LANGPAIR: DWORD = 0 x00000004;
pub const MAX_FORM_KEYWORD_LENGTH: usize = 63 + 1 ;
STRUCT !{struct FORM_INFO_2A {
Flags: DWORD,
pName: LPCSTR,
Size: SIZEL,
ImageableArea: RECTL,
pKeyword: LPCSTR,
StringType: DWORD,
pMuiDll: LPCSTR,
dwResourceId: DWORD,
pDisplayName: LPCSTR,
wLangId: LANGID,
}}
pub type PFORM_INFO_2A = *mut FORM_INFO_2A;
pub type LPFORM_INFO_2A = *mut FORM_INFO_2A;
STRUCT !{struct FORM_INFO_2W {
Flags: DWORD,
pName: LPCWSTR,
Size: SIZEL,
ImageableArea: RECTL,
pKeyword: LPCSTR,
StringType: DWORD,
pMuiDll: LPCWSTR,
dwResourceId: DWORD,
pDisplayName: LPCWSTR,
wLangId: LANGID,
}}
pub type PFORM_INFO_2W = *mut FORM_INFO_2W;
pub type LPFORM_INFO_2W = *mut FORM_INFO_2W;
STRUCT !{struct DOC_INFO_2A {
pDocName: LPSTR,
pOutputFile: LPSTR,
pDatatype: LPSTR,
dwMode: DWORD,
JobId: DWORD,
}}
pub type PDOC_INFO_2A = *mut DOC_INFO_2A;
pub type LPDOC_INFO_2A = *mut DOC_INFO_2A;
STRUCT !{struct DOC_INFO_2W {
pDocName: LPWSTR,
pOutputFile: LPWSTR,
pDatatype: LPWSTR,
dwMode: DWORD,
JobId: DWORD,
}}
pub type PDOC_INFO_2W = *mut DOC_INFO_2W;
pub type LPDOC_INFO_2W = *mut DOC_INFO_2W;
pub const DI_CHANNEL: DWORD = 1 ;
pub const DI_READ_SPOOL_JOB: DWORD = 3 ;
STRUCT !{struct DOC_INFO_3A {
pDocName: LPSTR,
pOutputFile: LPSTR,
pDatatype: LPSTR,
dwFlags: DWORD,
}}
pub type PDOC_INFO_3A = *mut DOC_INFO_3A;
pub type LPDOC_INFO_3A = *mut DOC_INFO_3A;
STRUCT !{struct DOC_INFO_3W {
pDocName: LPWSTR,
pOutputFile: LPWSTR,
pDatatype: LPWSTR,
dwFlags: DWORD,
}}
pub type PDOC_INFO_3W = *mut DOC_INFO_3W;
pub type LPDOC_INFO_3W = *mut DOC_INFO_3W;
pub const DI_MEMORYMAP_WRITE: DWORD = 0 x00000001;
pub const FORM_USER: DWORD = 0 x00000000;
pub const FORM_BUILTIN: DWORD = 0 x00000001;
pub const FORM_PRINTER: DWORD = 0 x00000002;
STRUCT !{struct PRINTPROCESSOR_INFO_1A {
pName: LPSTR,
}}
pub type PPRINTPROCESSOR_INFO_1A = *mut PRINTPROCESSOR_INFO_1A;
pub type LPPRINTPROCESSOR_INFO_1A = *mut PRINTPROCESSOR_INFO_1A;
STRUCT !{struct PRINTPROCESSOR_INFO_1W {
pName: LPWSTR,
}}
pub type PPRINTPROCESSOR_INFO_1W = *mut PRINTPROCESSOR_INFO_1W;
pub type LPPRINTPROCESSOR_INFO_1W = *mut PRINTPROCESSOR_INFO_1W;
STRUCT !{struct PRINTPROCESSOR_CAPS_1 {
dwLevel: DWORD,
dwNupOptions: DWORD,
dwPageOrderFlags: DWORD,
dwNumberOfCopies: DWORD,
}}
pub type PPRINTPROCESSOR_CAPS_1 = *mut PRINTPROCESSOR_CAPS_1;
STRUCT !{struct PRINTPROCESSOR_CAPS_2 {
dwLevel: DWORD,
dwNupOptions: DWORD,
dwPageOrderFlags: DWORD,
dwNumberOfCopies: DWORD,
dwDuplexHandlingCaps: DWORD,
dwNupDirectionCaps: DWORD,
dwNupBorderCaps: DWORD,
dwBookletHandlingCaps: DWORD,
dwScalingCaps: DWORD,
}}
pub type PPRINTPROCESSOR_CAPS_2 = *mut PRINTPROCESSOR_CAPS_2;
pub const PPCAPS_RIGHT_THEN_DOWN: DWORD = 0 x00000001;
pub const PPCAPS_DOWN_THEN_RIGHT: DWORD = 0 x00000001 << 1 ;
pub const PPCAPS_LEFT_THEN_DOWN: DWORD = 0 x00000001 << 2 ;
pub const PPCAPS_DOWN_THEN_LEFT: DWORD = 0 x00000001 << 3 ;
pub const PPCAPS_BORDER_PRINT: DWORD = 0 x00000001;
pub const PPCAPS_BOOKLET_EDGE: DWORD = 0 x00000001;
pub const PPCAPS_REVERSE_PAGES_FOR_REVERSE_DUPLEX: DWORD = 0 x00000001;
pub const PPCAPS_DONT_SEND_EXTRA_PAGES_FOR_DUPLEX: DWORD = 0 x00000001 << 1 ;
pub const PPCAPS_SQUARE_SCALING: DWORD = 0 x00000001;
STRUCT !{struct PORT_INFO_1A {
pName: LPSTR,
}}
pub type PPORT_INFO_1A = *mut PORT_INFO_1A;
pub type LPPORT_INFO_1A = *mut PORT_INFO_1A;
STRUCT !{struct PORT_INFO_1W {
pName: LPWSTR,
}}
pub type PPORT_INFO_1W = *mut PORT_INFO_1W;
pub type LPPORT_INFO_1W = *mut PORT_INFO_1W;
STRUCT !{struct PORT_INFO_2A {
pPortName: LPSTR,
pMonitorName: LPSTR,
pDescription: LPSTR,
fPortType: DWORD,
Reserved: DWORD,
}}
pub type PPORT_INFO_2A = *mut PORT_INFO_2A;
pub type LPPORT_INFO_2A = *mut PORT_INFO_2A;
STRUCT !{struct PORT_INFO_2W {
pPortName: LPWSTR,
pMonitorName: LPWSTR,
pDescription: LPWSTR,
fPortType: DWORD,
Reserved: DWORD,
}}
pub type PPORT_INFO_2W = *mut PORT_INFO_2W;
pub type LPPORT_INFO_2W = *mut PORT_INFO_2W;
pub const PORT_TYPE_WRITE: DWORD = 0 x0001;
pub const PORT_TYPE_READ: DWORD = 0 x0002;
pub const PORT_TYPE_REDIRECTED: DWORD = 0 x0004;
pub const PORT_TYPE_NET_ATTACHED: DWORD = 0 x0008;
STRUCT !{struct PORT_INFO_3A {
dwStatus: DWORD,
pszStatus: LPSTR,
dwSeverity: DWORD,
}}
pub type PPORT_INFO_3A = *mut PORT_INFO_3A;
pub type LPPORT_INFO_3A = *mut PORT_INFO_3A;
STRUCT !{struct PORT_INFO_3W {
dwStatus: DWORD,
pszStatus: LPWSTR,
dwSeverity: DWORD,
}}
pub type PPORT_INFO_3W = *mut PORT_INFO_3W;
pub type LPPORT_INFO_3W = *mut PORT_INFO_3W;
pub const PORT_STATUS_TYPE_ERROR: DWORD = 1 ;
pub const PORT_STATUS_TYPE_WARNING: DWORD = 2 ;
pub const PORT_STATUS_TYPE_INFO: DWORD = 3 ;
pub const PORT_STATUS_OFFLINE: DWORD = 1 ;
pub const PORT_STATUS_PAPER_JAM: DWORD = 2 ;
pub const PORT_STATUS_PAPER_OUT: DWORD = 3 ;
pub const PORT_STATUS_OUTPUT_BIN_FULL: DWORD = 4 ;
pub const PORT_STATUS_PAPER_PROBLEM: DWORD = 5 ;
pub const PORT_STATUS_NO_TONER: DWORD = 6 ;
pub const PORT_STATUS_DOOR_OPEN: DWORD = 7 ;
pub const PORT_STATUS_USER_INTERVENTION: DWORD = 8 ;
pub const PORT_STATUS_OUT_OF_MEMORY: DWORD = 9 ;
pub const PORT_STATUS_TONER_LOW: DWORD = 10 ;
pub const PORT_STATUS_WARMING_UP: DWORD = 11 ;
pub const PORT_STATUS_POWER_SAVE: DWORD = 12 ;
STRUCT !{struct MONITOR_INFO_1A {
pName: LPSTR,
}}
pub type PMONITOR_INFO_1A = *mut MONITOR_INFO_1A;
pub type LPMONITOR_INFO_1A = *mut MONITOR_INFO_1A;
STRUCT !{struct MONITOR_INFO_1W {
pName: LPWSTR,
}}
pub type PMONITOR_INFO_1W = *mut MONITOR_INFO_1W;
pub type LPMONITOR_INFO_1W = *mut MONITOR_INFO_1W;
STRUCT !{struct MONITOR_INFO_2A {
pName: LPSTR,
pEnvironment: LPSTR,
pDLLName: LPSTR,
}}
pub type PMONITOR_INFO_2A = *mut MONITOR_INFO_2A;
pub type LPMONITOR_INFO_2A = *mut MONITOR_INFO_2A;
STRUCT !{struct MONITOR_INFO_2W {
pName: LPWSTR,
pEnvironment: LPWSTR,
pDLLName: LPWSTR,
}}
pub type PMONITOR_INFO_2W = *mut MONITOR_INFO_2W;
pub type LPMONITOR_INFO_2W = *mut MONITOR_INFO_2W;
STRUCT !{struct DATATYPES_INFO_1A {
pName: LPSTR,
}}
pub type PDATATYPES_INFO_1A = *mut DATATYPES_INFO_1A;
pub type LPDATATYPES_INFO_1A = *mut DATATYPES_INFO_1A;
STRUCT !{struct DATATYPES_INFO_1W {
pName: LPWSTR,
}}
pub type PDATATYPES_INFO_1W = *mut DATATYPES_INFO_1W;
pub type LPDATATYPES_INFO_1W = *mut DATATYPES_INFO_1W;
STRUCT !{struct PRINTER_DEFAULTSA {
pDataType: LPSTR,
pDevMode: LPDEVMODEA,
DesiredAccess: ACCESS_MASK,
}}
pub type PPRINTER_DEFAULTSA = *mut PRINTER_DEFAULTSA;
pub type LPPRINTER_DEFAULTSA = *mut PRINTER_DEFAULTSA;
STRUCT !{struct PRINTER_DEFAULTSW {
pDataType: LPWSTR,
pDevMode: LPDEVMODEW,
DesiredAccess: ACCESS_MASK,
}}
pub type PPRINTER_DEFAULTSW = *mut PRINTER_DEFAULTSW;
pub type LPPRINTER_DEFAULTSW = *mut PRINTER_DEFAULTSW;
STRUCT !{struct PRINTER_ENUM_VALUESA {
pValueName: LPSTR,
cbValueName: DWORD,
dwType: DWORD,
pData: LPBYTE,
cbData: DWORD,
}}
pub type PPRINTER_ENUM_VALUESA = *mut PRINTER_ENUM_VALUESA;
pub type LPPRINTER_ENUM_VALUESA = *mut PRINTER_ENUM_VALUESA;
STRUCT !{struct PRINTER_ENUM_VALUESW {
pValueName: LPWSTR,
cbValueName: DWORD,
dwType: DWORD,
pData: LPBYTE,
cbData: DWORD,
}}
pub type PPRINTER_ENUM_VALUESW = *mut PRINTER_ENUM_VALUESW;
pub type LPPRINTER_ENUM_VALUESW = *mut PRINTER_ENUM_VALUESW;
extern "system" {
pub fn EnumPrintersA(
Flags: DWORD,
Name: LPSTR,
Level: DWORD,
pPrinterEnum: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumPrintersW(
Flags: DWORD,
Name: LPWSTR,
Level: DWORD,
pPrinterEnum: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
}
pub const PRINTER_ENUM_DEFAULT: DWORD = 0 x00000001;
pub const PRINTER_ENUM_LOCAL: DWORD = 0 x00000002;
pub const PRINTER_ENUM_CONNECTIONS: DWORD = 0 x00000004;
pub const PRINTER_ENUM_FAVORITE: DWORD = 0 x00000004;
pub const PRINTER_ENUM_NAME: DWORD = 0 x00000008;
pub const PRINTER_ENUM_REMOTE: DWORD = 0 x00000010;
pub const PRINTER_ENUM_SHARED: DWORD = 0 x00000020;
pub const PRINTER_ENUM_NETWORK: DWORD = 0 x00000040;
pub const PRINTER_ENUM_EXPAND: DWORD = 0 x00004000;
pub const PRINTER_ENUM_CONTAINER: DWORD = 0 x00008000;
pub const PRINTER_ENUM_ICONMASK: DWORD = 0 x00ff0000;
pub const PRINTER_ENUM_ICON1: DWORD = 0 x00010000;
pub const PRINTER_ENUM_ICON2: DWORD = 0 x00020000;
pub const PRINTER_ENUM_ICON3: DWORD = 0 x00040000;
pub const PRINTER_ENUM_ICON4: DWORD = 0 x00080000;
pub const PRINTER_ENUM_ICON5: DWORD = 0 x00100000;
pub const PRINTER_ENUM_ICON6: DWORD = 0 x00200000;
pub const PRINTER_ENUM_ICON7: DWORD = 0 x00400000;
pub const PRINTER_ENUM_ICON8: DWORD = 0 x00800000;
pub const PRINTER_ENUM_HIDE: DWORD = 0 x01000000;
pub const PRINTER_ENUM_CATEGORY_ALL: DWORD = 0 x02000000;
pub const PRINTER_ENUM_CATEGORY_3D: DWORD = 0 x04000000;
pub const SPOOL_FILE_PERSISTENT: DWORD = 0 x00000001;
pub const SPOOL_FILE_TEMPORARY: DWORD = 0 x00000002;
extern "system" {
pub fn GetSpoolFileHandle(
hPrinter: HANDLE,
) -> HANDLE;
pub fn CommitSpoolData(
hPrinter: HANDLE,
hSpoolFile: HANDLE,
cbCommit: DWORD,
) -> HANDLE;
pub fn CloseSpoolFileHandle(
hPrinter: HANDLE,
hSpoolFile: HANDLE,
) -> BOOL;
pub fn OpenPrinterA(
pPrinterName: LPSTR,
phPrinter: LPHANDLE,
pDefault: LPPRINTER_DEFAULTSA,
) -> BOOL;
pub fn OpenPrinterW(
pPrinterName: LPWSTR,
phPrinter: LPHANDLE,
pDefault: LPPRINTER_DEFAULTSW,
) -> BOOL;
pub fn ResetPrinterA(
hPrinter: HANDLE,
pDefault: LPPRINTER_DEFAULTSA,
) -> BOOL;
pub fn ResetPrinterW(
hPrinter: HANDLE,
pDefault: LPPRINTER_DEFAULTSW,
) -> BOOL;
pub fn SetJobA(
hPrinter: HANDLE,
JobId: DWORD,
Level: DWORD,
pJob: LPBYTE,
Command: DWORD,
) -> BOOL;
pub fn SetJobW(
hPrinter: HANDLE,
JobId: DWORD,
Level: DWORD,
pJob: LPBYTE,
Command: DWORD,
) -> BOOL;
pub fn GetJobA(
hPrinter: HANDLE,
JobId: DWORD,
Level: DWORD,
pJob: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetJobW(
hPrinter: HANDLE,
JobId: DWORD,
Level: DWORD,
pJob: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn EnumJobsA(
hPrinter: HANDLE,
FirstJob: DWORD,
NoJobs: DWORD,
Level: DWORD,
pJob: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumJobsW(
hPrinter: HANDLE,
FirstJob: DWORD,
NoJobs: DWORD,
Level: DWORD,
pJob: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn AddPrinterA(
pName: LPSTR,
Level: DWORD,
pPrinter: LPBYTE,
) -> HANDLE;
pub fn AddPrinterW(
pName: LPWSTR,
Level: DWORD,
pPrinter: LPBYTE,
) -> HANDLE;
pub fn DeletePrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn SetPrinterA(
hPrinter: HANDLE,
Level: DWORD,
pPrinter: LPBYTE,
Command: DWORD,
) -> BOOL;
pub fn SetPrinterW(
hPrinter: HANDLE,
Level: DWORD,
pPrinter: LPBYTE,
Command: DWORD,
) -> BOOL;
pub fn GetPrinterA(
hPrinter: HANDLE,
Level: DWORD,
pPrinter: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrinterW(
hPrinter: HANDLE,
Level: DWORD,
pPrinter: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn AddPrinterDriverA(
pName: LPSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
) -> BOOL;
pub fn AddPrinterDriverW(
pName: LPWSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
) -> BOOL;
pub fn AddPrinterDriverExA(
pName: LPSTR,
Level: DWORD,
pDriverInfo: PBYTE,
dwFileCopyFlags: DWORD,
) -> BOOL;
pub fn AddPrinterDriverExW(
pName: LPWSTR,
Level: DWORD,
pDriverInfo: PBYTE,
dwFileCopyFlags: DWORD,
) -> BOOL;
pub fn EnumPrinterDriversA(
pName: LPSTR,
pEnvironment: LPSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumPrinterDriversW(
pName: LPWSTR,
pEnvironment: LPWSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn GetPrinterDriverA(
hPrinter: HANDLE,
pEnvironment: LPSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrinterDriverW(
hPrinter: HANDLE,
pEnvironment: LPWSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrinterDriverDirectoryA(
pName: LPSTR,
pEnvironment: LPSTR,
Level: DWORD,
pDriverDirectory: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrinterDriverDirectoryW(
pName: LPWSTR,
pEnvironment: LPWSTR,
Level: DWORD,
pDriverDirectory: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn DeletePrinterDriverA(
pName: LPSTR,
pEnvironment: LPSTR,
pDriverName: LPSTR,
) -> BOOL;
pub fn DeletePrinterDriverW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverName: LPWSTR,
) -> BOOL;
pub fn DeletePrinterDriverExA(
pName: LPSTR,
pEnvironment: LPSTR,
pDriverName: LPSTR,
dwDeleteFlag: DWORD,
dwVersionFlag: DWORD,
) -> BOOL;
pub fn DeletePrinterDriverExW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pDriverName: LPWSTR,
dwDeleteFlag: DWORD,
dwVersionFlag: DWORD,
) -> BOOL;
pub fn AddPrintProcessorA(
pName: LPSTR,
pEnvironment: LPSTR,
pPathName: LPSTR,
pPrintProcessorName: LPSTR,
) -> BOOL;
pub fn AddPrintProcessorW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pPathName: LPWSTR,
pPrintProcessorName: LPWSTR,
) -> BOOL;
pub fn EnumPrintProcessorsA(
pName: LPSTR,
pEnvironment: LPSTR,
Level: DWORD,
pPrintProcessorInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumPrintProcessorsW(
pName: LPWSTR,
pEnvironment: LPWSTR,
Level: DWORD,
pPrintProcessorInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn GetPrintProcessorDirectoryA(
pName: LPSTR,
pEnvironment: LPSTR,
Level: DWORD,
pPrintProcessorInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrintProcessorDirectoryW(
pName: LPWSTR,
pEnvironment: LPWSTR,
Level: DWORD,
pPrintProcessorInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn EnumPrintProcessorDatatypesA(
pName: LPSTR,
pPrintProcessorName: LPSTR,
Level: DWORD,
pDatatypes: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumPrintProcessorDatatypesW(
pName: LPWSTR,
pPrintProcessorName: LPWSTR,
Level: DWORD,
pDatatypes: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn DeletePrintProcessorA(
pName: LPSTR,
pEnvironment: LPSTR,
pPrintProcessorName: LPSTR,
) -> BOOL;
pub fn DeletePrintProcessorW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pPrintProcessorName: LPWSTR,
) -> BOOL;
pub fn StartDocPrinterA(
hPrinter: HANDLE,
Level: DWORD,
pDocInfo: LPBYTE,
) -> DWORD;
pub fn StartDocPrinterW(
hPrinter: HANDLE,
Level: DWORD,
pDocInfo: LPBYTE,
) -> DWORD;
pub fn StartPagePrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn WritePrinter(
hPrinter: HANDLE,
pBuf: LPVOID,
cbBuf: DWORD,
pcWritten: LPDWORD,
) -> BOOL;
pub fn FlushPrinter(
hPrinter: HANDLE,
pBuf: LPVOID,
cbBuf: DWORD,
pcWritten: LPDWORD,
cSleep: DWORD,
) -> BOOL;
pub fn EndPagePrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn AbortPrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn ReadPrinter(
hPrinter: HANDLE,
pBuf: LPVOID,
cbBuf: DWORD,
pNoBytesRead: LPDWORD,
) -> BOOL;
pub fn EndDocPrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn AddJobA(
hPrinter: HANDLE,
Level: DWORD,
pData: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn AddJobW(
hPrinter: HANDLE,
Level: DWORD,
pData: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn ScheduleJob(
hPrinter: HANDLE,
JobId: DWORD,
) -> BOOL;
pub fn PrinterProperties(
hWnd: HWND,
hPrinter: HANDLE,
) -> BOOL;
pub fn DocumentPropertiesA(
hWnd: HWND,
hPrinter: HANDLE,
pDeviceName: LPSTR,
pDevModeOutput: PDEVMODEA,
pDevModeInput: PDEVMODEA,
fMode: DWORD,
) -> LONG;
pub fn DocumentPropertiesW(
hWnd: HWND,
hPrinter: HANDLE,
pDeviceName: LPWSTR,
pDevModeOutput: PDEVMODEW,
pDevModeInput: PDEVMODEW,
fMode: DWORD,
) -> LONG;
pub fn AdvancedDocumentPropertiesA(
hWnd: HWND,
hPrinter: HANDLE,
pDeviceName: LPSTR,
pDevModeOutput: PDEVMODEA,
pDevModeInput: PDEVMODEA,
) -> LONG;
pub fn AdvancedDocumentPropertiesW(
hWnd: HWND,
hPrinter: HANDLE,
pDeviceName: LPWSTR,
pDevModeOutput: PDEVMODEW,
pDevModeInput: PDEVMODEW,
) -> LONG;
pub fn ExtDeviceMode(
hWnd: HWND,
hInst: HANDLE,
pDevModeOutput: LPDEVMODEA,
pDeviceName: LPSTR,
pPort: LPSTR,
pDevModeInput: LPDEVMODEA,
pProfile: LPSTR,
fMode: DWORD,
) -> LONG;
pub fn GetPrinterDataA(
hPrinter: HANDLE,
pValueName: LPSTR,
pType: LPDWORD,
pData: LPBYTE,
nSize: DWORD,
pcbNeeded: LPDWORD,
) -> DWORD;
pub fn GetPrinterDataW(
hPrinter: HANDLE,
pValueName: LPWSTR,
pType: LPDWORD,
pData: LPBYTE,
nSize: DWORD,
pcbNeeded: LPDWORD,
) -> DWORD;
pub fn GetPrinterDataExA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
pValueName: LPCSTR,
pType: LPDWORD,
pData: LPBYTE,
nSize: DWORD,
pcbNeeded: LPDWORD,
) -> DWORD;
pub fn GetPrinterDataExW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
pValueName: LPCWSTR,
pType: LPDWORD,
pData: LPBYTE,
nSize: DWORD,
pcbNeeded: LPDWORD,
) -> DWORD;
pub fn EnumPrinterDataA(
hPrinter: HANDLE,
dwIndex: DWORD,
pValueName: LPSTR,
cbValueName: DWORD,
pcbValueName: LPDWORD,
pType: LPDWORD,
pData: LPBYTE,
cbData: DWORD,
pcbData: LPDWORD,
) -> DWORD;
pub fn EnumPrinterDataW(
hPrinter: HANDLE,
dwIndex: DWORD,
pValueName: LPWSTR,
cbValueName: DWORD,
pcbValueName: LPDWORD,
pType: LPDWORD,
pData: LPBYTE,
cbData: DWORD,
pcbData: LPDWORD,
) -> DWORD;
pub fn EnumPrinterDataExA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
pEnumValues: LPBYTE,
cbEnumValues: DWORD,
pcbEnumValues: LPDWORD,
pnEnumValues: LPDWORD,
) -> DWORD;
pub fn EnumPrinterDataExW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
pEnumValues: LPBYTE,
cbEnumValues: DWORD,
pcbEnumValues: LPDWORD,
pnEnumValues: LPDWORD,
) -> DWORD;
pub fn EnumPrinterKeyA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
pSubKey: LPSTR,
cbSubkey: DWORD,
pcbSubkey: LPDWORD,
) -> DWORD;
pub fn EnumPrinterKeyW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
pSubKey: LPWSTR,
cbSubkey: DWORD,
pcbSubkey: LPDWORD,
) -> DWORD;
pub fn SetPrinterDataA(
hPrinter: HANDLE,
pValueName: LPSTR,
Type : DWORD,
pData: LPBYTE,
cbData: DWORD,
) -> DWORD;
pub fn SetPrinterDataW(
hPrinter: HANDLE,
pValueName: LPWSTR,
Type : DWORD,
pData: LPBYTE,
cbData: DWORD,
) -> DWORD;
pub fn SetPrinterDataExA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
pValueName: LPCSTR,
Type : DWORD,
pData: LPBYTE,
cbData: DWORD,
) -> DWORD;
pub fn SetPrinterDataExW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
pValueName: LPCWSTR,
Type : DWORD,
pData: LPBYTE,
cbData: DWORD,
) -> DWORD;
pub fn DeletePrinterDataA(
hPrinter: HANDLE,
pValueName: LPSTR,
) -> DWORD;
pub fn DeletePrinterDataW(
hPrinter: HANDLE,
pValueName: LPWSTR,
) -> DWORD;
pub fn DeletePrinterDataExA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
pValueName: LPCSTR,
) -> DWORD;
pub fn DeletePrinterDataExW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
pValueName: LPCWSTR,
) -> DWORD;
pub fn DeletePrinterKeyA(
hPrinter: HANDLE,
pKeyName: LPCSTR,
) -> DWORD;
pub fn DeletePrinterKeyW(
hPrinter: HANDLE,
pKeyName: LPCWSTR,
) -> DWORD;
}
pub const PRINTER_NOTIFY_TYPE: DWORD = 0 x00;
pub const JOB_NOTIFY_TYPE: DWORD = 0 x01;
pub const SERVER_NOTIFY_TYPE: DWORD = 0 x02;
pub const PRINTER_NOTIFY_FIELD_SERVER_NAME: DWORD = 0 x00;
pub const PRINTER_NOTIFY_FIELD_PRINTER_NAME: DWORD = 0 x01;
pub const PRINTER_NOTIFY_FIELD_SHARE_NAME: DWORD = 0 x02;
pub const PRINTER_NOTIFY_FIELD_PORT_NAME: DWORD = 0 x03;
pub const PRINTER_NOTIFY_FIELD_DRIVER_NAME: DWORD = 0 x04;
pub const PRINTER_NOTIFY_FIELD_COMMENT: DWORD = 0 x05;
pub const PRINTER_NOTIFY_FIELD_LOCATION: DWORD = 0 x06;
pub const PRINTER_NOTIFY_FIELD_DEVMODE: DWORD = 0 x07;
pub const PRINTER_NOTIFY_FIELD_SEPFILE: DWORD = 0 x08;
pub const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR: DWORD = 0 x09;
pub const PRINTER_NOTIFY_FIELD_PARAMETERS: DWORD = 0 x0A;
pub const PRINTER_NOTIFY_FIELD_DATATYPE: DWORD = 0 x0B;
pub const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR: DWORD = 0 x0C;
pub const PRINTER_NOTIFY_FIELD_ATTRIBUTES: DWORD = 0 x0D;
pub const PRINTER_NOTIFY_FIELD_PRIORITY: DWORD = 0 x0E;
pub const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY: DWORD = 0 x0F;
pub const PRINTER_NOTIFY_FIELD_START_TIME: DWORD = 0 x10;
pub const PRINTER_NOTIFY_FIELD_UNTIL_TIME: DWORD = 0 x11;
pub const PRINTER_NOTIFY_FIELD_STATUS: DWORD = 0 x12;
pub const PRINTER_NOTIFY_FIELD_STATUS_STRING: DWORD = 0 x13;
pub const PRINTER_NOTIFY_FIELD_CJOBS: DWORD = 0 x14;
pub const PRINTER_NOTIFY_FIELD_AVERAGE_PPM: DWORD = 0 x15;
pub const PRINTER_NOTIFY_FIELD_TOTAL_PAGES: DWORD = 0 x16;
pub const PRINTER_NOTIFY_FIELD_PAGES_PRINTED: DWORD = 0 x17;
pub const PRINTER_NOTIFY_FIELD_TOTAL_BYTES: DWORD = 0 x18;
pub const PRINTER_NOTIFY_FIELD_BYTES_PRINTED: DWORD = 0 x19;
pub const PRINTER_NOTIFY_FIELD_OBJECT_GUID: DWORD = 0 x1A;
pub const PRINTER_NOTIFY_FIELD_FRIENDLY_NAME: DWORD = 0 x1B;
pub const PRINTER_NOTIFY_FIELD_BRANCH_OFFICE_PRINTING: DWORD = 0 x1C;
pub const JOB_NOTIFY_FIELD_PRINTER_NAME: DWORD = 0 x00;
pub const JOB_NOTIFY_FIELD_MACHINE_NAME: DWORD = 0 x01;
pub const JOB_NOTIFY_FIELD_PORT_NAME: DWORD = 0 x02;
pub const JOB_NOTIFY_FIELD_USER_NAME: DWORD = 0 x03;
pub const JOB_NOTIFY_FIELD_NOTIFY_NAME: DWORD = 0 x04;
pub const JOB_NOTIFY_FIELD_DATATYPE: DWORD = 0 x05;
pub const JOB_NOTIFY_FIELD_PRINT_PROCESSOR: DWORD = 0 x06;
pub const JOB_NOTIFY_FIELD_PARAMETERS: DWORD = 0 x07;
pub const JOB_NOTIFY_FIELD_DRIVER_NAME: DWORD = 0 x08;
pub const JOB_NOTIFY_FIELD_DEVMODE: DWORD = 0 x09;
pub const JOB_NOTIFY_FIELD_STATUS: DWORD = 0 x0A;
pub const JOB_NOTIFY_FIELD_STATUS_STRING: DWORD = 0 x0B;
pub const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR: DWORD = 0 x0C;
pub const JOB_NOTIFY_FIELD_DOCUMENT: DWORD = 0 x0D;
pub const JOB_NOTIFY_FIELD_PRIORITY: DWORD = 0 x0E;
pub const JOB_NOTIFY_FIELD_POSITION: DWORD = 0 x0F;
pub const JOB_NOTIFY_FIELD_SUBMITTED: DWORD = 0 x10;
pub const JOB_NOTIFY_FIELD_START_TIME: DWORD = 0 x11;
pub const JOB_NOTIFY_FIELD_UNTIL_TIME: DWORD = 0 x12;
pub const JOB_NOTIFY_FIELD_TIME: DWORD = 0 x13;
pub const JOB_NOTIFY_FIELD_TOTAL_PAGES: DWORD = 0 x14;
pub const JOB_NOTIFY_FIELD_PAGES_PRINTED: DWORD = 0 x15;
pub const JOB_NOTIFY_FIELD_TOTAL_BYTES: DWORD = 0 x16;
pub const JOB_NOTIFY_FIELD_BYTES_PRINTED: DWORD = 0 x17;
pub const JOB_NOTIFY_FIELD_REMOTE_JOB_ID: DWORD = 0 x18;
pub const SERVER_NOTIFY_FIELD_PRINT_DRIVER_ISOLATION_GROUP: DWORD = 0 x00;
pub const PRINTER_NOTIFY_CATEGORY_ALL: DWORD = 0 x001000;
pub const PRINTER_NOTIFY_CATEGORY_3D: DWORD = 0 x002000;
STRUCT !{struct PRINTER_NOTIFY_OPTIONS_TYPE {
Type : WORD,
Reserved0: WORD,
Reserved1: DWORD,
Reserved2: DWORD,
Count: DWORD,
pFields: PWORD,
}}
pub type PPRINTER_NOTIFY_OPTIONS_TYPE = *mut PRINTER_NOTIFY_OPTIONS_TYPE;
pub type LPPRINTER_NOTIFY_OPTIONS_TYPE = *mut PRINTER_NOTIFY_OPTIONS_TYPE;
pub const PRINTER_NOTIFY_OPTIONS_REFRESH: DWORD = 0 x01;
STRUCT !{struct PRINTER_NOTIFY_OPTIONS {
Version: DWORD,
Flags: DWORD,
Count: DWORD,
pTypes: PPRINTER_NOTIFY_OPTIONS_TYPE,
}}
pub type PPRINTER_NOTIFY_OPTIONS = *mut PRINTER_NOTIFY_OPTIONS;
pub type LPPRINTER_NOTIFY_OPTIONS = *mut PRINTER_NOTIFY_OPTIONS;
pub const PRINTER_NOTIFY_INFO_DISCARDED: DWORD = 0 x01;
STRUCT !{struct PRINTER_NOTIFY_INFO_DATA_NotifyData_Data {
cbBuf: DWORD,
pBuf: LPVOID,
}}
UNION!{union PRINTER_NOTIFY_INFO_DATA_NotifyData {
[usize; 2 ],
adwData adwData_mut: [DWORD; 2 ],
Data Data_mut: PRINTER_NOTIFY_INFO_DATA_NotifyData_Data,
}}
STRUCT !{struct PRINTER_NOTIFY_INFO_DATA {
Type : WORD,
Field: WORD,
Reserved: DWORD,
Id: DWORD,
NotifyData: PRINTER_NOTIFY_INFO_DATA_NotifyData,
}}
pub type PPRINTER_NOTIFY_INFO_DATA = *mut PRINTER_NOTIFY_INFO_DATA;
pub type LPPRINTER_NOTIFY_INFO_DATA = *mut PRINTER_NOTIFY_INFO_DATA;
STRUCT !{struct PRINTER_NOTIFY_INFO {
Version: DWORD,
Flags: DWORD,
Count: DWORD,
aData: [PRINTER_NOTIFY_INFO_DATA; 1 ],
}}
pub type PPRINTER_NOTIFY_INFO = *mut PRINTER_NOTIFY_INFO;
pub type LPPRINTER_NOTIFY_INFO = *mut PRINTER_NOTIFY_INFO;
STRUCT !{struct BINARY_CONTAINER {
cbBuf: DWORD,
pData: LPBYTE,
}}
pub type PBINARY_CONTAINER = *mut BINARY_CONTAINER;
UNION!{union BIDI_DATA_u {
[usize; 2 ],
bData bData_mut: BOOL,
iData iData_mut: LONG,
sData sData_mut: LPWSTR,
fData fData_mut: FLOAT,
biData biData_mut: BINARY_CONTAINER,
}}
STRUCT !{struct BIDI_DATA {
dwBidiType: DWORD,
u: BIDI_DATA_u,
}}
pub type PBIDI_DATA = *mut BIDI_DATA;
pub type LPBIDI_DATA = *mut BIDI_DATA;
STRUCT !{struct BIDI_REQUEST_DATA {
dwReqNumber: DWORD,
pSchema: LPWSTR,
data: BIDI_DATA,
}}
pub type PBIDI_REQUEST_DATA = *mut BIDI_REQUEST_DATA;
pub type LPBIDI_REQUEST_DATA = *mut BIDI_REQUEST_DATA;
STRUCT !{struct BIDI_REQUEST_CONTAINER {
Version: DWORD,
Flags: DWORD,
Count: DWORD,
aData: [BIDI_REQUEST_DATA; 1 ],
}}
pub type PBIDI_REQUEST_CONTAINER = *mut BIDI_REQUEST_CONTAINER;
pub type LPBIDI_REQUEST_CONTAINER = *mut BIDI_REQUEST_CONTAINER;
STRUCT !{struct BIDI_RESPONSE_DATA {
dwResult: DWORD,
dwReqNumber: DWORD,
pSchema: LPWSTR,
data: BIDI_DATA,
}}
pub type PBIDI_RESPONSE_DATA = *mut BIDI_RESPONSE_DATA;
pub type LPBIDI_RESPONSE_DATA = *mut BIDI_RESPONSE_DATA;
STRUCT !{struct BIDI_RESPONSE_CONTAINER {
Version: DWORD,
Flags: DWORD,
Count: DWORD,
aData: [BIDI_RESPONSE_DATA; 1 ],
}}
pub type PBIDI_RESPONSE_CONTAINER = *mut BIDI_RESPONSE_CONTAINER;
pub type LPBIDI_RESPONSE_CONTAINER = *mut BIDI_RESPONSE_CONTAINER;
pub const BIDI_ACTION_ENUM_SCHEMA: &'static str = "EnumSchema";
pub const BIDI_ACTION_GET: &'static str = "Get";
pub const BIDI_ACTION_SET: &'static str = "Set";
pub const BIDI_ACTION_GET_ALL: &'static str = "GetAll";
pub const BIDI_ACTION_GET_WITH_ARGUMENT: &'static str = "GetWithArgument";
ENUM !{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 ,
}}
pub const BIDI_ACCESS_ADMINISTRATOR: DWORD = 0 x1;
pub const BIDI_ACCESS_USER: DWORD = 0 x2;
pub const ERROR_BIDI_STATUS_OK: DWORD = 0 ;
pub const ERROR_BIDI_NOT_SUPPORTED: DWORD = ERROR_NOT_SUPPORTED;
pub const ERROR_BIDI_ERROR_BASE: DWORD = 13000 ;
pub const ERROR_BIDI_STATUS_WARNING: DWORD = ERROR_BIDI_ERROR_BASE + 1 ;
pub const ERROR_BIDI_SCHEMA_READ_ONLY: DWORD = ERROR_BIDI_ERROR_BASE + 2 ;
pub const ERROR_BIDI_SERVER_OFFLINE: DWORD = ERROR_BIDI_ERROR_BASE + 3 ;
pub const ERROR_BIDI_DEVICE_OFFLINE: DWORD = ERROR_BIDI_ERROR_BASE + 4 ;
pub const ERROR_BIDI_SCHEMA_NOT_SUPPORTED: DWORD = ERROR_BIDI_ERROR_BASE + 5 ;
pub const ERROR_BIDI_SET_DIFFERENT_TYPE: DWORD = ERROR_BIDI_ERROR_BASE + 6 ;
pub const ERROR_BIDI_SET_MULTIPLE_SCHEMAPATH: DWORD = ERROR_BIDI_ERROR_BASE + 7 ;
pub const ERROR_BIDI_SET_INVALID_SCHEMAPATH: DWORD = ERROR_BIDI_ERROR_BASE + 8 ;
pub const ERROR_BIDI_SET_UNKNOWN_FAILURE: DWORD = ERROR_BIDI_ERROR_BASE + 9 ;
pub const ERROR_BIDI_SCHEMA_WRITE_ONLY: DWORD = ERROR_BIDI_ERROR_BASE + 10 ;
pub const ERROR_BIDI_GET_REQUIRES_ARGUMENT: DWORD = ERROR_BIDI_ERROR_BASE + 11 ;
pub const ERROR_BIDI_GET_ARGUMENT_NOT_SUPPORTED: DWORD = ERROR_BIDI_ERROR_BASE + 12 ;
pub const ERROR_BIDI_GET_MISSING_ARGUMENT: DWORD = ERROR_BIDI_ERROR_BASE + 13 ;
pub const ERROR_BIDI_DEVICE_CONFIG_UNCHANGED: DWORD = ERROR_BIDI_ERROR_BASE + 14 ;
pub const ERROR_BIDI_NO_LOCALIZED_RESOURCES: DWORD = ERROR_BIDI_ERROR_BASE + 15 ;
pub const ERROR_BIDI_NO_BIDI_SCHEMA_EXTENSIONS: DWORD = ERROR_BIDI_ERROR_BASE + 16 ;
pub const ERROR_BIDI_UNSUPPORTED_CLIENT_LANGUAGE: DWORD = ERROR_BIDI_ERROR_BASE + 17 ;
pub const ERROR_BIDI_UNSUPPORTED_RESOURCE_FORMAT: DWORD = ERROR_BIDI_ERROR_BASE + 18 ;
extern "system" {
pub fn WaitForPrinterChange(
hPrinter: HANDLE,
Flags: DWORD,
) -> DWORD;
pub fn FindFirstPrinterChangeNotification(
hPrinter: HANDLE,
fdwFilter: DWORD,
fdwOptions: DWORD,
pPrinterNotifyOptions: LPVOID,
) -> HANDLE;
pub fn FindNextPrinterChangeNotification(
hChange: HANDLE,
pdwChange: PDWORD,
pPrinterNotifyOptions: LPVOID,
ppPrinterNotifyInfo: *mut LPVOID,
) -> BOOL;
pub fn FreePrinterNotifyInfo(
pPrinterNotifyInfo: PPRINTER_NOTIFY_INFO,
) -> BOOL;
pub fn FindClosePrinterChangeNotification(
hChange: HANDLE,
) -> BOOL;
}
pub const PRINTER_CHANGE_ADD_PRINTER: DWORD = 0 x00000001;
pub const PRINTER_CHANGE_SET_PRINTER: DWORD = 0 x00000002;
pub const PRINTER_CHANGE_DELETE_PRINTER: DWORD = 0 x00000004;
pub const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER: DWORD = 0 x00000008;
pub const PRINTER_CHANGE_PRINTER: DWORD = 0 x000000FF;
pub const PRINTER_CHANGE_ADD_JOB: DWORD = 0 x00000100;
pub const PRINTER_CHANGE_SET_JOB: DWORD = 0 x00000200;
pub const PRINTER_CHANGE_DELETE_JOB: DWORD = 0 x00000400;
pub const PRINTER_CHANGE_WRITE_JOB: DWORD = 0 x00000800;
pub const PRINTER_CHANGE_JOB: DWORD = 0 x0000FF00;
pub const PRINTER_CHANGE_ADD_FORM: DWORD = 0 x00010000;
pub const PRINTER_CHANGE_SET_FORM: DWORD = 0 x00020000;
pub const PRINTER_CHANGE_DELETE_FORM: DWORD = 0 x00040000;
pub const PRINTER_CHANGE_FORM: DWORD = 0 x00070000;
pub const PRINTER_CHANGE_ADD_PORT: DWORD = 0 x00100000;
pub const PRINTER_CHANGE_CONFIGURE_PORT: DWORD = 0 x00200000;
pub const PRINTER_CHANGE_DELETE_PORT: DWORD = 0 x00400000;
pub const PRINTER_CHANGE_PORT: DWORD = 0 x00700000;
pub const PRINTER_CHANGE_ADD_PRINT_PROCESSOR: DWORD = 0 x01000000;
pub const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR: DWORD = 0 x04000000;
pub const PRINTER_CHANGE_PRINT_PROCESSOR: DWORD = 0 x07000000;
pub const PRINTER_CHANGE_SERVER: DWORD = 0 x08000000;
pub const PRINTER_CHANGE_ADD_PRINTER_DRIVER: DWORD = 0 x10000000;
pub const PRINTER_CHANGE_SET_PRINTER_DRIVER: DWORD = 0 x20000000;
pub const PRINTER_CHANGE_DELETE_PRINTER_DRIVER: DWORD = 0 x40000000;
pub const PRINTER_CHANGE_PRINTER_DRIVER: DWORD = 0 x70000000;
pub const PRINTER_CHANGE_TIMEOUT: DWORD = 0 x80000000;
pub const PRINTER_CHANGE_ALL: DWORD = 0 x7F77FFFF;
extern "system" {
pub fn PrinterMessageBoxA(
hPrinter: HANDLE,
Error: DWORD,
hWnd: HWND,
pText: LPSTR,
pCaption: LPSTR,
dwType: DWORD,
) -> DWORD;
pub fn PrinterMessageBoxW(
hPrinter: HANDLE,
Error: DWORD,
hWnd: HWND,
pText: LPWSTR,
pCaption: LPWSTR,
dwType: DWORD,
) -> DWORD;
}
pub const PRINTER_ERROR_INFORMATION: DWORD = 0 x80000000;
pub const PRINTER_ERROR_WARNING: DWORD = 0 x40000000;
pub const PRINTER_ERROR_SEVERE: DWORD = 0 x20000000;
pub const PRINTER_ERROR_OUTOFPAPER: DWORD = 0 x00000001;
pub const PRINTER_ERROR_JAM: DWORD = 0 x00000002;
pub const PRINTER_ERROR_OUTOFTONER: DWORD = 0 x00000004;
extern "system" {
pub fn ClosePrinter(
hPrinter: HANDLE,
) -> BOOL;
pub fn AddFormA(
hPrinter: HANDLE,
Level: DWORD,
pForm: LPBYTE,
) -> BOOL;
pub fn AddFormW(
hPrinter: HANDLE,
Level: DWORD,
pForm: LPBYTE,
) -> BOOL;
pub fn DeleteFormA(
hPrinter: HANDLE,
pFormName: LPSTR,
) -> BOOL;
pub fn DeleteFormW(
hPrinter: HANDLE,
pFormName: LPWSTR,
) -> BOOL;
pub fn GetFormA(
hPrinter: HANDLE,
pFormName: LPSTR,
Level: DWORD,
pForm: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetFormW(
hPrinter: HANDLE,
pFormName: LPWSTR,
Level: DWORD,
pForm: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn SetFormA(
hPrinter: HANDLE,
pFormName: LPSTR,
Level: DWORD,
pForm: LPBYTE,
) -> BOOL;
pub fn SetFormW(
hPrinter: HANDLE,
pFormName: LPWSTR,
Level: DWORD,
pForm: LPBYTE,
) -> BOOL;
pub fn EnumFormsA(
hPrinter: HANDLE,
Level: DWORD,
pForm: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumFormsW(
hPrinter: HANDLE,
Level: DWORD,
pForm: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumMonitorsA(
pName: LPSTR,
Level: DWORD,
pMonitor: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumMonitorsW(
pName: LPWSTR,
Level: DWORD,
pMonitor: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn AddMonitorA(
pName: LPSTR,
Level: DWORD,
pMonitors: LPBYTE,
) -> BOOL;
pub fn AddMonitorW(
pName: LPWSTR,
Level: DWORD,
pMonitors: LPBYTE,
) -> BOOL;
pub fn DeleteMonitorA(
pName: LPSTR,
pEnvironment: LPSTR,
pMonitorName: LPSTR,
) -> BOOL;
pub fn DeleteMonitorW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pMonitorName: LPWSTR,
) -> BOOL;
pub fn EnumPortsA(
pName: LPSTR,
Level: DWORD,
pPort: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn EnumPortsW(
pName: LPWSTR,
Level: DWORD,
pPort: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
pcReturned: LPDWORD,
) -> BOOL;
pub fn AddPortA(
pName: LPSTR,
hWnd: HWND,
pMonitorName: LPSTR,
) -> BOOL;
pub fn AddPortW(
pName: LPWSTR,
hWnd: HWND,
pMonitorName: LPWSTR,
) -> BOOL;
pub fn ConfigurePortA(
pName: LPSTR,
hWnd: HWND,
pPortName: LPSTR,
) -> BOOL;
pub fn ConfigurePortW(
pName: LPWSTR,
hWnd: HWND,
pPortName: LPWSTR,
) -> BOOL;
pub fn DeletePortA(
pName: LPSTR,
hWnd: HWND,
pPortName: LPSTR,
) -> BOOL;
pub fn DeletePortW(
pName: LPWSTR,
hWnd: HWND,
pPortName: LPWSTR,
) -> BOOL;
pub fn XcvDataW(
hXcv: HANDLE,
pszDataName: PCWSTR,
pInputData: PBYTE,
cbInputData: DWORD,
pOutputData: PBYTE,
cbOutputData: DWORD,
pcbOutputNeeded: PDWORD,
pdwStatus: PDWORD,
) -> BOOL;
pub fn GetDefaultPrinterA(
pszBuffer: LPSTR,
pcchBuffer: LPDWORD,
) -> BOOL;
pub fn GetDefaultPrinterW(
pszBuffer: LPWSTR,
pcchBuffer: LPDWORD,
) -> BOOL;
pub fn SetDefaultPrinterA(
pszPrinter: LPCSTR,
) -> BOOL;
pub fn SetDefaultPrinterW(
pszPrinter: LPCWSTR,
) -> BOOL;
pub fn SetPortA(
pName: LPSTR,
pPortName: LPSTR,
dwLevel: DWORD,
pPortInfo: LPBYTE,
) -> BOOL;
pub fn SetPortW(pName: LPWSTR,
pPortName: LPWSTR,
dwLevel: DWORD,
pPortInfo: LPBYTE,
) -> BOOL;
pub fn AddPrinterConnectionA(
pName: LPSTR,
) -> BOOL;
pub fn AddPrinterConnectionW(
pName: LPWSTR,
) -> BOOL;
pub fn DeletePrinterConnectionA(
pName: LPSTR,
) -> BOOL;
pub fn DeletePrinterConnectionW(
pName: LPWSTR,
) -> BOOL;
pub fn ConnectToPrinterDlg(
hwnd: HWND,
Flags: DWORD,
) -> HANDLE;
}
STRUCT !{struct PROVIDOR_INFO_1A {
pName: LPSTR,
pEnvironment: LPSTR,
pDLLName: LPSTR,
}}
pub type PPROVIDOR_INFO_1A = *mut PROVIDOR_INFO_1A;
pub type LPPROVIDOR_INFO_1A = *mut PROVIDOR_INFO_1A;
STRUCT !{struct PROVIDOR_INFO_1W {
pName: LPWSTR,
pEnvironment: LPWSTR,
pDLLName: LPWSTR,
}}
pub type PPROVIDOR_INFO_1W = *mut PROVIDOR_INFO_1W;
pub type LPPROVIDOR_INFO_1W = *mut PROVIDOR_INFO_1W;
STRUCT !{struct PROVIDOR_INFO_2A {
pOrder: LPSTR,
}}
pub type PPROVIDOR_INFO_2A = *mut PROVIDOR_INFO_2A;
pub type LPPROVIDOR_INFO_2A = *mut PROVIDOR_INFO_2A;
STRUCT !{struct PROVIDOR_INFO_2W {
pOrder: LPWSTR,
}}
pub type PPROVIDOR_INFO_2W = *mut PROVIDOR_INFO_2W;
pub type LPPROVIDOR_INFO_2W = *mut PROVIDOR_INFO_2W;
extern "system" {
pub fn AddPrintProvidorA(
pName: LPSTR,
Level: DWORD,
pProvidorInfo: LPBYTE,
) -> BOOL;
pub fn AddPrintProvidorW(
pName: LPWSTR,
Level: DWORD,
pProvidorInfo: LPBYTE,
) -> BOOL;
pub fn DeletePrintProvidorA(
pName: LPSTR,
pEnvironment: LPSTR,
pPrintProvidorName: LPSTR,
) -> BOOL;
pub fn DeletePrintProvidorW(
pName: LPWSTR,
pEnvironment: LPWSTR,
pPrintProvidorName: LPWSTR,
) -> BOOL;
pub fn IsValidDevmodeA(
pDevmode: PDEVMODEA,
DevmodeSize: size_t,
) -> BOOL;
pub fn IsValidDevmodeW(
pDevmode: PDEVMODEW,
DevmodeSize: size_t,
) -> BOOL;
}
pub const SPLREG_DEFAULT_SPOOL_DIRECTORY: &'static str = "DefaultSpoolDirectory";
pub const SPLREG_PORT_THREAD_PRIORITY_DEFAULT: &'static str = "PortThreadPriorityDefault";
pub const SPLREG_PORT_THREAD_PRIORITY: &'static str = "PortThreadPriority";
pub const SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT: &'static str
= "SchedulerThreadPriorityDefault" ;
pub const SPLREG_SCHEDULER_THREAD_PRIORITY: &'static str = "SchedulerThreadPriority";
pub const SPLREG_BEEP_ENABLED: &'static str = "BeepEnabled";
pub const SPLREG_NET_POPUP: &'static str = "NetPopup";
pub const SPLREG_RETRY_POPUP: &'static str = "RetryPopup";
pub const SPLREG_NET_POPUP_TO_COMPUTER: &'static str = "NetPopupToComputer";
pub const SPLREG_EVENT_LOG: &'static str = "EventLog";
pub const SPLREG_MAJOR_VERSION: &'static str = "MajorVersion";
pub const SPLREG_MINOR_VERSION: &'static str = "MinorVersion";
pub const SPLREG_ARCHITECTURE: &'static str = "Architecture";
pub const SPLREG_OS_VERSION: &'static str = "OSVersion";
pub const SPLREG_OS_VERSIONEX: &'static str = "OSVersionEx";
pub const SPLREG_DS_PRESENT: &'static str = "DsPresent";
pub const SPLREG_DS_PRESENT_FOR_USER: &'static str = "DsPresentForUser";
pub const SPLREG_REMOTE_FAX: &'static str = "RemoteFax";
pub const SPLREG_RESTART_JOB_ON_POOL_ERROR: &'static str = "RestartJobOnPoolError";
pub const SPLREG_RESTART_JOB_ON_POOL_ENABLED: &'static str = "RestartJobOnPoolEnabled";
pub const SPLREG_DNS_MACHINE_NAME: &'static str = "DNSMachineName";
pub const SPLREG_ALLOW_USER_MANAGEFORMS: &'static str = "AllowUserManageForms";
pub const SPLREG_WEBSHAREMGMT: &'static str = "WebShareMgmt";
pub const SPLREG_PRINT_DRIVER_ISOLATION_GROUPS_SEPARATOR: &'static str = "\\";
pub const SPLREG_PRINT_DRIVER_ISOLATION_GROUPS: &'static str = "PrintDriverIsolationGroups";
pub const SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE: &'static str
= "PrintDriverIsolationTimeBeforeRecycle" ;
pub const SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE: &'static str
= "PrintDriverIsolationMaxobjsBeforeRecycle" ;
pub const SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT: &'static str
= "PrintDriverIsolationIdleTimeout" ;
pub const SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY: &'static str
= "PrintDriverIsolationExecutionPolicy" ;
pub const SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY: &'static str
= "PrintDriverIsolationOverrideCompat" ;
pub const SPLREG_PRINT_QUEUE_V4_DRIVER_DIRECTORY: &'static str = "PrintQueueV4DriverDirectory";
pub const SERVER_ACCESS_ADMINISTER: DWORD = 0 x00000001;
pub const SERVER_ACCESS_ENUMERATE: DWORD = 0 x00000002;
pub const PRINTER_ACCESS_ADMINISTER: DWORD = 0 x00000004;
pub const PRINTER_ACCESS_USE: DWORD = 0 x00000008;
pub const JOB_ACCESS_ADMINISTER: DWORD = 0 x00000010;
pub const JOB_ACCESS_READ: DWORD = 0 x00000020;
pub const PRINTER_ACCESS_MANAGE_LIMITED: DWORD = 0 x00000040;
pub const SERVER_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER
| SERVER_ACCESS_ENUMERATE;
pub const SERVER_READ: DWORD = STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE;
pub const SERVER_WRITE: DWORD = STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER
| SERVER_ACCESS_ENUMERATE;
pub const SERVER_EXECUTE: DWORD = STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE;
pub const PRINTER_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER
| PRINTER_ACCESS_USE;
pub const PRINTER_READ: DWORD = STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE;
pub const PRINTER_WRITE: DWORD = STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE;
pub const PRINTER_EXECUTE: DWORD = STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE;
pub const JOB_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER
| JOB_ACCESS_READ;
pub const JOB_READ: DWORD = STANDARD_RIGHTS_READ | JOB_ACCESS_READ;
pub const JOB_WRITE: DWORD = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER;
pub const JOB_EXECUTE: DWORD = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER;
pub const SPLDS_SPOOLER_KEY: &'static str = "DsSpooler";
pub const SPLDS_DRIVER_KEY: &'static str = "DsDriver";
pub const SPLDS_USER_KEY: &'static str = "DsUser";
pub const SPLDS_ASSET_NUMBER: &'static str = "assetNumber";
pub const SPLDS_BYTES_PER_MINUTE: &'static str = "bytesPerMinute";
pub const SPLDS_DESCRIPTION: &'static str = "description";
pub const SPLDS_DRIVER_NAME: &'static str = "driverName";
pub const SPLDS_DRIVER_VERSION: &'static str = "driverVersion";
pub const SPLDS_LOCATION: &'static str = "location";
pub const SPLDS_PORT_NAME: &'static str = "portName";
pub const SPLDS_PRINT_ATTRIBUTES: &'static str = "printAttributes";
pub const SPLDS_PRINT_BIN_NAMES: &'static str = "printBinNames";
pub const SPLDS_PRINT_COLLATE: &'static str = "printCollate";
pub const SPLDS_PRINT_COLOR: &'static str = "printColor";
pub const SPLDS_PRINT_DUPLEX_SUPPORTED: &'static str = "printDuplexSupported";
pub const SPLDS_PRINT_END_TIME: &'static str = "printEndTime";
pub const SPLDS_PRINTER_CLASS: &'static str = "printQueue";
pub const SPLDS_PRINTER_NAME: &'static str = "printerName";
pub const SPLDS_PRINT_KEEP_PRINTED_JOBS: &'static str = "printKeepPrintedJobs";
pub const SPLDS_PRINT_LANGUAGE: &'static str = "printLanguage";
pub const SPLDS_PRINT_MAC_ADDRESS: &'static str = "printMACAddress";
pub const SPLDS_PRINT_MAX_X_EXTENT: &'static str = "printMaxXExtent";
pub const SPLDS_PRINT_MAX_Y_EXTENT: &'static str = "printMaxYExtent";
pub const SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED: &'static str = "printMaxResolutionSupported";
pub const SPLDS_PRINT_MEDIA_READY: &'static str = "printMediaReady";
pub const SPLDS_PRINT_MEDIA_SUPPORTED: &'static str = "printMediaSupported";
pub const SPLDS_PRINT_MEMORY: &'static str = "printMemory";
pub const SPLDS_PRINT_MIN_X_EXTENT: &'static str = "printMinXExtent";
pub const SPLDS_PRINT_MIN_Y_EXTENT: &'static str = "printMinYExtent";
pub const SPLDS_PRINT_NETWORK_ADDRESS: &'static str = "printNetworkAddress";
pub const SPLDS_PRINT_NOTIFY: &'static str = "printNotify";
pub const SPLDS_PRINT_NUMBER_UP: &'static str = "printNumberUp";
pub const SPLDS_PRINT_ORIENTATIONS_SUPPORTED: &'static str = "printOrientationsSupported";
pub const SPLDS_PRINT_OWNER: &'static str = "printOwner";
pub const SPLDS_PRINT_PAGES_PER_MINUTE: &'static str = "printPagesPerMinute";
pub const SPLDS_PRINT_RATE: &'static str = "printRate";
pub const SPLDS_PRINT_RATE_UNIT: &'static str = "printRateUnit";
pub const SPLDS_PRINT_SEPARATOR_FILE: &'static str = "printSeparatorFile";
pub const SPLDS_PRINT_SHARE_NAME: &'static str = "printShareName";
pub const SPLDS_PRINT_SPOOLING: &'static str = "printSpooling";
pub const SPLDS_PRINT_STAPLING_SUPPORTED: &'static str = "printStaplingSupported";
pub const SPLDS_PRINT_START_TIME: &'static str = "printStartTime";
pub const SPLDS_PRINT_STATUS: &'static str = "printStatus";
pub const SPLDS_PRIORITY: &'static str = "priority";
pub const SPLDS_SERVER_NAME: &'static str = "serverName";
pub const SPLDS_SHORT_SERVER_NAME: &'static str = "shortServerName";
pub const SPLDS_UNC_NAME: &'static str = "uNCName";
pub const SPLDS_URL: &'static str = "url";
pub const SPLDS_FLAGS: &'static str = "flags";
pub const SPLDS_VERSION_NUMBER: &'static str = "versionNumber";
pub const SPLDS_PRINTER_NAME_ALIASES: &'static str = "printerNameAliases";
pub const SPLDS_PRINTER_LOCATIONS: &'static str = "printerLocations";
pub const SPLDS_PRINTER_MODEL: &'static str = "printerModel";
ENUM !{enum PRINTER_OPTION_FLAGS {
PRINTER_OPTION_NO_CACHE = 1 << 0 ,
PRINTER_OPTION_CACHE = 1 << 1 ,
PRINTER_OPTION_CLIENT_CHANGE = 1 << 2 ,
PRINTER_OPTION_NO_CLIENT_DATA = 1 << 3 ,
}}
STRUCT !{struct PRINTER_OPTIONSA {
cbSize: UINT,
dwFlags: DWORD,
}}
pub type PPRINTER_OPTIONSA = *mut PRINTER_OPTIONSA;
pub type LPPRINTER_OPTIONSA = *mut PRINTER_OPTIONSA;
STRUCT !{struct PRINTER_OPTIONSW {
cbSize: UINT,
dwFlags: DWORD,
}}
pub type PPRINTER_OPTIONSW = *mut PRINTER_OPTIONSW;
pub type LPPRINTER_OPTIONSW = *mut PRINTER_OPTIONSW;
extern "system" {
pub fn OpenPrinter2A(
pPrinterName: LPCSTR,
phPrinter: LPHANDLE,
pDefault: PPRINTER_DEFAULTSA,
pOptions: PPRINTER_OPTIONSA,
) -> BOOL;
pub fn OpenPrinter2W(
pPrinterName: LPCWSTR,
phPrinter: LPHANDLE,
pDefault: PPRINTER_DEFAULTSW,
pOptions: PPRINTER_OPTIONSW,
) -> BOOL;
}
pub const PRINTER_CONNECTION_MISMATCH: DWORD = 0 x00000020;
pub const PRINTER_CONNECTION_NO_UI: DWORD = 0 x00000040;
STRUCT !{struct PRINTER_CONNECTION_INFO_1A {
dwFlags: DWORD,
pszDriverName: LPSTR,
}}
pub type PPRINTER_CONNECTION_INFO_1A = *mut PRINTER_CONNECTION_INFO_1A;
pub type LPPRINTER_CONNECTION_INFO_1A = *mut PRINTER_CONNECTION_INFO_1A;
STRUCT !{struct PRINTER_CONNECTION_INFO_1W {
dwFlags: DWORD,
pszDriverName: LPWSTR,
}}
pub type PPRINTER_CONNECTION_INFO_1W = *mut PRINTER_CONNECTION_INFO_1W;
pub type LPPRINTER_CONNECTION_INFO_1W = *mut PRINTER_CONNECTION_INFO_1W;
extern "system" {
pub fn AddPrinterConnection2A(
hWnd: HWND,
pszName: LPCSTR,
dwLevel: DWORD,
pConnectionInfo: PVOID,
) -> BOOL;
pub fn AddPrinterConnection2W(
hWnd: HWND,
pszName: LPCWSTR,
dwLevel: DWORD,
pConnectionInfo: PVOID,
) -> BOOL;
}
pub const IPDFP_COPY_ALL_FILES: DWORD = 0 x00000001;
extern "system" {
pub fn InstallPrinterDriverFromPackageA(
pszServer: LPCSTR,
pszInfPath: LPCSTR,
pszDriverName: LPCSTR,
pszEnvironment: LPCSTR,
dwFlags: DWORD,
) -> HRESULT;
pub fn InstallPrinterDriverFromPackageW(
pszServer: LPCWSTR,
pszInfPath: LPCWSTR,
pszDriverName: LPCWSTR,
pszEnvironment: LPCWSTR,
dwFlags: DWORD,
) -> HRESULT;
}
pub const UPDP_SILENT_UPLOAD: DWORD = 0 x00000001;
pub const UPDP_UPLOAD_ALWAYS: DWORD = 0 x00000002;
pub const UPDP_CHECK_DRIVERSTORE: DWORD = 0 x00000004;
extern "system" {
pub fn UploadPrinterDriverPackageA(
pszServer: LPCSTR,
pszInfPath: LPCSTR,
pszEnvironment: LPCSTR,
dwFlags: DWORD,
hwnd: HWND,
pszDestInfPath: LPSTR,
pcchDestInfPath: PULONG,
) -> HRESULT;
pub fn UploadPrinterDriverPackageW(
pszServer: LPCWSTR,
pszInfPath: LPCWSTR,
pszEnvironment: LPCWSTR,
dwFlags: DWORD,
hwnd: HWND,
pszDestInfPath: LPWSTR,
pcchDestInfPath: PULONG,
) -> HRESULT;
}
STRUCT !{struct CORE_PRINTER_DRIVERA {
CoreDriverGUID: GUID,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
szPackageID: [CHAR; MAX_PATH],
}}
pub type PCORE_PRINTER_DRIVERA = *mut CORE_PRINTER_DRIVERA;
STRUCT !{struct CORE_PRINTER_DRIVERW {
CoreDriverGUID: GUID,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
szPackageID: [WCHAR; MAX_PATH],
}}
pub type PCORE_PRINTER_DRIVERW = *mut CORE_PRINTER_DRIVERW;
extern "system" {
pub fn GetCorePrinterDriversA(
pszServer: LPCSTR,
pszEnvironment: LPCSTR,
pszzCoreDriverDependencies: LPCSTR,
cCorePrinterDrivers: DWORD,
pCorePrinterDrivers: PCORE_PRINTER_DRIVERA,
) -> HRESULT;
pub fn GetCorePrinterDriversW(
pszServer: LPCWSTR,
pszEnvironment: LPCWSTR,
pszzCoreDriverDependencies: LPCWSTR,
cCorePrinterDrivers: DWORD,
pCorePrinterDrivers: PCORE_PRINTER_DRIVERW,
) -> HRESULT;
pub fn CorePrinterDriverInstalledA(
pszServer: LPCSTR,
pszEnvironment: LPCSTR,
CoreDriverGUID: GUID,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pbDriverInstalled: *mut BOOL,
) -> HRESULT;
pub fn CorePrinterDriverInstalledW(
pszServer: LPCWSTR,
pszEnvironment: LPCWSTR,
CoreDriverGUID: GUID,
ftDriverDate: FILETIME,
dwlDriverVersion: DWORDLONG,
pbDriverInstalled: *mut BOOL,
) -> HRESULT;
pub fn GetPrinterDriverPackagePathA(
pszServer: LPCSTR,
pszEnvironment: LPCSTR,
pszLanguage: LPCSTR,
pszPackageID: LPCSTR,
pszDriverPackageCab: LPSTR,
cchDriverPackageCab: DWORD,
pcchRequiredSize: LPDWORD,
) -> HRESULT;
pub fn GetPrinterDriverPackagePathW(
pszServer: LPCWSTR,
pszEnvironment: LPCWSTR,
pszLanguage: LPCWSTR,
pszPackageID: LPCWSTR,
pszDriverPackageCab: LPWSTR,
cchDriverPackageCab: DWORD,
pcchRequiredSize: LPDWORD,
) -> HRESULT;
pub fn DeletePrinterDriverPackageA(
pszServer: LPCSTR,
pszInfPath: LPCSTR,
pszEnvironment: LPCSTR,
) -> HRESULT;
pub fn DeletePrinterDriverPackageW(
pszServer: LPCWSTR,
pszInfPath: LPCWSTR,
pszEnvironment: LPCWSTR,
) -> HRESULT;
}
ENUM !{enum EPrintPropertyType {
kPropertyTypeString = 1 ,
kPropertyTypeInt32,
kPropertyTypeInt64,
kPropertyTypeByte,
kPropertyTypeTime,
kPropertyTypeDevMode,
kPropertyTypeSD,
kPropertyTypeNotificationReply,
kPropertyTypeNotificationOptions,
kPropertyTypeBuffer,
}}
ENUM !{enum EPrintXPSJobProgress {
kAddingDocumentSequence = 0 ,
kDocumentSequenceAdded = 1 ,
kAddingFixedDocument = 2 ,
kFixedDocumentAdded = 3 ,
kAddingFixedPage = 4 ,
kFixedPageAdded = 5 ,
kResourceAdded = 6 ,
kFontAdded = 7 ,
kImageAdded = 8 ,
kXpsDocumentCommitted = 9 ,
}}
ENUM !{enum EPrintXPSJobOperation {
kJobProduction = 1 ,
kJobConsumption,
}}
STRUCT !{struct PrintPropertyValue_value_propertyBlob {
cbBuf: DWORD,
pBuf: LPVOID,
}}
UNION!{union PrintPropertyValue_value {
[u64; 1 ] [u64; 2 ],
propertyByte propertyByte_mut: BYTE,
propertyString propertyString_mut: PWSTR,
propertyInt32 propertyInt32_mut: LONG,
propertyInt64 propertyInt64_mut: LONGLONG,
propertyBlob propertyBlob_mut: PrintPropertyValue_value_propertyBlob,
}}
STRUCT !{struct PrintPropertyValue {
ePropertyType: EPrintPropertyType,
value: PrintPropertyValue_value,
}}
STRUCT !{struct PrintNamedProperty {
propertyName: *mut WCHAR,
propertyValue: PrintPropertyValue,
}}
STRUCT !{struct PrintPropertiesCollection {
numberOfProperties: ULONG,
propertiesCollection: *mut PrintNamedProperty,
}}
extern "system" {
pub fn ReportJobProcessingProgress(
printerHandle: HANDLE,
jobId: ULONG,
jobOperation: EPrintXPSJobOperation,
jobProgress: EPrintXPSJobProgress,
) -> HRESULT;
pub fn GetPrinterDriver2A(
hWnd: HWND,
hPrinter: HANDLE,
pEnvironment: LPSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
pub fn GetPrinterDriver2W(
hWnd: HWND,
hPrinter: HANDLE,
pEnvironment: LPWSTR,
Level: DWORD,
pDriverInfo: LPBYTE,
cbBuf: DWORD,
pcbNeeded: LPDWORD,
) -> BOOL;
}
ENUM !{enum PRINT_EXECUTION_CONTEXT {
PRINT_EXECUTION_CONTEXT_APPLICATION = 0 ,
PRINT_EXECUTION_CONTEXT_SPOOLER_SERVICE = 1 ,
PRINT_EXECUTION_CONTEXT_SPOOLER_ISOLATION_HOST = 2 ,
PRINT_EXECUTION_CONTEXT_FILTER_PIPELINE = 3 ,
PRINT_EXECUTION_CONTEXT_WOW64 = 4 ,
}}
STRUCT !{struct PRINT_EXECUTION_DATA {
context: PRINT_EXECUTION_CONTEXT,
clientAppPID: DWORD,
}}
extern "system" {
pub fn GetPrintExecutionData(
pData: *mut PRINT_EXECUTION_DATA,
) -> BOOL;
pub fn GetJobNamedPropertyValue(
hPrinter: HANDLE,
JobId: DWORD,
pszName: PCWSTR,
pValue: *mut PrintPropertyValue,
) -> DWORD;
pub fn FreePrintPropertyValue(
pValue: *mut PrintPropertyValue,
);
pub fn FreePrintNamedPropertyArray(
cProperties: DWORD,
ppProperties: *mut *mut PrintNamedProperty,
);
pub fn SetJobNamedProperty(
hPrinter: HANDLE,
JobId: DWORD,
pProperty: *const PrintNamedProperty,
) -> DWORD;
pub fn DeleteJobNamedProperty(
hPrinter: HANDLE,
JobId: DWORD,
pszName: PCWSTR,
) -> DWORD;
pub fn EnumJobNamedProperties(
hPrinter: HANDLE,
JobId: DWORD,
pcProperties: *mut DWORD,
ppProperties: *mut *mut PrintNamedProperty,
) -> DWORD;
pub fn GetPrintOutputInfo(
hWnd: HWND,
pszPrinter: PCWSTR,
phFile: *mut HANDLE,
ppszOutputFile: *mut PWSTR,
) -> HRESULT;
}
pub const MS_PRINT_JOB_OUTPUT_FILE: &'static str = "MsPrintJobOutputFile";
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.32 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland