summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/IsochronousDataHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/IsochronousDataHandler.h')
-rw-r--r--common/quicktime_win32/IsochronousDataHandler.h681
1 files changed, 681 insertions, 0 deletions
diff --git a/common/quicktime_win32/IsochronousDataHandler.h b/common/quicktime_win32/IsochronousDataHandler.h
new file mode 100644
index 0000000..2dd2609
--- /dev/null
+++ b/common/quicktime_win32/IsochronousDataHandler.h
@@ -0,0 +1,681 @@
+/*
+ File: IsochronousDataHandler.h
+
+ Contains: Component Manager based Isochronous Data Handler
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1997-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/
+
+*/
+//
+// Check for Prior Inclusion of IsochronousDataHandler.r
+// If this header is trying to be included via a Rez path, make it act
+// as a NOP. This will allow both Rez & C files to get to use the
+// contants for the component type, subtype, and interface version.
+#ifndef __ISOCHRONOUSDATAHANDLER_R__
+
+
+#ifndef __ISOCHRONOUSDATAHANDLER__
+#define __ISOCHRONOUSDATAHANDLER__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __MOVIESFORMAT__
+#include <MoviesFormat.h>
+#endif
+
+#ifndef __QUICKTIMECOMPONENTS__
+#include <QuickTimeComponents.h>
+#endif
+
+
+
+
+
+
+
+#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
+
+enum {
+ kIDHComponentType = FOUR_CHAR_CODE('ihlr'), /* Component type*/
+ kIDHSubtypeDV = FOUR_CHAR_CODE('dv '), /* Subtype for DV (over FireWire)*/
+ kIDHSubtypeFireWireConference = FOUR_CHAR_CODE('fwc ') /* Subtype for FW Conference*/
+};
+
+
+/* Version of Isochronous Data Handler API*/
+enum {
+ kIDHInterfaceVersion1 = 0x0001 /* Initial relase (Summer '99)*/
+};
+
+
+/* atom types*/
+
+enum {
+ kIDHDeviceListAtomType = FOUR_CHAR_CODE('dlst'),
+ kIDHDeviceAtomType = FOUR_CHAR_CODE('devc'), /* to be defined elsewhere*/
+ kIDHIsochServiceAtomType = FOUR_CHAR_CODE('isoc'),
+ kIDHIsochModeAtomType = FOUR_CHAR_CODE('mode'),
+ kIDHDeviceIDType = FOUR_CHAR_CODE('dvid'),
+ kIDHDefaultIOType = FOUR_CHAR_CODE('dfio'),
+ kIDHIsochVersionAtomType = FOUR_CHAR_CODE('iver'),
+ kIDHUniqueIDType = FOUR_CHAR_CODE('unid'),
+ kIDHNameAtomType = FOUR_CHAR_CODE('name'),
+ kIDHUseCMPAtomType = FOUR_CHAR_CODE('ucmp'),
+ kIDHIsochMediaType = FOUR_CHAR_CODE('av '),
+ kIDHDataTypeAtomType = FOUR_CHAR_CODE('dtyp'),
+ kIDHDataSizeAtomType = FOUR_CHAR_CODE('dsiz'), /* ??? packet size vs. buffer size*/
+ kIDHDataBufferSizeAtomType = FOUR_CHAR_CODE('dbuf'), /* ??? packet size vs. buffer size*/
+ kIDHDataIntervalAtomType = FOUR_CHAR_CODE('intv'),
+ kIDHDataIODirectionAtomType = FOUR_CHAR_CODE('ddir'),
+ kIDHSoundMediaAtomType = FOUR_CHAR_CODE('soun'),
+ kIDHSoundTypeAtomType = FOUR_CHAR_CODE('type'),
+ kIDHSoundChannelCountAtomType = FOUR_CHAR_CODE('ccnt'),
+ kIDHSoundSampleSizeAtomType = FOUR_CHAR_CODE('ssiz'),
+ kIDHSoundSampleRateAtomType = FOUR_CHAR_CODE('srat'), /* same as video out... (what does this comment mean?)*/
+ kIDHVideoMediaAtomType = FOUR_CHAR_CODE('vide'),
+ kIDHVideoDimensionsAtomType = FOUR_CHAR_CODE('dimn'),
+ kIDHVideoResolutionAtomType = FOUR_CHAR_CODE('resl'),
+ kIDHVideoRefreshRateAtomType = FOUR_CHAR_CODE('refr'),
+ kIDHVideoPixelTypeAtomType = FOUR_CHAR_CODE('pixl'),
+ kIDHVideoDecompressorAtomType = FOUR_CHAR_CODE('deco'),
+ kIDHVideoDecompressorTypeAtomType = FOUR_CHAR_CODE('dety'),
+ kIDHVideoDecompressorContinuousAtomType = FOUR_CHAR_CODE('cont'),
+ kIDHVideoDecompressorComponentAtomType = FOUR_CHAR_CODE('cmpt')
+};
+
+/* I/O Flags */
+enum {
+ kIDHDataTypeIsInput = 1L << 0,
+ kIDHDataTypeIsOutput = 1L << 1,
+ kIDHDataTypeIsInputAndOutput = 1L << 2
+};
+
+
+/* Permission Flags */
+enum {
+ kIDHOpenForReadTransactions = 1L << 0,
+ kIDHOpenForWriteTransactions = 1L << 1,
+ kIDHOpenWithExclusiveAccess = 1L << 2,
+ kIDHOpenWithHeldBuffers = 1L << 3, /* IDH will hold buffer until ReleaseBuffer()*/
+ kIDHCloseForReadTransactions = 1L << 4,
+ kIDHCloseForWriteTransactions = 1L << 5
+};
+
+
+/*
+ Errors
+ These REALLY need to be moved into Errors.h
+ ooo.needs officially assigned numbers
+*/
+enum {
+ kIDHErrDeviceDisconnected = -14101,
+ kIDHErrInvalidDeviceID = -14102,
+ kIDHErrDeviceInUse = -14104,
+ kIDHErrDeviceNotOpened = -14105,
+ kIDHErrDeviceBusy = -14106,
+ kIDHErrDeviceReadError = -14107,
+ kIDHErrDeviceWriteError = -14108,
+ kIDHErrDeviceNotConfigured = -14109,
+ kIDHErrDeviceList = -14110,
+ kIDHErrCompletionPending = -14111,
+ kIDHErrDeviceTimeout = -14112,
+ kIDHErrInvalidIndex = -14113,
+ kIDHErrDeviceCantRead = -14114,
+ kIDHErrDeviceCantWrite = -14115,
+ kIDHErrCallNotSupported = -14116
+};
+
+
+
+
+/* Holds Device Identification...*/
+typedef UInt32 IDHDeviceID;
+enum {
+ kIDHInvalidDeviceID = 0,
+ kIDHDeviceIDEveryDevice = (long)0xFFFFFFFF
+};
+
+/* Values for 5 bit STYPE part of CIP header*/
+enum {
+ kIDHDV_SD = 0,
+ kIDHDV_SDL = 1,
+ kIDHDV_HD = 2,
+ kIDHDVCPro_25 = 0x1E,
+ kIDHDVCPro_50 = 0x1D,
+ kIDHDVCPro_100 = 0x1C
+};
+
+/* Isoch Interval Atom Data*/
+struct IDHIsochInterval {
+ SInt32 duration;
+ TimeScale scale;
+};
+typedef struct IDHIsochInterval IDHIsochInterval;
+/* Need to fix this. For now, cast this as a FWReferenceID*/
+typedef struct OpaquePsuedoID* PsuedoID;
+/*
+ Isoch Device Status
+ This is atom-like, but isn't an atom
+*/
+struct IDHDeviceStatus {
+ UInt32 version;
+ Boolean physicallyConnected;
+ Boolean readEnabled;
+ Boolean writeEnabled;
+ Boolean exclusiveAccess;
+ UInt32 currentBandwidth;
+ UInt32 currentChannel;
+ PsuedoID localNodeID; /*ooo.may go in atoms */
+ SInt16 inputStandard; /* One of the QT input standards*/
+ Boolean deviceActive;
+ UInt8 inputFormat; /* Expected STYPE of data from device, if version >= 0x200*/
+ UInt32 outputFormats; /* Bitmask for supported STYPE values, if version >= 0x200*/
+};
+typedef struct IDHDeviceStatus IDHDeviceStatus;
+/*
+ Isochronous Data Handler Events
+
+*/
+typedef UInt32 IDHEvent;
+enum {
+ kIDHEventInvalid = 0,
+ kIDHEventDeviceAdded = 1L << 0, /* A new device has been added to the bus*/
+ kIDHEventDeviceRemoved = 1L << 1, /* A device has been removed from the bus*/
+ kIDHEventDeviceChanged = 1L << 2, /* Some device has changed state on the bus*/
+ kIDHEventReadEnabled = 1L << 3, /* A client has enabled a device for read*/
+ kIDHEventReserved1 = 1L << 4, /* Reserved for future use*/
+ kIDHEventReadDisabled = 1L << 5, /* A client has disabled a device from read*/
+ kIDHEventWriteEnabled = 1L << 6, /* A client has enabled a device for write*/
+ kIDHEventReserved2 = 1L << 7, /* Reserved for future use*/
+ kIDHEventWriteDisabled = 1L << 8, /* A client has disabled a device for write*/
+ kIDHEventEveryEvent = (unsigned long)0xFFFFFFFF
+};
+
+
+typedef UInt32 IDHNotificationID;
+struct IDHEventHeader {
+ IDHDeviceID deviceID; /* Device which generated event*/
+ IDHNotificationID notificationID;
+ IDHEvent event; /* What the event is*/
+};
+typedef struct IDHEventHeader IDHEventHeader;
+
+
+
+/*
+ IDHGenericEvent
+ An IDH will often have to post events from at interrupt time. Since memory
+ allocation cannot occur from the interrupt handler, the IDH can preallocate
+ storage needed for handling the event by creating some IDHGenericEvent items.
+ Subsequently, when an event is generated, the type of event (specified in the
+ IDHEventHeader) will dictate how the IDHGenericEvent should be interpretted.
+
+ IMPORTANT NOTE : This means that a specific event structure can NEVER be greater
+ than the size of the generic one.
+
+*/
+struct IDHGenericEvent {
+ IDHEventHeader eventHeader;
+ UInt32 pad[4];
+};
+typedef struct IDHGenericEvent IDHGenericEvent;
+/*
+ IDHDeviceConnectionEvent
+ For kIDHEventDeviceAdded or kIDHEventDeviceRemoved events.
+*/
+struct IDHDeviceConnectionEvent {
+ IDHEventHeader eventHeader;
+};
+typedef struct IDHDeviceConnectionEvent IDHDeviceConnectionEvent;
+/*
+ IDHDeviceIOEnableEvent
+ For kIDHEventReadEnabled, kIDHEventReadDisabled, kIDHEventWriteEnabled, or
+ kIDHEventWriteDisabled.
+*/
+struct IDHDeviceIOEnableEvent {
+ IDHEventHeader eventHeader;
+};
+typedef struct IDHDeviceIOEnableEvent IDHDeviceIOEnableEvent;
+typedef CALLBACK_API_C( OSStatus , IDHNotificationProcPtr )(IDHGenericEvent *event, void *userData);
+
+typedef IDHNotificationProcPtr IDHNotificationProc;
+typedef TVECTOR_UPP_TYPE(IDHNotificationProcPtr) IDHNotificationUPP;
+struct IDHParameterBlock {
+ UInt32 reserved1;
+ UInt16 reserved2;
+ void * buffer;
+ ByteCount requestedCount;
+ ByteCount actualCount;
+ IDHNotificationUPP completionProc;
+ void * refCon;
+ OSErr result;
+};
+typedef struct IDHParameterBlock IDHParameterBlock;
+struct IDHResolution {
+ UInt32 x;
+ UInt32 y;
+};
+typedef struct IDHResolution IDHResolution;
+struct IDHDimension {
+ Fixed x;
+ Fixed y;
+};
+typedef struct IDHDimension IDHDimension;
+
+/*
+ * IDHGetDeviceList()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceList(
+ ComponentInstance idh,
+ QTAtomContainer * deviceList) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetDeviceConfiguration()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceConfiguration(
+ ComponentInstance idh,
+ QTAtomSpec * configurationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A);
+
+
+/*
+ * IDHSetDeviceConfiguration()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHSetDeviceConfiguration(
+ ComponentInstance idh,
+ const QTAtomSpec * configurationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetDeviceStatus()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceStatus(
+ ComponentInstance idh,
+ const QTAtomSpec * configurationID,
+ IDHDeviceStatus * status) FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetDeviceClock()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceClock(
+ ComponentInstance idh,
+ Component * clock) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
+
+
+/*
+ * IDHOpenDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHOpenDevice(
+ ComponentInstance idh,
+ UInt32 permissions) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A);
+
+
+/*
+ * IDHCloseDevice()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHCloseDevice(ComponentInstance idh) FIVEWORDINLINE(0x2F3C, 0x0000, 0x0007, 0x7000, 0xA82A);
+
+
+/*
+ * IDHRead()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHRead(
+ ComponentInstance idh,
+ IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A);
+
+
+/*
+ * IDHWrite()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHWrite(
+ ComponentInstance idh,
+ IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A);
+
+
+/*
+ * IDHNewNotification()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHNewNotification(
+ ComponentInstance idh,
+ IDHDeviceID deviceID,
+ IDHNotificationUPP notificationProc,
+ void * userData,
+ IDHNotificationID * notificationID) FIVEWORDINLINE(0x2F3C, 0x0010, 0x000A, 0x7000, 0xA82A);
+
+
+/*
+ * IDHNotifyMeWhen()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHNotifyMeWhen(
+ ComponentInstance idh,
+ IDHNotificationID notificationID,
+ IDHEvent events) FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A);
+
+
+/*
+ * IDHCancelNotification()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHCancelNotification(
+ ComponentInstance idh,
+ IDHNotificationID notificationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
+
+
+/*
+ * IDHDisposeNotification()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHDisposeNotification(
+ ComponentInstance idh,
+ IDHNotificationID notificationID) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
+
+
+/*
+ * IDHReleaseBuffer()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHReleaseBuffer(
+ ComponentInstance idh,
+ IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A);
+
+
+/*
+ * IDHCancelPendingIO()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHCancelPendingIO(
+ ComponentInstance idh,
+ IDHParameterBlock * pb) FIVEWORDINLINE(0x2F3C, 0x0004, 0x000F, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetDeviceControl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceControl(
+ ComponentInstance idh,
+ ComponentInstance * deviceControl) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A);
+
+
+/*
+ * IDHUpdateDeviceList()
+ *
+ * Availability:
+ * Non-Carbon CFM: in IDHLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.3 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHUpdateDeviceList(
+ ComponentInstance idh,
+ QTAtomContainer * deviceList) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0011, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetDeviceTime()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetDeviceTime(
+ ComponentInstance idh,
+ TimeRecord * deviceTime) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
+
+
+/*
+ * IDHSetFormat()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.5 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHSetFormat(
+ ComponentInstance idh,
+ UInt32 format) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A);
+
+
+/*
+ * IDHGetFormat()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.5 and later
+ * Mac OS X: not available
+ */
+EXTERN_API( ComponentResult )
+IDHGetFormat(
+ ComponentInstance idh,
+ UInt32 * format) FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A);
+
+
+
+/*
+ * NewIDHNotificationUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: not available
+ */
+EXTERN_API_C( IDHNotificationUPP )
+NewIDHNotificationUPP(IDHNotificationProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppIDHNotificationProcInfo = 0x000003F1 }; /* 4_bytes Func(4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(IDHNotificationUPP) NewIDHNotificationUPP(IDHNotificationProcPtr userRoutine) { return userRoutine; }
+ #else
+ #define NewIDHNotificationUPP(userRoutine) (userRoutine)
+ #endif
+#endif
+
+/*
+ * DisposeIDHNotificationUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: not available
+ */
+EXTERN_API_C( void )
+DisposeIDHNotificationUPP(IDHNotificationUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeIDHNotificationUPP(IDHNotificationUPP) {}
+ #else
+ #define DisposeIDHNotificationUPP(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeIDHNotificationUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.4 and later
+ * Mac OS X: not available
+ */
+EXTERN_API_C( OSStatus )
+InvokeIDHNotificationUPP(
+ IDHGenericEvent * event,
+ void * userData,
+ IDHNotificationUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSStatus) InvokeIDHNotificationUPP(IDHGenericEvent * event, void * userData, IDHNotificationUPP userUPP) { return (*userUPP)(event, userData); }
+ #else
+ #define InvokeIDHNotificationUPP(event, userData, userUPP) (*userUPP)(event, userData)
+ #endif
+#endif
+
+
+/* selectors for component calls */
+enum {
+ kIDHGetDeviceListSelect = 0x0001,
+ kIDHGetDeviceConfigurationSelect = 0x0002,
+ kIDHSetDeviceConfigurationSelect = 0x0003,
+ kIDHGetDeviceStatusSelect = 0x0004,
+ kIDHGetDeviceClockSelect = 0x0005,
+ kIDHOpenDeviceSelect = 0x0006,
+ kIDHCloseDeviceSelect = 0x0007,
+ kIDHReadSelect = 0x0008,
+ kIDHWriteSelect = 0x0009,
+ kIDHNewNotificationSelect = 0x000A,
+ kIDHNotifyMeWhenSelect = 0x000B,
+ kIDHCancelNotificationSelect = 0x000C,
+ kIDHDisposeNotificationSelect = 0x000D,
+ kIDHReleaseBufferSelect = 0x000E,
+ kIDHCancelPendingIOSelect = 0x000F,
+ kIDHGetDeviceControlSelect = 0x0010,
+ kIDHUpdateDeviceListSelect = 0x0011,
+ kIDHGetDeviceTimeSelect = 0x0012,
+ kIDHSetFormatSelect = 0x0013,
+ kIDHGetFormatSelect = 0x0014
+};
+
+
+#endif /* ifndef __ISOCHRONOUSDATAHANDLER_R__ */
+
+#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
+
+#endif /* __ISOCHRONOUSDATAHANDLER__ */
+