DriverFamilyMatching.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:8k
- /*
- 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__ */