PCCardEnablerPlugin.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:25k
- /*
- File: PCCardEnablerPlugin.h
-
- Contains: Interfacer for PCCard Manager 3.0
-
- Version: Technology: Mac OS 8.5
- Release: QuickTime 6.0.2
-
- Copyright: (c) 1997-2001 by Apple Computer, Inc. and SystemSoft Corporation. All rights reserved.
-
- Bugs?: For bug reports, consult the following page on
- the World Wide Web:
-
- http://developer.apple.com/bugreporter/
-
- */
- #ifndef __PCCARDENABLERPLUGIN__
- #define __PCCARDENABLERPLUGIN__
- #ifndef __MACTYPES__
- #include "MacTypes.h"
- #endif
- #ifndef __NAMEREGISTRY__
- #include "NameRegistry.h"
- #endif
- #ifndef __INTERRUPTS__
- #include "Interrupts.h"
- #endif
- #ifndef __PCCARD__
- #include "PCCard.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=power
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(push, 2)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack(2)
- #endif
- #ifndef __CARDSERVICES__
- /*
- NOTE: These prototypes conflict with CardServices.*
- You cannot use both PCCardEnablerPlugin.h and CardServices.h
-
- */
- /* Copyright: (c) 1996 SystemSoft Corporation, all rights reserved. */
- /*------------------------------------------------------------------------------------
- Card Services calls exported by the Family
- ------------------------------------------------------------------------------------*/
- /* Card Services for Card Enablers*/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( OSStatus )
- CSGetCardServicesInfo (UInt32 * socketCount,
- UInt32 * complianceLevel,
- UInt32 * version);
- /* Function prototypes for tuples calls */
- EXTERN_API_C( OSStatus )
- CSGetFirstTuple (PCCardSocket socket,
- UInt32 device,
- PCCardTupleIterator tupleIterator,
- Byte desiredTuple,
- void * tupleData,
- ByteCount * tupleBufferSize,
- Byte * foundTuple);
- EXTERN_API_C( OSStatus )
- CSGetNextTuple (PCCardTupleIterator tupleIterator,
- Byte desiredTuple,
- void * tupleData,
- ByteCount * tupleBufferSize,
- Byte * foundTuple);
- /* Function prototypes for window calls*/
- EXTERN_API_C( OSStatus )
- CSRequestWindow (PCCardSocket vSocket,
- UInt32 device,
- PCCardWindowAttributes windowAttributes,
- PCCardAccessSpeed windowSpeed,
- LogicalAddress * windowBase,
- PCCardWindowSize * windowSize,
- PCCardWindowOffset * windowOffset,
- PCCardWindowID * requestedWindow);
- EXTERN_API_C( OSStatus )
- CSReleaseWindow (PCCardWindowID windowToRelease);
- EXTERN_API_C( OSStatus )
- CSModifyWindow (PCCardWindowID windowToModify,
- PCCardWindowType windowAttributes,
- PCCardAccessSpeed memorySpeed,
- PCCardWindowOffset * windowOffset);
- EXTERN_API_C( OSStatus )
- CSGetWindowBaseAddress (PCCardWindowID window,
- LogicalAddress * baseAddress);
- EXTERN_API_C( OSStatus )
- CSInquireWindow (PCCardSocket vSocket,
- UInt32 device,
- PCCardWindowID windowID,
- PCCardWindowAttributes * windowAttributes,
- PCCardAccessSpeed * windowParam,
- UInt32 * windowBase,
- PCCardWindowSize * windowSize,
- PCCardWindowOffset * windowOffset);
- /* Function prototypes for CIS calls*/
- EXTERN_API_C( OSStatus )
- CSValidateCIS (PCCardSocket vSocket,
- UInt32 device,
- UInt32 * cisChainCount);
- EXTERN_API_C( OSStatus )
- CSGetDeviceCount (PCCardSocket vSocket,
- UInt32 * deviceCount);
- /* Function prototypes for Status calls*/
- EXTERN_API_C( OSStatus )
- CSGetStatus (PCCardSocket vSocket,
- UInt32 * currentState,
- UInt32 * changedState,
- PCCardVoltage * Vcc,
- PCCardVoltage * Vpp);
- /* Function prototypes for configuration calls*/
- EXTERN_API_C( OSStatus )
- CSRequestConfiguration (PCCardSocket vSocket,
- UInt32 device,
- PCCardConfigOptions configOptions,
- PCCardInterfaceType socketInterface,
- PCCardCustomInterfaceID customInterface,
- PCCardVoltage vcc,
- PCCardVoltage vpp,
- PCCardIRQ IRQ,
- PCCardDMA DMA,
- UInt32 configRegBaseAddress,
- PCCardConfigPresentMask configRegPresentMask,
- PCCardFunctionConfigReg * configReg);
- EXTERN_API_C( OSStatus )
- CSModifyConfiguration (PCCardSocket vSocket,
- UInt32 device,
- PCCardConfigOptions modifyAttributes,
- PCCardIRQ IRQ,
- PCCardDMA DMA,
- PCCardVoltage Vpp);
- EXTERN_API_C( OSStatus )
- CSReleaseConfiguration (PCCardSocket vSocket,
- UInt32 device);
- EXTERN_API_C( OSStatus )
- CSSetRingIndicate (PCCardSocket vSocket,
- Boolean setRingIndicate);
- EXTERN_API_C( OSStatus )
- CSResetFunction (PCCardSocket vSocket,
- UInt32 device);
- EXTERN_API_C( OSStatus )
- CSReadConfigurationRegister (PCCardSocket vSocket,
- UInt32 device,
- PCCardConfigPresentMask whichRegister,
- UInt32 configRegBaseAddress,
- UInt8 * registerValue);
- EXTERN_API_C( OSStatus )
- CSWriteConfigurationRegister (PCCardSocket vSocket,
- UInt32 device,
- PCCardConfigPresentMask whichRegister,
- UInt32 configRegBaseAddress,
- UInt8 registerValue);
- /* Function prototypes for Client Support calls*/
- EXTERN_API_C( OSStatus )
- CSRegisterClient (PCCardSocket vSocket,
- PCCardEventMask eventMask,
- PCCardEventHandler clientCallBack,
- void * clientParam,
- PCCardClientID * newClientID);
- EXTERN_API_C( OSStatus )
- CSDeRegisterClient (PCCardClientID theClientID);
- EXTERN_API_C( OSStatus )
- CSSetEventMask (PCCardClientID theClientID,
- PCCardEventMask newEventMask);
- EXTERN_API_C( OSStatus )
- CSGetEventMask (PCCardClientID theClientID,
- PCCardEventMask * newEventMask);
- EXTERN_API_C( OSStatus )
- CSRegisterTimer (PCCardClientID registeredClientID,
- PCCardTimerID * lpNewTimerID,
- long delay);
- EXTERN_API_C( OSStatus )
- CSDeRegisterTimer (PCCardTimerID timerID);
- /* Function prototypes for CardBus Config Space access*/
- EXTERN_API_C( OSStatus )
- CSReadCardBusConfigSpace (PCCardSocket vSocket,
- UInt32 device,
- UInt32 configOffset,
- Byte * data,
- UInt32 dataSize);
- EXTERN_API_C( OSStatus )
- CSWriteCardBusConfigSpace (PCCardSocket vSocket,
- UInt32 device,
- UInt32 configOffset,
- Byte * data,
- UInt32 dataSize);
- /*------------------------------------------------------------------------------------
- Card Enabler Types
- ------------------------------------------------------------------------------------*/
- #endif /* CALL_NOT_IN_CARBON */
- enum {
- kUnknownDeviceType = FOUR_CHAR_CODE('unkn'), /* class-code = 0x00 */
- kSCSIDeviceType = FOUR_CHAR_CODE('scsi'), /* class-code = 0x01, sub-class = 0x00 */
- kBlockDeviceType = FOUR_CHAR_CODE('blok'), /* class-code = 0x01, sub-class = 0xXX */
- kNetworkDeviceType = FOUR_CHAR_CODE('netw'), /* class-code = 0x02 */
- kDisplayDeviceType = FOUR_CHAR_CODE('dspl'), /* class-code = 0x03 */
- kMultimediaDeviceType = FOUR_CHAR_CODE('mmdv'), /* class-code = 0x04 */
- kMemoryDeviceType = FOUR_CHAR_CODE('mem '), /* class-code = 0x05 */
- kBridgeDeviceType = FOUR_CHAR_CODE('brdg'), /* class-code = 0x06 */
- kCommDeviceType = FOUR_CHAR_CODE('comm'), /* class-code = 0x07 */
- kPeripheralDeviceType = FOUR_CHAR_CODE('sysp'), /* class-code = 0x08 */
- kInputDeviceType = FOUR_CHAR_CODE('inpt'), /* class-code = 0x09 */
- kDockingDeviceType = FOUR_CHAR_CODE('dock'), /* class-code = 0x0A */
- kProcessorDeviceType = FOUR_CHAR_CODE('proc'), /* class-code = 0x0B */
- kFirewireBusDeviceType = FOUR_CHAR_CODE('firw'), /* class-code = 0x0C, sub-class = 0x00 */
- kACCESSBusDeviceType = FOUR_CHAR_CODE('accs'), /* class-code = 0x0C, sub-class = 0x01 */
- kSSABusDeviceType = FOUR_CHAR_CODE('ssa '), /* class-code = 0x0C, sub-class = 0x02 */
- kUSBBusDeviceType = FOUR_CHAR_CODE('usb '), /* class-code = 0x0C, sub-class = 0x03 */
- kFibreBusDeviceType = FOUR_CHAR_CODE('fibr'), /* class-code = 0x0C, sub-class = 0x04 */
- kByteDeviceType = FOUR_CHAR_CODE('byte'), /* class-code = 0x?? */
- kSerialDeviceType = FOUR_CHAR_CODE('ser '), /* class-code = 0x?? */
- kParallelDeviceType = FOUR_CHAR_CODE('parl'), /* class-code = 0x?? */
- kAIMSDeviceType = FOUR_CHAR_CODE('aims') /* class-code = 0x?? */
- };
- typedef OSType PCDeviceType;
- enum {
- kAttributeType = 0,
- kMemoryType = 1,
- kIOType = 2
- };
- typedef UInt32 PCCardMemoryType;
- enum {
- kUnknown = FOUR_CHAR_CODE('unkn'),
- kPCCard16 = FOUR_CHAR_CODE('pc16'),
- kCardBus = FOUR_CHAR_CODE('cdbs')
- };
- typedef OSType PCCardArchitectureType;
- #define kNodeNameName "name"
- #define k16BitPCCardName "16bitcard"
- #define kCardbusPropertyName "cardbus"
- #define kNodeCompatiblePropertyName "compatible"
- #define kDevice_TypeName "device_type"
- #define kDriverISTPropertyName "driver-ist"
- #define kFCRAccessPropertyName "FCRAccess"
- #define kConfigRegPropertyName "ConfigRegValues"
- #define kNodeTypePropertyName "PCCardNodeType"
- #define kDeviceNumberPropertName "DeviceNumber"
- #define kSocketNumberPropertName "SocketNumber"
- /*------------------------------------------------------------------------------------
- Plugin Dispatch Table
- ------------------------------------------------------------------------------------*/
- enum {
- kServiceTypePCCardEnabler = FOUR_CHAR_CODE('card'),
- kPCCardEnablerPluginVersion = 0x00000001,
- kPCCardEnablerPluginCurrentVersion = kPCCardEnablerPluginVersion
- };
- /* Card Enabler Entrypoints*/
- typedef CALLBACK_API_C( OSStatus , CEValidateHardwareProc )(const RegEntryID *cardRef);
- typedef CALLBACK_API_C( OSStatus , CEInitializeProc )(const RegEntryID *cardRef, Boolean replacingOld);
- typedef CALLBACK_API_C( OSStatus , CECleanupProc )(const RegEntryID *cardRef, Boolean beingReplaced);
- typedef CALLBACK_API_C( OSStatus , CEPowerManagementProc )(const RegEntryID *lpCardEntry, PCCardPowerOptions powerLevel);
- typedef CALLBACK_API_C( OSStatus , CEHandleEventProc )(const RegEntryID *cardRef, PCCardEvent theEvent);
- typedef CALLBACK_API_C( OSStatus , CEGetCardInfoProc )(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
- typedef CALLBACK_API_C( OSStatus , CEAddCardPropertiesProc )(const RegEntryID *cardRef);
- typedef CALLBACK_API_C( OSStatus , CEGetDeviceCountProc )(const RegEntryID *cardRef, ItemCount *numberOfDevices);
- typedef CALLBACK_API_C( OSStatus , CEGetDeviceNameProc )(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
- typedef CALLBACK_API_C( OSStatus , CEGetDeviceCompatibleProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
- typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
- typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeNameProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
- typedef CALLBACK_API_C( OSStatus , CEAddDevicePropertiesProc )(const RegEntryID *deviceRef, UInt32 device);
- typedef CALLBACK_API_C( OSStatus , CEConfigureDeviceProc )(const RegEntryID *deviceRef, UInt32 deviceNumber);
- typedef CALLBACK_API_C( OSStatus , CEFinalizeDeviceProc )(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
- typedef CALLBACK_API_C( OSStatus , CEValidateCISProc )(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
- typedef CALLBACK_API_C( OSStatus , CEGetFirstTupleProc )(UInt32 socket, UInt32 device, PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
- typedef CALLBACK_API_C( OSStatus , CEGetNextTupleProc )(PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
- struct PCCardEnablerPluginHeader {
- UInt32 pluginDispatchTableVersion;
- UInt32 reserved1;
- UInt32 reserved2;
- UInt32 reserved3;
- };
- typedef struct PCCardEnablerPluginHeader PCCardEnablerPluginHeader;
- struct PCCardEnablerPluginDispatchTable {
- PCCardEnablerPluginHeader header;
- /* General functions*/
- CEValidateHardwareProc validateHardwareProc;
- CEInitializeProc initializeProc;
- CECleanupProc cleanUpProc;
- CEPowerManagementProc setPCCardPowerLevel;
- /* Card functions*/
- CEHandleEventProc handleEventProc;
- CEGetCardInfoProc getCardInfoProc;
- CEAddCardPropertiesProc addCardProperties;
- CEGetDeviceCountProc getDeviceCount;
- /* Device functions*/
- CEGetDeviceNameProc getDeviceName;
- CEGetDeviceCompatibleProc getDeviceCompatibleNames;
- CEGetDeviceTypeProc getDeviceType;
- CEGetDeviceTypeNameProc getDeviceTypeName;
- CEAddDevicePropertiesProc addDeviceProperties;
- CEConfigureDeviceProc configureDevice;
- CEFinalizeDeviceProc finalizeDevice;
- /* Card Services Overrides...*/
- CEValidateCISProc validateCIS;
- CEGetFirstTupleProc getFirstTuple;
- CEGetNextTupleProc getNextTuple;
- /* InterruptHandlers...*/
- InterruptHandler cardInterruptHandlerFunction;
- InterruptEnabler cardInterruptEnableFunction;
- InterruptDisabler cardInterruptDisableFunction;
- };
- typedef struct PCCardEnablerPluginDispatchTable PCCardEnablerPluginDispatchTable;
- typedef PCCardEnablerPluginDispatchTable * PCCardEnablerPluginDispatchTablePtr;
- /*------------------------------------------------------------------------------------
- PC Card Enabler Utility calls exported by the Family
- ------------------------------------------------------------------------------------*/
- /* Generic Enabler Entrypoints*/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( OSStatus )
- CEInitializeCard (const RegEntryID * cardRef,
- Boolean replacingOld);
- EXTERN_API_C( OSStatus )
- CEFinalizeCard (const RegEntryID * cardRef,
- Boolean beingReplaced);
- EXTERN_API_C( OSStatus )
- CEPowerManagement (const RegEntryID * lpParentID,
- PCCardPowerOptions powerLevel);
- EXTERN_API_C( OSStatus )
- CEHandleCardEvent (const RegEntryID * cardRef,
- PCCardEvent lTheCardEvent);
- EXTERN_API_C( OSStatus )
- CEGetCardInfo (const RegEntryID * cardRef,
- PCCardDevType * cardType,
- PCCardSubType * cardSubType,
- StringPtr cardName,
- StringPtr vendorName);
- EXTERN_API_C( OSStatus )
- CEAddCardProperties (const RegEntryID * cardRef);
- EXTERN_API_C( OSStatus )
- CEGetDeviceCount (const RegEntryID * cardRef,
- ItemCount * numberOfDevices);
- /* device functions*/
- EXTERN_API_C( OSStatus )
- CEGetDeviceName (UInt32 socketNumber,
- UInt32 deviceNumber,
- char * deviceName);
- EXTERN_API_C( OSStatus )
- CEGetDeviceCompatibleNames (const RegEntryID * deviceRef,
- UInt32 socketNumber,
- UInt32 deviceNumber,
- char * name);
- EXTERN_API_C( OSStatus )
- CEGetDeviceType (const RegEntryID * deviceRef,
- UInt32 socketNumber,
- UInt32 deviceNumber,
- PCDeviceType * lpDeviceType);
- EXTERN_API_C( OSStatus )
- CEGetDeviceTypeName (const RegEntryID * deviceRef,
- UInt32 socketNumber,
- UInt32 deviceNumber,
- char * name);
- EXTERN_API_C( OSStatus )
- CEAddDeviceProperties (const RegEntryID * deviceRef,
- UInt32 deviceNumber);
- EXTERN_API_C( OSStatus )
- CEConfigureDevice (const RegEntryID * deviceRef,
- UInt32 deviceNumber);
- EXTERN_API_C( OSStatus )
- CEFinalizeDevice (UInt32 socket,
- UInt32 device,
- const RegEntryID * deviceRef);
- /* RegEntryID <-> socket number mapping functions*/
- EXTERN_API_C( OSStatus )
- CEGetSocketAndDeviceFromRegEntry (const RegEntryID * lpNode,
- UInt32 * lpSocket,
- UInt32 * lpDevice);
- EXTERN_API_C( OSStatus )
- CEGetPhysicalSocketNumber (const RegEntryID * socketRef,
- const RegEntryID * lpDeviceEntry,
- UInt32 * lpPhysicalSocketNumber);
- /* Hardware Validation Utilities*/
- EXTERN_API_C( OSStatus )
- CECompareCISTPL_VERS_1 (const RegEntryID * cardRef,
- Byte majorVersion,
- Byte minorVersion,
- const char * manufacturer,
- const char * productName,
- const char * info1,
- const char * info2,
- Boolean * identical);
- EXTERN_API_C( OSStatus )
- CECompareCISTPL_MANFID (const RegEntryID * cardRef,
- UInt16 manufacturerCode,
- UInt16 manufacturerInfo,
- Boolean * identical);
- EXTERN_API_C( OSStatus )
- CECompareMemory (const RegEntryID * cardRef,
- PCCardMemoryType memType,
- ByteCount offset,
- ByteCount length,
- Byte * dataToCompare,
- Boolean * identical);
- EXTERN_API_C( OSStatus )
- CEValidateCIS (UInt32 socket,
- UInt32 device,
- UInt32 * lpCISChainCount);
- EXTERN_API_C( InterruptMemberNumber )
- CEDefaultInterruptHandler (InterruptSetMember ISTmember,
- void * refCon,
- UInt32 theIntCount);
- /*------------------------------------------------------------------------------------
- PC Card Customization Resources
- ------------------------------------------------------------------------------------*/
- #endif /* CALL_NOT_IN_CARBON */
- enum {
- kPCCardCustomInfoResType = FOUR_CHAR_CODE('pccd'),
- kPCCardCustomInfoVersion = 0
- };
- struct PCCardCustomResource {
- long version;
- short customIconID; /* ICN#, etc. resource ID*/
- short customStringsID; /* STR# resource ID*/
- short customTypeStringIndex;
- short customHelpStringIndex;
- OSType customAction;
- long customActionParam1;
- long customActionParam2;
- };
- typedef struct PCCardCustomResource PCCardCustomResource;
- #endif /* !defined(__CARDSERVICES__) */
- #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 /* __PCCARDENABLERPLUGIN__ */