topical media & game development
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.