DriverServices.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:24k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       DriverServices.h
  3.  
  4.      Contains:   Driver Services Interfaces.
  5.  
  6.      Version:    Technology: PowerSurge 1.0.2
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1985-2001 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __DRIVERSERVICES__
  18. #define __DRIVERSERVICES__
  19. #ifndef __CONDITIONALMACROS__
  20. #include "ConditionalMacros.h"
  21. #endif
  22. #ifndef __MACTYPES__
  23. #include "MacTypes.h"
  24. #endif
  25. #ifndef __MACERRORS__
  26. #include "MacErrors.h"
  27. #endif
  28. #ifndef __MACHINEEXCEPTIONS__
  29. #include "MachineExceptions.h"
  30. #endif
  31. #ifndef __DEVICES__
  32. #include "Devices.h"
  33. #endif
  34. #ifndef __DRIVERSYNCHRONIZATION__
  35. #include "DriverSynchronization.h"
  36. #endif
  37. #ifndef __NAMEREGISTRY__
  38. #include "NameRegistry.h"
  39. #endif
  40. #if PRAGMA_ONCE
  41. #pragma once
  42. #endif
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46. #if PRAGMA_IMPORT
  47. #pragma import on
  48. #endif
  49. #if PRAGMA_STRUCT_ALIGN
  50.     #pragma options align=power
  51. #elif PRAGMA_STRUCT_PACKPUSH
  52.     #pragma pack(push, 2)
  53. #elif PRAGMA_STRUCT_PACK
  54.     #pragma pack(2)
  55. #endif
  56. /******************************************************************
  57.  *
  58.  *      Previously in Kernel.h
  59.  *
  60.  ******************************************************************/
  61. /* Kernel basics*/
  62. typedef struct OpaqueIOPreparationID*   IOPreparationID;
  63. typedef struct OpaqueSoftwareInterruptID*  SoftwareInterruptID;
  64. typedef struct OpaqueTaskID*            TaskID;
  65. typedef struct OpaqueTimerID*           TimerID;
  66. /* Tasking*/
  67. typedef UInt32                          ExecutionLevel;
  68. enum {
  69.     kTaskLevel                  = 0,
  70.     kSoftwareInterruptLevel     = 1,
  71.     kAcceptFunctionLevel        = 2,
  72.     kKernelLevel                = 3,
  73.     kSIHAcceptFunctionLevel     = 4,
  74.     kSecondaryInterruptLevel    = 5,
  75.     kHardwareInterruptLevel     = 6
  76. };
  77. typedef CALLBACK_API_C( void , SoftwareInterruptHandler )(void *p1, void *p2);
  78. typedef CALLBACK_API_C( OSStatus , SecondaryInterruptHandler2 )(void *p1, void *p2);
  79. #define kCurrentAddressSpaceID ((AddressSpaceID) -1)
  80. /* Memory System basics*/
  81. struct LogicalAddressRange {
  82.     LogicalAddress                  address;
  83.     ByteCount                       count;
  84. };
  85. typedef struct LogicalAddressRange      LogicalAddressRange;
  86. typedef LogicalAddressRange *           LogicalAddressRangePtr;
  87. struct PhysicalAddressRange {
  88.     PhysicalAddress                 address;
  89.     ByteCount                       count;
  90. };
  91. typedef struct PhysicalAddressRange     PhysicalAddressRange;
  92. typedef PhysicalAddressRange *          PhysicalAddressRangePtr;
  93. /* For PrepareMemoryForIO and CheckpointIO*/
  94. typedef OptionBits                      IOPreparationOptions;
  95. enum {
  96.     kIOMultipleRanges           = 0x00000001,
  97.     kIOLogicalRanges            = 0x00000002,
  98.     kIOMinimalLogicalMapping    = 0x00000004,
  99.     kIOShareMappingTables       = 0x00000008,
  100.     kIOIsInput                  = 0x00000010,
  101.     kIOIsOutput                 = 0x00000020,
  102.     kIOCoherentDataPath         = 0x00000040,
  103.     kIOTransferIsLogical        = 0x00000080,
  104.     kIOClientIsUserMode         = 0x00000080
  105. };
  106. typedef OptionBits                      IOPreparationState;
  107. enum {
  108.     kIOStateDone                = 0x00000001
  109. };
  110. enum {
  111.     kInvalidPageAddress         = (-1)
  112. };
  113. struct AddressRange {
  114.     void *                          base;
  115.     ByteCount                       length;
  116. };
  117. typedef struct AddressRange             AddressRange;
  118. /* C's treatment of arrays and array pointers is atypical*/
  119. typedef LogicalAddress *                LogicalMappingTablePtr;
  120. typedef PhysicalAddress *               PhysicalMappingTablePtr;
  121. typedef AddressRange *                  AddressRangeTablePtr;
  122. struct MultipleAddressRange {
  123.     ItemCount                       entryCount;
  124.     AddressRangeTablePtr            rangeTable;
  125. };
  126. typedef struct MultipleAddressRange     MultipleAddressRange;
  127. /*
  128.    Separate C definition so that union has a name.  A future version of the interfacer
  129.    tool will allow a name (that gets thrown out in Pascal and Asm).
  130. */
  131. struct IOPreparationTable {
  132.     IOPreparationOptions            options;
  133.     IOPreparationState              state;
  134.     IOPreparationID                 preparationID;
  135.     AddressSpaceID                  addressSpace;
  136.     ByteCount                       granularity;
  137.     ByteCount                       firstPrepared;
  138.     ByteCount                       lengthPrepared;
  139.     ItemCount                       mappingEntryCount;
  140.     LogicalMappingTablePtr          logicalMapping;
  141.     PhysicalMappingTablePtr         physicalMapping;
  142.     union {
  143.         AddressRange                    range;
  144.         MultipleAddressRange            multipleRanges;
  145.     }                                 rangeInfo;
  146. };
  147. typedef struct IOPreparationTable       IOPreparationTable;
  148. typedef OptionBits                      IOCheckpointOptions;
  149. enum {
  150.     kNextIOIsInput              = 0x00000001,
  151.     kNextIOIsOutput             = 0x00000002,
  152.     kMoreIOTransfers            = 0x00000004
  153. };
  154. /* For SetProcessorCacheMode*/
  155. typedef UInt32                          ProcessorCacheMode;
  156. enum {
  157.     kProcessorCacheModeDefault  = 0,
  158.     kProcessorCacheModeInhibited = 1,
  159.     kProcessorCacheModeWriteThrough = 2,
  160.     kProcessorCacheModeCopyBack = 3
  161. };
  162. /*
  163.    For GetPageInformation
  164.    (Note: if kPageInformationVersion fails, try 0 -- old versions of DSL defined  kPageInformationVersion as 0)
  165. */
  166. enum {
  167.     kPageInformationVersion     = 1
  168. };
  169. typedef UInt32                          PageStateInformation;
  170. enum {
  171.     kPageIsProtected            = 0x00000001,
  172.     kPageIsProtectedPrivileged  = 0x00000002,
  173.     kPageIsModified             = 0x00000004,
  174.     kPageIsReferenced           = 0x00000008,
  175.     kPageIsLockedResident       = 0x00000010,                   /* held and locked resident*/
  176.     kPageIsInMemory             = 0x00000020,
  177.     kPageIsShared               = 0x00000040,
  178.     kPageIsWriteThroughCached   = 0x00000080,
  179.     kPageIsCopyBackCached       = 0x00000100,
  180.     kPageIsHeldResident         = 0x00000200,                   /* held resident - use kPageIsLockedResident to check for locked state*/
  181.     kPageIsLocked               = kPageIsLockedResident,        /* Deprecated*/
  182.     kPageIsResident             = kPageIsInMemory               /* Deprecated*/
  183. };
  184. struct PageInformation {
  185.     AreaID                          area;
  186.     ItemCount                       count;
  187.     PageStateInformation            information[1];
  188. };
  189. typedef struct PageInformation          PageInformation;
  190. typedef PageInformation *               PageInformationPtr;
  191. /*  Tasks  */
  192. #if CALL_NOT_IN_CARBON
  193. EXTERN_API_C( ExecutionLevel )
  194. CurrentExecutionLevel           (void);
  195. EXTERN_API_C( TaskID )
  196. CurrentTaskID                   (void);
  197. EXTERN_API_C( OSStatus )
  198. DelayFor                        (Duration               delayDuration);
  199. EXTERN_API_C( Boolean )
  200. InPrivilegedMode                (void);
  201. /*  Software Interrupts  */
  202. EXTERN_API_C( OSStatus )
  203. CreateSoftwareInterrupt         (SoftwareInterruptHandler  handler,
  204.                                  TaskID                 task,
  205.                                  void *                 p1,
  206.                                  Boolean                persistent,
  207.                                  SoftwareInterruptID *  theSoftwareInterrupt);
  208. EXTERN_API_C( OSStatus )
  209. SendSoftwareInterrupt           (SoftwareInterruptID    theSoftwareInterrupt,
  210.                                  void *                 p2);
  211. EXTERN_API_C( OSStatus )
  212. DeleteSoftwareInterrupt         (SoftwareInterruptID    theSoftwareInterrupt);
  213. #endif  /* CALL_NOT_IN_CARBON */
  214. #if TARGET_OS_MAC
  215. /*  Secondary Interrupts  */
  216. #if CALL_NOT_IN_CARBON
  217. EXTERN_API_C( OSStatus )
  218. CallSecondaryInterruptHandler2  (SecondaryInterruptHandler2  theHandler,
  219.                                  ExceptionHandler       exceptionHandler,
  220.                                  void *                 p1,
  221.                                  void *                 p2);
  222. EXTERN_API_C( OSStatus )
  223. QueueSecondaryInterruptHandler  (SecondaryInterruptHandler2  theHandler,
  224.                                  ExceptionHandler       exceptionHandler,
  225.                                  void *                 p1,
  226.                                  void *                 p2);
  227. #endif  /* CALL_NOT_IN_CARBON */
  228. #endif  /* TARGET_OS_MAC */
  229. /*  Timers  */
  230. #if CALL_NOT_IN_CARBON
  231. EXTERN_API_C( OSStatus )
  232. SetInterruptTimer               (const AbsoluteTime *   expirationTime,
  233.                                  SecondaryInterruptHandler2  handler,
  234.                                  void *                 p1,
  235.                                  TimerID *              theTimer);
  236. EXTERN_API_C( OSStatus )
  237. SetPersistentTimer              (Duration               frequency,
  238.                                  SecondaryInterruptHandler2  theHandler,
  239.                                  void *                 p1,
  240.                                  TimerID *              theTimer);
  241. EXTERN_API_C( OSStatus )
  242. CancelTimer                     (TimerID                theTimer,
  243.                                  AbsoluteTime *         timeRemaining);
  244. /*  I/O related Operations  */
  245. EXTERN_API_C( OSStatus )
  246. PrepareMemoryForIO              (IOPreparationTable *   theIOPreparationTable);
  247. EXTERN_API_C( OSStatus )
  248. CheckpointIO                    (IOPreparationID        theIOPreparation,
  249.                                  IOCheckpointOptions    options);
  250. /*  Memory Operations  */
  251. EXTERN_API_C( OSStatus )
  252. GetPageInformation              (AddressSpaceID         addressSpace,
  253.                                  ConstLogicalAddress    base,
  254.                                  ByteCount              length,
  255.                                  PBVersion              version,
  256.                                  PageInformation *      thePageInfo);
  257. /*  Processor Cache Related  */
  258. EXTERN_API_C( OSStatus )
  259. SetProcessorCacheMode           (AddressSpaceID         addressSpace,
  260.                                  ConstLogicalAddress    base,
  261.                                  ByteCount              length,
  262.                                  ProcessorCacheMode     cacheMode);
  263. /******************************************************************
  264.  *
  265.  *      Was in DriverSupport.h or DriverServices.h
  266.  *
  267.  ******************************************************************/
  268. #define kAAPLDeviceLogicalAddress "AAPL,address"
  269. #endif  /* CALL_NOT_IN_CARBON */
  270. typedef LogicalAddress *                DeviceLogicalAddressPtr;
  271. enum {
  272.     durationMicrosecond         = -1L,                          /* Microseconds are negative*/
  273.     durationMillisecond         = 1L,                           /* Milliseconds are positive*/
  274.     durationSecond              = 1000L,                        /* 1000 * durationMillisecond*/
  275.     durationMinute              = 60000L,                       /* 60 * durationSecond,*/
  276.     durationHour                = 3600000L,                     /* 60 * durationMinute,*/
  277.     durationDay                 = 86400000L,                    /* 24 * durationHour,*/
  278.     durationNoWait              = 0L,                           /* don't block*/
  279.     durationForever             = 0x7FFFFFFF                    /* no time limit*/
  280. };
  281. enum {
  282.     k8BitAccess                 = 0,                            /* access as 8 bit*/
  283.     k16BitAccess                = 1,                            /* access as 16 bit*/
  284.     k32BitAccess                = 2                             /* access as 32 bit*/
  285. };
  286. typedef UnsignedWide                    Nanoseconds;
  287. #if CALL_NOT_IN_CARBON
  288. EXTERN_API_C( OSErr )
  289. IOCommandIsComplete             (IOCommandID            theID,
  290.                                  OSErr                  theResult);
  291. EXTERN_API_C( OSErr )
  292. GetIOCommandInfo                (IOCommandID            theID,
  293.                                  IOCommandContents *    theContents,
  294.                                  IOCommandCode *        theCommand,
  295.                                  IOCommandKind *        theKind);
  296. EXTERN_API_C( void )
  297. UpdateDeviceActivity            (RegEntryID *           deviceEntry);
  298. EXTERN_API_C( void )
  299. BlockCopy                       (const void *           srcPtr,
  300.                                  void *                 destPtr,
  301.                                  Size                   byteCount);
  302. EXTERN_API_C( LogicalAddress )
  303. PoolAllocateResident            (ByteCount              byteSize,
  304.                                  Boolean                clear);
  305. EXTERN_API_C( OSStatus )
  306. PoolDeallocate                  (LogicalAddress         address);
  307. EXTERN_API_C( ByteCount )
  308. GetLogicalPageSize              (void);
  309. EXTERN_API_C( ByteCount )
  310. GetDataCacheLineSize            (void);
  311. EXTERN_API_C( OSStatus )
  312. FlushProcessorCache             (AddressSpaceID         spaceID,
  313.                                  LogicalAddress         base,
  314.                                  ByteCount              length);
  315. EXTERN_API_C( LogicalAddress )
  316. MemAllocatePhysicallyContiguous (ByteCount              byteSize,
  317.                                  Boolean                clear);
  318. EXTERN_API_C( OSStatus )
  319. MemDeallocatePhysicallyContiguous (LogicalAddress       address);
  320. #endif  /* CALL_NOT_IN_CARBON */
  321. EXTERN_API_C( AbsoluteTime )
  322. UpTime                          (void);
  323. #if CALL_NOT_IN_CARBON
  324. EXTERN_API_C( void )
  325. GetTimeBaseInfo                 (UInt32 *               minAbsoluteTimeDelta,
  326.                                  UInt32 *               theAbsoluteTimeToNanosecondNumerator,
  327.                                  UInt32 *               theAbsoluteTimeToNanosecondDenominator,
  328.                                  UInt32 *               theProcessorToAbsoluteTimeNumerator,
  329.                                  UInt32 *               theProcessorToAbsoluteTimeDenominator);
  330. #endif  /* CALL_NOT_IN_CARBON */
  331. EXTERN_API_C( Nanoseconds )
  332. AbsoluteToNanoseconds           (AbsoluteTime           absoluteTime);
  333. EXTERN_API_C( Duration )
  334. AbsoluteToDuration              (AbsoluteTime           absoluteTime);
  335. EXTERN_API_C( AbsoluteTime )
  336. NanosecondsToAbsolute           (Nanoseconds            nanoseconds);
  337. EXTERN_API_C( AbsoluteTime )
  338. DurationToAbsolute              (Duration               duration);
  339. EXTERN_API_C( AbsoluteTime )
  340. AddAbsoluteToAbsolute           (AbsoluteTime           absoluteTime1,
  341.                                  AbsoluteTime           absoluteTime2);
  342. EXTERN_API_C( AbsoluteTime )
  343. SubAbsoluteFromAbsolute         (AbsoluteTime           leftAbsoluteTime,
  344.                                  AbsoluteTime           rightAbsoluteTime);
  345. EXTERN_API_C( AbsoluteTime )
  346. AddNanosecondsToAbsolute        (Nanoseconds            nanoseconds,
  347.                                  AbsoluteTime           absoluteTime);
  348. EXTERN_API_C( AbsoluteTime )
  349. AddDurationToAbsolute           (Duration               duration,
  350.                                  AbsoluteTime           absoluteTime);
  351. EXTERN_API_C( AbsoluteTime )
  352. SubNanosecondsFromAbsolute      (Nanoseconds            nanoseconds,
  353.                                  AbsoluteTime           absoluteTime);
  354. EXTERN_API_C( AbsoluteTime )
  355. SubDurationFromAbsolute         (Duration               duration,
  356.                                  AbsoluteTime           absoluteTime);
  357. EXTERN_API_C( Nanoseconds )
  358. AbsoluteDeltaToNanoseconds      (AbsoluteTime           leftAbsoluteTime,
  359.                                  AbsoluteTime           rightAbsoluteTime);
  360. EXTERN_API_C( Duration )
  361. AbsoluteDeltaToDuration         (AbsoluteTime           leftAbsoluteTime,
  362.                                  AbsoluteTime           rightAbsoluteTime);
  363. EXTERN_API_C( Nanoseconds )
  364. DurationToNanoseconds           (Duration               theDuration);
  365. EXTERN_API_C( Duration )
  366. NanosecondsToDuration           (Nanoseconds            theNanoseconds);
  367. #if CALL_NOT_IN_CARBON
  368. EXTERN_API_C( OSErr )
  369. PBQueueInit                     (QHdrPtr                qHeader);
  370. EXTERN_API_C( OSErr )
  371. PBQueueCreate                   (QHdrPtr *              qHeader);
  372. EXTERN_API_C( OSErr )
  373. PBQueueDelete                   (QHdrPtr                qHeader);
  374. EXTERN_API_C( void )
  375. PBEnqueue                       (QElemPtr               qElement,
  376.                                  QHdrPtr                qHeader);
  377. EXTERN_API_C( OSErr )
  378. PBEnqueueLast                   (QElemPtr               qElement,
  379.                                  QHdrPtr                qHeader);
  380. EXTERN_API_C( OSErr )
  381. PBDequeue                       (QElemPtr               qElement,
  382.                                  QHdrPtr                qHeader);
  383. EXTERN_API_C( OSErr )
  384. PBDequeueFirst                  (QHdrPtr                qHeader,
  385.                                  QElemPtr *             theFirstqElem);
  386. EXTERN_API_C( OSErr )
  387. PBDequeueLast                   (QHdrPtr                qHeader,
  388.                                  QElemPtr *             theLastqElem);
  389. EXTERN_API_C( char *)
  390. CStrCopy                        (char *                 dst,
  391.                                  const char *           src);
  392. EXTERN_API_C( StringPtr )
  393. PStrCopy                        (StringPtr              dst,
  394.                                  ConstStr255Param       src);
  395. EXTERN_API_C( char *)
  396. CStrNCopy                       (char *                 dst,
  397.                                  const char *           src,
  398.                                  UInt32                 max);
  399. EXTERN_API_C( StringPtr )
  400. PStrNCopy                       (StringPtr              dst,
  401.                                  ConstStr255Param       src,
  402.                                  UInt32                 max);
  403. EXTERN_API_C( char *)
  404. CStrCat                         (char *                 dst,
  405.                                  const char *           src);
  406. EXTERN_API_C( StringPtr )
  407. PStrCat                         (StringPtr              dst,
  408.                                  ConstStr255Param       src);
  409. EXTERN_API_C( char *)
  410. CStrNCat                        (char *                 dst,
  411.                                  const char *           src,
  412.                                  UInt32                 max);
  413. EXTERN_API_C( StringPtr )
  414. PStrNCat                        (StringPtr              dst,
  415.                                  ConstStr255Param       src,
  416.                                  UInt32                 max);
  417. EXTERN_API_C( void )
  418. PStrToCStr                      (char *                 dst,
  419.                                  ConstStr255Param       src);
  420. EXTERN_API_C( void )
  421. CStrToPStr                      (Str255                 dst,
  422.                                  const char *           src);
  423. EXTERN_API_C( SInt16 )
  424. CStrCmp                         (const char *           s1,
  425.                                  const char *           s2);
  426. EXTERN_API_C( SInt16 )
  427. PStrCmp                         (ConstStr255Param       str1,
  428.                                  ConstStr255Param       str2);
  429. EXTERN_API_C( SInt16 )
  430. CStrNCmp                        (const char *           s1,
  431.                                  const char *           s2,
  432.                                  UInt32                 max);
  433. EXTERN_API_C( SInt16 )
  434. PStrNCmp                        (ConstStr255Param       str1,
  435.                                  ConstStr255Param       str2,
  436.                                  UInt32                 max);
  437. EXTERN_API_C( UInt32 )
  438. CStrLen                         (const char *           src);
  439. EXTERN_API_C( UInt32 )
  440. PStrLen                         (ConstStr255Param       src);
  441. EXTERN_API_C( OSStatus )
  442. DeviceProbe                     (void *                 theSrc,
  443.                                  void *                 theDest,
  444.                                  UInt32                 AccessType);
  445. EXTERN_API_C( OSStatus )
  446. DelayForHardware                (AbsoluteTime           absoluteTime);
  447. /******************************************************************
  448.  *
  449.  *      Was in Interrupts.h 
  450.  *
  451.  ******************************************************************/
  452. /*  Interrupt types  */
  453. #endif  /* CALL_NOT_IN_CARBON */
  454. typedef struct OpaqueInterruptSetID*    InterruptSetID;
  455. typedef long                            InterruptMemberNumber;
  456. struct InterruptSetMember {
  457.     InterruptSetID                  setID;
  458.     InterruptMemberNumber           member;
  459. };
  460. typedef struct InterruptSetMember       InterruptSetMember;
  461. enum {
  462.     kISTChipInterruptSource     = 0,
  463.     kISTOutputDMAInterruptSource = 1,
  464.     kISTInputDMAInterruptSource = 2,
  465.     kISTPropertyMemberCount     = 3
  466. };
  467. typedef InterruptSetMember              ISTProperty[3];
  468. #define kISTPropertyName    "driver-ist" 
  469. typedef long                            InterruptReturnValue;
  470. enum {
  471.     kFirstMemberNumber          = 1,
  472.     kIsrIsComplete              = 0,
  473.     kIsrIsNotComplete           = -1,
  474.     kMemberNumberParent         = -2
  475. };
  476. typedef Boolean                         InterruptSourceState;
  477. enum {
  478.     kSourceWasEnabled           = true,
  479.     kSourceWasDisabled          = false
  480. };
  481. typedef CALLBACK_API_C( InterruptMemberNumber , InterruptHandler )(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
  482. typedef CALLBACK_API_C( void , InterruptEnabler )(InterruptSetMember ISTmember, void *refCon);
  483. typedef CALLBACK_API_C( InterruptSourceState , InterruptDisabler )(InterruptSetMember ISTmember, void *refCon);
  484. enum {
  485.     kReturnToParentWhenComplete = 0x00000001,
  486.     kReturnToParentWhenNotComplete = 0x00000002
  487. };
  488. typedef OptionBits                      InterruptSetOptions;
  489. /*  Interrupt Services  */
  490. #if CALL_NOT_IN_CARBON
  491. EXTERN_API_C( OSStatus )
  492. CreateInterruptSet              (InterruptSetID         parentSet,
  493.                                  InterruptMemberNumber  parentMember,
  494.                                  InterruptMemberNumber  setSize,
  495.                                  InterruptSetID *       setID,
  496.                                  InterruptSetOptions    options);
  497. EXTERN_API_C( OSStatus )
  498. InstallInterruptFunctions       (InterruptSetID         setID,
  499.                                  InterruptMemberNumber  member,
  500.                                  void *                 refCon,
  501.                                  InterruptHandler       handlerFunction,
  502.                                  InterruptEnabler       enableFunction,
  503.                                  InterruptDisabler      disableFunction);
  504. EXTERN_API_C( OSStatus )
  505. GetInterruptFunctions           (InterruptSetID         setID,
  506.                                  InterruptMemberNumber  member,
  507.                                  void **                refCon,
  508.                                  InterruptHandler *     handlerFunction,
  509.                                  InterruptEnabler *     enableFunction,
  510.                                  InterruptDisabler *    disableFunction);
  511. EXTERN_API_C( OSStatus )
  512. ChangeInterruptSetOptions       (InterruptSetID         setID,
  513.                                  InterruptSetOptions    options);
  514. EXTERN_API_C( OSStatus )
  515. GetInterruptSetOptions          (InterruptSetID         setID,
  516.                                  InterruptSetOptions *  options);
  517. #endif  /* CALL_NOT_IN_CARBON */
  518. #if PRAGMA_STRUCT_ALIGN
  519.     #pragma options align=reset
  520. #elif PRAGMA_STRUCT_PACKPUSH
  521.     #pragma pack(pop)
  522. #elif PRAGMA_STRUCT_PACK
  523.     #pragma pack()
  524. #endif
  525. #ifdef PRAGMA_IMPORT_OFF
  526. #pragma import off
  527. #elif PRAGMA_IMPORT
  528. #pragma import reset
  529. #endif
  530. #ifdef __cplusplus
  531. }
  532. #endif
  533. #endif /* __DRIVERSERVICES__ */