diff options
Diffstat (limited to 'common/quicktime_win32/PMIOModule.h')
| -rw-r--r-- | common/quicktime_win32/PMIOModule.h | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/common/quicktime_win32/PMIOModule.h b/common/quicktime_win32/PMIOModule.h new file mode 100644 index 0000000..f8403fe --- /dev/null +++ b/common/quicktime_win32/PMIOModule.h @@ -0,0 +1,180 @@ +/* + File: PMIOModule.h + + Contains: Mac OS X Printing Manager IO Module Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __CFSTRING__ +#include <CFString.h> +#endif + +#ifndef __PMTICKET__ +#include <PMTicket.h> +#endif + +#ifndef __PMPLUGINHEADER__ +#include <PMPluginHeader.h> +#endif + +#ifndef __PMERRORS__ +#include <PMErrors.h> +#endif + + + +/* context ID for IO Modules */ + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +typedef struct OpaqueIOMContext* IOMContext; +/* kPMPrinterURI corresponds to a CFString to a connection-specific +address specification for the printer. For instance, on an lpd connection +this would be an address of the form lpd://<host>/<queue name>. */ +#define kPMPrinterURI CFSTR("Printer URI") +/* System-supported connection type names used in identifying the different connection types +and for requesting lookup information from Printer Modules. PrintCenter does not use these +strings in its UI, instead it gets the actual UI strings from the Printer Browser Module. */ +#define kPMAppleTalkConnection CFSTR("AppleTalk") +#define kPMUSBConnection CFSTR("USB") +#define kPMLPRConnection CFSTR("LPR") +#define kPMDirServicesConnection CFSTR("Directory Services") +/* possible attributes that can be requested from an IO Module and allow clients to determine various +characteristics about the IOM, its connection type, and the target printer. The same attribute can +be used for getting a value or setting it. */ +#define kPMBiDiAttr CFSTR("Supports BiDirectional Communication") +/* bi-directional communication capability */ +#define kPM8BitChannelAttr CFSTR("Supports 8-bit Channel") +/* full 8-bit per byte data (vs. 7) */ +#define kPMTransparentByteRange CFSTR("Supports Transparent Byte Range") +/* transparent byte range */ +#define kPMJobIDAttr CFSTR("Supports JobID") +/* in-printer-jobID */ +#define kPMTimeoutAttr CFSTR("Supports Timeout") +/* get/set timeout duration */ +#define kPMTStatusAttr CFSTR("Supports T Status Request") +/* status on the T channel */ +/* Used with the IOMGetAttribute call, a supporting IO Module will hand back + * a copy of a CFStringRef describing the last error encountered. If there was + * no last error, or if there is no available string then NULL is passed back. + */ +#define kPMLastErrorStrAttr CFSTR("Last Error") + +/* Type ID, interface ID for the IOM CFPlugin */ +#define kIOModuleTypeIDStr "EE5A5E5C-C2DD-11D3-84B5-00050209D9C1" +#define kIOModuleIntfIDStr "F4F7510C-C2DD-11D3-93A5-00050209D9C1" +/* IOM API version numbers (see PMPluginHeader.h for the meaning of these defintions) */ +enum { + kIOMBuildVersionMajor = 1, + kIOMBuildVersionMinor = 0, + kIOMBaseVersionMajor = 1, + kIOMBaseVersionMinor = 0 +}; + +typedef CALLBACK_API_C( OSStatus , PMIOModuleGetConnectionInfoProc )(CFStringRef *connectionType, CFStringRef *pbmPath); +typedef CALLBACK_API_C( OSStatus , PMIOModuleInitializeProc )(CFDataRef printerAddress, IOMContext *ioModuleContextPtr); +typedef CALLBACK_API_C( OSStatus , PMIOModuleOpenProc )(IOMContext ioModuleContext, PMTicketRef jobTicket, UInt32 *bufferSize); +typedef CALLBACK_API_C( OSStatus , PMIOModuleReadProc )(IOMContext ioModuleContext, Ptr buffer, UInt32 *size, Boolean *eoj); +typedef CALLBACK_API_C( OSStatus , PMIOModuleWriteProc )(IOMContext ioModuleContext, Ptr buffer, UInt32 *size, Boolean eoj); +typedef CALLBACK_API_C( OSStatus , PMIOModuleStatusProc )(IOMContext ioModuleContext, CFStringRef *status); +typedef CALLBACK_API_C( OSStatus , PMIOModuleGetAttributeProc )(IOMContext ioModuleContext, CFStringRef attribute, CFTypeRef *result); +typedef CALLBACK_API_C( OSStatus , PMIOModuleSetAttributeProc )(IOMContext ioModuleContext, CFStringRef attribute, CFTypeRef data); +typedef CALLBACK_API_C( OSStatus , PMIOModuleCloseProc )(IOMContext ioModuleContext, Boolean abort); +typedef CALLBACK_API_C( OSStatus , PMIOModuleTerminateProc )(IOMContext * ioModuleContextPtr); +/* IOMProcs contains the routines required to be exported by an IOM Module. */ +struct IOMProcs { + /* The plugin header is required with all plugins and must proceed object's layout.*/ + PMPlugInHeader pluginHeader; + + /* The actual IO Module routine Procs*/ + + /* GetConnectionInfo: returns the connection type and the path to the companion browser module relative */ + /* to /Library/Printers/. The connection types: AppleTalk, USB, LPR, and Directory Services are reserved by Apple.*/ + PMIOModuleGetConnectionInfoProc GetConnectionInfo; + + /* Initialize: creates a context to store local variables during an IO session. printerAddress of*/ + /* the target printer is passed as CFDataRef as defined by the protocol and set by the Printer Browser Module*/ + PMIOModuleInitializeProc Initialize; + + /* Open: open IO connection with the target device. The parameter buffSize is set*/ + /* by the IOM to return its maximum write buffer size.*/ + PMIOModuleOpenProc Open; + + /* Read: read data from the device over the read channel, if any. */ + PMIOModuleReadProc Read; + + /* Write: write data to the device*/ + PMIOModuleWriteProc Write; + + /* Status: get status from the device*/ + PMIOModuleStatusProc Status; + + /* GetAttribute: checks if a defined IO attribute is supported by the target IO connection. If the requested */ + /* 'attribute' is supported and available, it's returned in 'result'. If supported but not available, error code */ + /* kAttrNotAvailable is returned. If the attribute is not supported, kPMNotImplemented is returned.*/ + PMIOModuleGetAttributeProc GetAttribute; + + /* SetAttribute: sets a pre-defined 'attribute' to a given value passed in 'data'. Only supported attributes*/ + /* can be set; otherwise kAttrNotAvailable or kPMNotImplemented is returned.*/ + PMIOModuleSetAttributeProc SetAttribute; + + /* Close: close IO connection with the target device. The parameter 'abort' indicates whether the current job*/ + /* is to be canceled before closing connection (true; i.e. user cancels) or not (false; i.e. normal job completion).*/ + PMIOModuleCloseProc Close; + + /* Terminate: dispose of any data allocated in Initialize.*/ + PMIOModuleTerminateProc Terminate; + +}; +typedef struct IOMProcs IOMProcs; +/* IOM interface is an object containing addresses to the module's entry points:*/ +struct IOMInterface { + const IOMProcs * vtable; +}; +typedef struct IOMInterface IOMInterface; +typedef const IOMInterface * IOMInterfaceRef; + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif |