topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-DriverFamilyMatching.h / h



  /*
       File:       DriverFamilyMatching.h
   
       Contains:   Interfaces for create native drivers NDRV
   
       Version:    Technology: 
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1995-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 __DRIVERFAMILYMATCHING__
  define __DRIVERFAMILYMATCHING__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __NAMEREGISTRY__
  include <NameRegistry.h>
  endif
  
  ifndef __CODEFRAGMENTS__
  include <CodeFragments.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
  
  /*
  

######################################

Well known properties in the Name Registry

######################################

*/
define kPropertyName "name" define kPropertyCompatible "compatible" define kPropertyDriverPtr "driver-ptr" define kPropertyDriverDesc "driver-description" define kPropertyReg "reg" define kPropertyAAPLAddress "AAPL,address" define kPropertyMatching "matching" define kPropertyAAPLDriverName "AAPL,driver-name" /* CPassThru */ /*

#################################################

Descriptor for Drivers and NDRVs

#################################################

*/
/* QuickTime 3.0: "DriverType" has a name collision with cross-platform code. Use Mac prefix to avoid collision */ /* Driver Typing Information Used to Match Drivers With Devices */ struct MacDriverType { Str31 nameInfoStr; /* Driver Name/Info String*/ NumVersion version; /* Driver Version Number*/ }; typedef struct MacDriverType MacDriverType; if TARGET_OS_MAC typedef MacDriverType DriverType; endif /* TARGET_OS_MAC */ typedef MacDriverType * DriverTypePtr; /* OS Runtime Information Used to Setup and Maintain a Driver's Runtime Environment */ typedef OptionBits RuntimeOptions; enum { kDriverIsLoadedUponDiscovery = 0x00000001, /* auto-load driver when discovered*/ kDriverIsOpenedUponLoad = 0x00000002, /* auto-open driver when loaded*/ kDriverIsUnderExpertControl = 0x00000004, /* I/O expert handles loads/opens*/ kDriverIsConcurrent = 0x00000008, /* supports concurrent requests*/ kDriverQueuesIOPB = 0x00000010, /* device manager doesn't queue IOPB*/ kDriverIsLoadedAtBoot = 0x00000020, /* Driver is loaded at the boot time */ kDriverIsForVirtualDevice = 0x00000040, /* Driver is for a virtual Device */ kDriverSupportDMSuspendAndResume = 0x00000080 /* Driver supports Device Manager Suspend and Resume command */ }; struct DriverOSRuntime { RuntimeOptions driverRuntime; /* Options for OS Runtime*/ Str31 driverName; /* Driver's name to the OS*/ UInt32 driverDescReserved[8]; /* Reserved area*/ }; typedef struct DriverOSRuntime DriverOSRuntime; typedef DriverOSRuntime * DriverOSRuntimePtr; /* OS Service Information Used To Declare What APIs a Driver Supports */ typedef UInt32 ServiceCount; struct DriverServiceInfo { OSType serviceCategory; /* Service Category Name*/ OSType serviceType; /* Type within Category*/ NumVersion serviceVersion; /* Version of service*/ }; typedef struct DriverServiceInfo DriverServiceInfo; typedef DriverServiceInfo * DriverServiceInfoPtr; struct DriverOSService { ServiceCount nServices; /* Number of Services Supported*/ DriverServiceInfo service[1]; /* The List of Services (at least one)*/ }; typedef struct DriverOSService DriverOSService; typedef DriverOSService * DriverOSServicePtr; /* Categories */ enum { kServiceCategoryDisplay = FOUR_CHAR_CODE('disp'), /* Display Manager*/ kServiceCategoryOpenTransport = FOUR_CHAR_CODE('otan'), /* Open Transport*/ kServiceCategoryBlockStorage = FOUR_CHAR_CODE('blok'), /* Block Storage*/ kServiceCategoryNdrvDriver = FOUR_CHAR_CODE('ndrv'), /* Generic Native Driver*/ kServiceCategoryScsiSIM = FOUR_CHAR_CODE('scsi'), /* SCSI */ kServiceCategoryFileManager = FOUR_CHAR_CODE('file'), /* File Manager */ kServiceCategoryIDE = FOUR_CHAR_CODE('ide-'), /* ide */ kServiceCategoryADB = FOUR_CHAR_CODE('adb-'), /* adb */ kServiceCategoryPCI = FOUR_CHAR_CODE('pci-'), /* pci bus */ /* Nu Bus */ kServiceCategoryDFM = FOUR_CHAR_CODE('dfm-'), /* DFM */ kServiceCategoryMotherBoard = FOUR_CHAR_CODE('mrbd'), /* mother Board */ kServiceCategoryKeyboard = FOUR_CHAR_CODE('kybd'), /* Keyboard */ kServiceCategoryPointing = FOUR_CHAR_CODE('poit'), /* Pointing */ kServiceCategoryRTC = FOUR_CHAR_CODE('rtc-'), /* RTC */ kServiceCategoryNVRAM = FOUR_CHAR_CODE('nram'), /* NVRAM */ kServiceCategorySound = FOUR_CHAR_CODE('sond'), /* Sound (1/3/96 MCS) */ kServiceCategoryPowerMgt = FOUR_CHAR_CODE('pgmt'), /* Power Management */ kServiceCategoryGeneric = FOUR_CHAR_CODE('genr') /* Generic Service Category to receive general Events */ }; /* Ndrv ServiceCategory Types */ enum { kNdrvTypeIsGeneric = FOUR_CHAR_CODE('genr'), /* generic*/ kNdrvTypeIsVideo = FOUR_CHAR_CODE('vido'), /* video*/ kNdrvTypeIsBlockStorage = FOUR_CHAR_CODE('blok'), /* block storage*/ kNdrvTypeIsNetworking = FOUR_CHAR_CODE('netw'), /* networking*/ kNdrvTypeIsSerial = FOUR_CHAR_CODE('serl'), /* serial*/ kNdrvTypeIsParallel = FOUR_CHAR_CODE('parl'), /* parallel */ kNdrvTypeIsSound = FOUR_CHAR_CODE('sond'), /* sound*/ kNdrvTypeIsBusBridge = FOUR_CHAR_CODE('brdg'), kNdrvTypeIsFWConference = FOUR_CHAR_CODE('crsh'), /* FireWire conference camera */ kNdrvTypeIsAVC = FOUR_CHAR_CODE('avc ') /* FireWire AVC devices (DV cameras) */ }; typedef UInt32 DriverDescVersion; /* The Driver Description */ enum { kTheDescriptionSignature = FOUR_CHAR_CODE('mtej'), kDriverDescriptionSignature = FOUR_CHAR_CODE('pdes') }; enum { kInitialDriverDescriptor = 0, kVersionOneDriverDescriptor = 1 }; struct DriverDescription { OSType driverDescSignature; /* Signature field of this structure*/ DriverDescVersion driverDescVersion; /* Version of this data structure*/ MacDriverType driverType; /* Type of Driver*/ DriverOSRuntime driverOSRuntimeInfo; /* OS Runtime Requirements of Driver*/ DriverOSService driverServices; /* Apple Service API Membership*/ }; typedef struct DriverDescription DriverDescription; typedef DriverDescription * DriverDescriptionPtr; 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 /* __DRIVERFAMILYMATCHING__ */


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.