summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/PMIOModule.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/PMIOModule.h')
-rw-r--r--common/quicktime_win32/PMIOModule.h180
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