Code Search for Developers
 
 
  

CardServices.h from guliverkli at Krugle


Show CardServices.h syntax highlighted

/*
     File:       CardServices.h
 
     Contains:   The client interface to Card and Socket Services.
 
     Version:    Technology: System 7.5
                 Release:    QuickTime 6.0.2
 
     Copyright:  (c) 1994-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 __CARDSERVICES__
#define __CARDSERVICES__

#ifndef __MACTYPES__
#include "MacTypes.h"
#endif

#ifndef __PCCARDTUPLES__
#include "PCCardTuples.h"
#endif

#ifndef __MIXEDMODE__
#include "MixedMode.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

/*  miscellaneous*/

enum {
    CS_MAX_SOCKETS              = 32                            /* a long is used as a socket bitmap*/
};


/* Will move to <Traps.h>*/
enum {
    _PCCardDispatch             = 0xAAF0                        /* Card Services entry trap*/
};

/* Will move to <Errors.h>*/

/*  result codes*/

enum {
    kCSBadAdapterErr            = -9050,                        /* invalid adapter number*/
    kCSBadAttributeErr          = -9051,                        /* specified attributes field value is invalid*/
    kCSBadBaseErr               = -9052,                        /* specified base system memory address is invalid*/
    kCSBadEDCErr                = -9053,                        /* specified EDC generator specified is invalid*/
    kCSBadIRQErr                = -9054,                        /* specified IRQ level is invalid*/
    kCSBadOffsetErr             = -9055,                        /* specified PC card memory array offset is invalid*/
    kCSBadPageErr               = -9056,                        /* specified page is invalid*/
    kCSBadSizeErr               = -9057,                        /* specified size is invalid*/
    kCSBadSocketErr             = -9058,                        /* specified logical or physical socket number is invalid*/
    kCSBadTypeErr               = -9059,                        /* specified window or interface type is invalid*/
    kCSBadVccErr                = -9060,                        /* specified Vcc power level index is invalid*/
    kCSBadVppErr                = -9061,                        /* specified Vpp1 or Vpp2 power level index is invalid*/
    kCSBadWindowErr             = -9062,                        /* specified window is invalid*/
    kCSBadArgLengthErr          = -9063,                        /* ArgLength argument is invalid*/
    kCSBadArgsErr               = -9064,                        /* values in argument packet are invalid*/
    kCSBadHandleErr             = -9065,                        /* clientHandle is invalid*/
    kCSBadCISErr                = -9066,                        /* CIS on card is invalid*/
    kCSBadSpeedErr              = -9067,                        /* specified speed is unavailable*/
    kCSReadFailureErr           = -9068,                        /* unable to complete read request*/
    kCSWriteFailureErr          = -9069,                        /* unable to complete write request*/
    kCSGeneralFailureErr        = -9070,                        /* an undefined error has occurred*/
    kCSNoCardErr                = -9071,                        /* no PC card in the socket*/
    kCSUnsupportedFunctionErr   = -9072,                        /* function is not supported by this implementation*/
    kCSUnsupportedModeErr       = -9073,                        /* mode is not supported*/
    kCSBusyErr                  = -9074,                        /* unable to process request at this time - try later*/
    kCSWriteProtectedErr        = -9075,                        /* media is write-protected*/
    kCSConfigurationLockedErr   = -9076,                        /* a configuration has already been locked*/
    kCSInUseErr                 = -9077,                        /* requested resource is being used by a client*/
    kCSNoMoreItemsErr           = -9078,                        /* there are no more of the requested item*/
    kCSOutOfResourceErr         = -9079                         /* Card Services has exhausted the resource*/
};



/*  messages sent to client's event handler*/

enum {
    kCSNullMessage              = 0x00,                         /* no messages pending (not sent to clients)*/
    kCSCardInsertionMessage     = 0x01,                         /* card has been inserted into the socket*/
    kCSCardRemovalMessage       = 0x02,                         /* card has been removed from the socket*/
    kCSCardLockMessage          = 0x03,                         /* card is locked into the socket with a mechanical latch*/
    kCSCardUnlockMessage        = 0x04,                         /* card is no longer locked into the socket*/
    kCSCardReadyMessage         = 0x05,                         /* card is ready to be accessed*/
    kCSCardResetMessage         = 0x06,                         /* physical reset has completed*/
    kCSInsertionRequestMessage  = 0x07,                         /* request to insert a card using insertion motor*/
    kCSInsertionCompleteMessage = 0x08,                         /* insertion motor has finished inserting a card*/
    kCSEjectionRequestMessage   = 0x09,                         /* user or other client is requesting a card ejection*/
    kCSEjectionFailedMessage    = 0x0A,                         /* eject failure due to electrical/mechanical problems*/
    kCSPMResumeMessage          = 0x0B,                         /* power management resume (TBD)*/
    kCSPMSuspendMessage         = 0x0C,                         /* power management suspend (TBD)*/
    kCSResetPhysicalMessage     = 0x0D,                         /* physical reset is about to occur on this card*/
    kCSResetRequestMessage      = 0x0E,                         /* physical reset has been requested by a client*/
    kCSResetCompleteMessage     = 0x0F,                         /* ResetCard() background reset has completed*/
    kCSBatteryDeadMessage       = 0x10,                         /* battery is no longer useable, data will be lost*/
    kCSBatteryLowMessage        = 0x11,                         /* battery is weak and should be replaced*/
    kCSWriteProtectMessage      = 0x12,                         /* card is now write protected*/
    kCSWriteEnabledMessage      = 0x13,                         /* card is now write enabled*/
    kCSClientInfoMessage        = 0x14,                         /* client is to return client information*/
    kCSSSUpdatedMessage         = 0x15,                         /* AddSocketServices/ReplaceSocket services has changed SS support*/
    kCSFunctionInterruptMessage = 0x16,                         /* card function interrupt*/
    kCSAccessErrorMessage       = 0x17,                         /* client bus errored on access to socket*/
    kCSCardUnconfiguredMessage  = 0x18,                         /* a CARD_READY was delivered to all clients and no client */
                                                                /*    requested a configuration for the socket*/
    kCSStatusChangedMessage     = 0x19                          /* status change for cards in I/O mode*/
};

/*
    The following is a mapping of the PCMCIA name space to the Macintosh name space.
    These two enum lists will be removed and given to developers as a separate file.
*/
enum {
    SUCCESS                     = noErr,
    BAD_ADAPTER                 = kCSBadAdapterErr,
    BAD_ATTRIBUTE               = kCSBadAttributeErr,
    BAD_BASE                    = kCSBadBaseErr,
    BAD_EDC                     = kCSBadEDCErr,
    BAD_IRQ                     = kCSBadIRQErr,
    BAD_OFFSET                  = kCSBadOffsetErr,
    BAD_PAGE                    = kCSBadPageErr,
    BAD_SIZE                    = kCSBadSizeErr,
    BAD_SOCKET                  = kCSBadSocketErr,
    BAD_TYPE                    = kCSBadTypeErr,
    BAD_VCC                     = kCSBadVccErr,
    BAD_VPP                     = kCSBadVppErr,
    BAD_WINDOW                  = kCSBadWindowErr,
    BAD_ARG_LENGTH              = kCSBadArgLengthErr,
    BAD_ARGS                    = kCSBadArgsErr,
    BAD_HANDLE                  = kCSBadHandleErr,
    BAD_CIS                     = kCSBadCISErr,
    BAD_SPEED                   = kCSBadSpeedErr,
    READ_FAILURE                = kCSReadFailureErr,
    WRITE_FAILURE               = kCSWriteFailureErr,
    GENERAL_FAILURE             = kCSGeneralFailureErr,
    NO_CARD                     = kCSNoCardErr,
    UNSUPPORTED_FUNCTION        = kCSUnsupportedFunctionErr,
    UNSUPPORTED_MODE            = kCSUnsupportedModeErr,
    BUSY                        = kCSBusyErr,
    WRITE_PROTECTED             = kCSWriteProtectedErr,
    CONFIGURATION_LOCKED        = kCSConfigurationLockedErr,
    IN_USE                      = kCSInUseErr,
    NO_MORE_ITEMS               = kCSNoMoreItemsErr,
    OUT_OF_RESOURCE             = kCSOutOfResourceErr
};


/*  messages sent to client's event handler*/

enum {
    NULL_MESSAGE                = kCSNullMessage,
    CARD_INSERTION              = kCSCardInsertionMessage,
    CARD_REMOVAL                = kCSCardRemovalMessage,
    CARD_LOCK                   = kCSCardLockMessage,
    CARD_UNLOCK                 = kCSCardUnlockMessage,
    CARD_READY                  = kCSCardReadyMessage,
    CARD_RESET                  = kCSCardResetMessage,
    INSERTION_REQUEST           = kCSInsertionRequestMessage,
    INSERTION_COMPLETE          = kCSInsertionCompleteMessage,
    EJECTION_REQUEST            = kCSEjectionRequestMessage,
    EJECTION_FAILED             = kCSEjectionFailedMessage,
    PM_RESUME                   = kCSPMResumeMessage,
    PM_SUSPEND                  = kCSPMSuspendMessage,
    RESET_PHYSICAL              = kCSResetPhysicalMessage,
    RESET_REQUEST               = kCSResetRequestMessage,
    RESET_COMPLETE              = kCSResetCompleteMessage,
    BATTERY_DEAD                = kCSBatteryDeadMessage,
    BATTERY_LOW                 = kCSBatteryLowMessage,
    WRITE_PROTECT               = kCSWriteProtectMessage,
    WRITE_ENABLED               = kCSWriteEnabledMessage,
    CLIENT_INFO                 = kCSClientInfoMessage,
    SS_UPDATED                  = kCSSSUpdatedMessage,
    FUNCTION_INTERRUPT          = kCSFunctionInterruptMessage,
    ACCESS_ERROR                = kCSAccessErrorMessage,
    CARD_UNCONFIGURED           = kCSCardUnconfiguredMessage,
    STATUS_CHANGED              = kCSStatusChangedMessage
};


/*----------------      CSAccessConfigurationRegister   ----------------*/


struct AccessConfigurationRegisterPB {
    UInt16                          socket;                     /*  -> global socket number*/
    UInt8                           action;                     /*  -> read/write*/
    UInt8                           offset;                     /*  -> offset from config register base*/
    UInt8                           value;                      /* <-> value to read/write*/
    UInt8                           padding[1];                 /* */
};
typedef struct AccessConfigurationRegisterPB AccessConfigurationRegisterPB;
/*  'action' field values*/

enum {
    kCSReadConfigRegister       = 0x00,
    kCSWriteConfigRegister      = 0x01
};


/*----------------      CSGetCardServicesInfo           ----------------*/


struct GetCardServicesInfoPB {
    UInt8                           signature[2];               /* <-  two ascii chars 'CS'*/
    UInt16                          count;                      /* <-  total number of sockets installed*/
    UInt16                          revision;                   /* <-  BCD*/
    UInt16                          csLevel;                    /* <-  BCD*/
    UInt16                          reserved;                   /*  -> zero*/
    UInt16                          vStrLen;                    /* <-> in: client's buffer size, out: vendor string length*/
    UInt8 *                         vendorString;               /* <-> in: pointer to buffer to hold CS vendor string (zero-terminated)*/
                                                                /*    out: CS vendor string copied to buffer*/
};
typedef struct GetCardServicesInfoPB    GetCardServicesInfoPB;
/*----------------      CSGetClientInfo                 ----------------*/


/* upper byte of attributes is kCSClientInfoSubfunction*/

struct ClientInfoParam {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          attributes;                 /* <-> subfunction + bitmapped client attributes*/
    UInt16                          revision;                   /* <-  BCD value of client's revision*/
    UInt16                          csLevel;                    /* <-  BCD value of CS release*/
    UInt16                          revDate;                    /* <-  revision date: y[15-9], m[8-5], d[4-0]*/
    SInt16                          nameLen;                    /* <-> in: max length of client name string, out: actual length*/
    SInt16                          vStringLen;                 /* <-> in: max length of vendor string, out: actual length*/
    UInt8 *                         nameString;                 /* <-  pointer to client name string (zero-terminated)*/
    UInt8 *                         vendorString;               /* <-  pointer to vendor string (zero-terminated)*/
};
typedef struct ClientInfoParam          ClientInfoParam;
/*
   upper byte of attributes is kCSCardNameSubfunction,
                               kCSCardTypeSubfunction,
                               kCSHelpStringSubfunction
*/

struct AlternateTextStringParam {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          attributes;                 /* <-> subfunction + bitmapped client attributes*/
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          reserved;                   /*  -> zero*/
    SInt16                          length;                     /* <-> in: max length of string, out: actual length*/
    UInt8 *                         text;                       /* <-  pointer to string (zero-terminated)*/
};
typedef struct AlternateTextStringParam AlternateTextStringParam;
/* upper byte of attributes is kCSCardIconSubfunction*/

struct AlternateCardIconParam {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          attributes;                 /* <-> subfunction + bitmapped client attributes*/
    UInt16                          socket;                     /*  -> logical socket number*/
    Handle                          iconSuite;                  /* <-  handle to icon suite containing all icons*/
};
typedef struct AlternateCardIconParam   AlternateCardIconParam;
/* upper byte of attributes is kCSActionProcSubfunction*/

struct CustomActionProcParam {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          attributes;                 /* <-> subfunction + bitmapped client attributes*/
    UInt16                          socket;                     /*  -> logical socket number*/
};
typedef struct CustomActionProcParam    CustomActionProcParam;

struct GetClientInfoPB {
    union {
        ClientInfoParam                 clientInfo;
        AlternateTextStringParam        alternateTextString;
        AlternateCardIconParam          alternateIcon;
        CustomActionProcParam           customActionProc;
    }                                 u;
};
typedef struct GetClientInfoPB          GetClientInfoPB;
/*  'attributes' field values*/
enum {
    kCSMemoryClient             = 0x0001,
    kCSIOClient                 = 0x0004,
    kCSClientTypeMask           = 0x0007,
    kCSShareableCardInsertEvents = 0x0008,
    kCSExclusiveCardInsertEvents = 0x0010,
    kCSInfoSubfunctionMask      = 0xFF00,
    kCSClientInfoSubfunction    = 0x0000,
    kCSCardNameSubfunction      = 0x8000,
    kCSCardTypeSubfunction      = 0x8100,
    kCSHelpStringSubfunction    = 0x8200,
    kCSCardIconSubfunction      = 0x8300,
    kCSActionProcSubfunction    = 0x8400
};


/*
  ----------------      CSGetConfigurationInfo          ----------------
  ----------------      CSModifyConfiguration           ----------------
  ----------------      CSRequestConfiguration          ----------------
*/


struct GetModRequestConfigInfoPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          attributes;                 /* <-> bitmap of configuration attributes*/
    UInt8                           vcc;                        /* <-> Vcc setting*/
    UInt8                           vpp1;                       /* <-> Vpp1 setting*/
    UInt8                           vpp2;                       /* <-> Vpp2 setting*/
    UInt8                           intType;                    /* <-> interface type (memory or memory+I/O)*/
    UInt32                          configBase;                 /* <-> card base address of configuration registers*/
    UInt8                           status;                     /* <-> card status register setting, if present*/
    UInt8                           pin;                        /* <-> card pin register setting, if present*/
    UInt8                           copy;                       /* <-> card socket/copy register setting, if present*/
    UInt8                           configIndex;                /* <-> card option register setting, if present*/
    UInt8                           present;                    /* <-> bitmap of which configuration registers are present*/
    UInt8                           firstDevType;               /* <-  from DeviceID tuple*/
    UInt8                           funcCode;                   /* <-  from FuncID tuple*/
    UInt8                           sysInitMask;                /* <-  from FuncID tuple*/
    UInt16                          manufCode;                  /* <-  from ManufacturerID tuple*/
    UInt16                          manufInfo;                  /* <-  from ManufacturerID tuple*/
    UInt8                           cardValues;                 /* <-  valid card register values*/
    UInt8                           padding[1];                 /* */
};
typedef struct GetModRequestConfigInfoPB GetModRequestConfigInfoPB;
/*  'attributes' field values*/
enum {
    kCSExclusivelyUsed          = 0x0001,
    kCSEnableIREQs              = 0x0002,
    kCSVccChangeValid           = 0x0004,
    kCSVpp1ChangeValid          = 0x0008,
    kCSVpp2ChangeValid          = 0x0010,
    kCSValidClient              = 0x0020,
    kCSSleepPower               = 0x0040,                       /* request that power be applied to socket during Sleep*/
    kCSLockSocket               = 0x0080,
    kCSTurnOnInUse              = 0x0100
};

/*  'intType' field values*/

enum {
    kCSMemoryInterface          = 0x01,
    kCSMemory_And_IO_Interface  = 0x02
};

/*  'present' field values*/

enum {
    kCSOptionRegisterPresent    = 0x01,
    kCSStatusRegisterPresent    = 0x02,
    kCSPinReplacementRegisterPresent = 0x04,
    kCSCopyRegisterPresent      = 0x08
};

/*  'cardValues' field values*/

enum {
    kCSOptionValueValid         = 0x01,
    kCSStatusValueValid         = 0x02,
    kCSPinReplacementValueValid = 0x04,
    kCSCopyValueValid           = 0x08
};


/*
  ----------------      CSGetClientEventMask            ----------------
  ----------------      CSSetClientEventMask            ----------------
*/


struct GetSetClientEventMaskPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          attributes;                 /* <-> bitmap of attributes*/
    UInt16                          eventMask;                  /* <-> bitmap of events to be passed to client for this socket*/
    UInt16                          socket;                     /*  -> logical socket number*/
};
typedef struct GetSetClientEventMaskPB  GetSetClientEventMaskPB;
/*  'attributes' field values*/
enum {
    kCSEventMaskThisSocketOnly  = 0x0001
};

/*  'eventMask' field values*/

enum {
    kCSWriteProtectEvent        = 0x0001,
    kCSCardLockChangeEvent      = 0x0002,
    kCSEjectRequestEvent        = 0x0004,
    kCSInsertRequestEvent       = 0x0008,
    kCSBatteryDeadEvent         = 0x0010,
    kCSBatteryLowEvent          = 0x0020,
    kCSReadyChangeEvent         = 0x0040,
    kCSCardDetectChangeEvent    = 0x0080,
    kCSPMChangeEvent            = 0x0100,
    kCSResetEvent               = 0x0200,
    kCSSSUpdateEvent            = 0x0400,
    kCSFunctionInterrupt        = 0x0800,
    kCSAllEvents                = 0xFFFF
};


/*
  ----------------      CSGetFirstClient                ----------------
  ----------------      CSGetNextClient                 ----------------
*/


struct GetClientPB {
    UInt32                          clientHandle;               /* <-  clientHandle for this client*/
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          attributes;                 /*  -> bitmap of attributes*/
};
typedef struct GetClientPB              GetClientPB;
/*  'attributes' field values*/
enum {
    kCSClientsForAllSockets     = 0x0000,
    kCSClientsThisSocketOnly    = 0x0001
};


/*
  ----------------      CSGetFirstTuple                 ----------------
  ----------------      CSGetNextTuple                  ----------------
  ----------------      CSGetTupleData                  ----------------
*/


struct GetTuplePB {
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          attributes;                 /*  -> bitmap of attributes*/
    UInt8                           desiredTuple;               /*  -> desired tuple code value, or $FF for all*/
    UInt8                           tupleOffset;                /*  -> offset into tuple from link byte*/
    UInt16                          flags;                      /* <-> internal use*/
    UInt32                          linkOffset;                 /* <-> internal use*/
    UInt32                          cisOffset;                  /* <-> internal use*/

    union {
        struct {
            UInt8                           tupleCode;          /* <-  tuple code found*/
            UInt8                           tupleLink;          /* <-  link value for tuple found*/
        }                                 TuplePB;

        struct {
            UInt16                          tupleDataMax;       /*  -> maximum size of tuple data area*/
            UInt16                          tupleDataLen;       /* <-  number of bytes in tuple body*/
            TupleBody                       tupleData;          /* <-  tuple data*/
        }                                 TupleDataPB;
    }                                 u;
};
typedef struct GetTuplePB               GetTuplePB;
/*  'attributes' field values*/
enum {
    kCSReturnLinkTuples         = 0x0001
};


/*
  ----------------      CSRequestSocketMask             ----------------
  ----------------      CSReleaseSocketMask             ----------------
*/


struct ReqRelSocketMaskPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          socket;                     /*  -> logical socket*/
    UInt16                          eventMask;                  /*  -> bitmap of events to be passed to client for this socket*/
};
typedef struct ReqRelSocketMaskPB       ReqRelSocketMaskPB;
/*  'eventMask' field values (see above for Get/SetClientEventMask*/

/*----------------      CSGetStatus                     ----------------*/


struct GetStatusPB {
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          cardState;                  /* <-  current state of installed card*/
    UInt16                          socketState;                /* <-  current state of the socket*/
};
typedef struct GetStatusPB              GetStatusPB;
/*  'cardState' field values*/
enum {
    kCSWriteProtected           = 0x0001,
    kCSCardLocked               = 0x0002,
    kCSEjectRequest             = 0x0004,
    kCSInsertRequest            = 0x0008,
    kCSBatteryDead              = 0x0010,
    kCSBatteryLow               = 0x0020,
    kCSReady                    = 0x0040,
    kCSCardDetected             = 0x0080
};

/*  'socketState' field values*/

enum {
    kCSWriteProtectChanged      = 0x0001,
    kCSCardLockChanged          = 0x0002,
    kCSEjectRequestPending      = 0x0004,
    kCSInsertRequestPending     = 0x0008,
    kCSBatteryDeadChanged       = 0x0010,
    kCSBatteryLowChanged        = 0x0020,
    kCSReadyChanged             = 0x0040,
    kCSCardDetectChanged        = 0x0080
};


/*
  ----------------      CSModifyWindow                  ----------------
  ----------------      CSReleaseWindow                 ----------------
  ----------------      CSRequestWindow                 ----------------
*/


struct ReqModRelWindowPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt32                          windowHandle;               /* <-> window descriptor*/
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          attributes;                 /*  -> window attributes (bitmap)*/
    UInt32                          base;                       /* <-> system base address*/
    UInt32                          size;                       /* <-> memory window size*/
    UInt8                           accessSpeed;                /*  -> window access speed (bitmap)*/
                                                                /*       (not applicable for I/O mode)*/
    UInt8                           padding[1];                 /* */
};
typedef struct ReqModRelWindowPB        ReqModRelWindowPB;
/*  'attributes' field values*/
enum {
    kCSMemoryWindow             = 0x0001,
    kCSIOWindow                 = 0x0002,
    kCSAttributeWindow          = 0x0004,                       /* not normally used by Card Services clients*/
    kCSWindowTypeMask           = 0x0007,
    kCSEnableWindow             = 0x0008,
    kCSAccessSpeedValid         = 0x0010,
    kCSLittleEndian             = 0x0020,                       /* configure socket for little endianess*/
    kCS16BitDataPath            = 0x0040,
    kCSWindowPaged              = 0x0080,                       /* */
    kCSWindowShared             = 0x0100,
    kCSWindowFirstShared        = 0x0200,                       /* */
    kCSWindowProgrammable       = 0x0400                        /* */
};

/*  'accessSpeed' field values*/

enum {
    kCSDeviceSpeedCodeMask      = 0x07,
    kCSSpeedExponentMask        = 0x07,
    kCSSpeedMantissaMask        = 0x78,
    kCSUseWait                  = 0x80,
    kCSAccessSpeed250nsec       = 0x01,
    kCSAccessSpeed200nsec       = 0x02,
    kCSAccessSpeed150nsec       = 0x03,
    kCSAccessSpeed100nsec       = 0x04,
    kCSExtAccSpeedMant1pt0      = 0x01,
    kCSExtAccSpeedMant1pt2      = 0x02,
    kCSExtAccSpeedMant1pt3      = 0x03,
    kCSExtAccSpeedMant1pt5      = 0x04,
    kCSExtAccSpeedMant2pt0      = 0x05,
    kCSExtAccSpeedMant2pt5      = 0x06,
    kCSExtAccSpeedMant3pt0      = 0x07,
    kCSExtAccSpeedMant3pt5      = 0x08,
    kCSExtAccSpeedMant4pt0      = 0x09,
    kCSExtAccSpeedMant4pt5      = 0x0A,
    kCSExtAccSpeedMant5pt0      = 0x0B,
    kCSExtAccSpeedMant5pt5      = 0x0C,
    kCSExtAccSpeedMant6pt0      = 0x0D,
    kCSExtAccSpeedMant7pt0      = 0x0E,
    kCSExtAccSpeedMant8pt0      = 0x0F,
    kCSExtAccSpeedExp1ns        = 0x00,
    kCSExtAccSpeedExp10ns       = 0x01,
    kCSExtAccSpeedExp100ns      = 0x02,
    kCSExtAccSpeedExp1us        = 0x03,
    kCSExtAccSpeedExp10us       = 0x04,
    kCSExtAccSpeedExp100us      = 0x05,
    kCSExtAccSpeedExp1ms        = 0x06,
    kCSExtAccSpeedExp10ms       = 0x07
};


/*
  ----------------      CSRegisterClient                ----------------
  ----------------      CSDeregisterClient              ----------------
*/


struct ClientCallbackPB {
    UInt16                          message;                    /*  -> which event this is*/
    UInt16                          socket;                     /*  -> logical socket number*/
    UInt16                          info;                       /*  -> function-specific*/
    UInt16                          misc;                       /*  -> function-specific*/
    Ptr                             reserved;                   /*  -> pointer to MTD request block*/
    Ptr                             buffer;                     /*  -> function-specific*/
    Ptr                             clientData;                 /*  -> pointer to client's data (from RegisterClient)*/
};
typedef struct ClientCallbackPB         ClientCallbackPB;
typedef ClientCallbackPB *              ClientCallbackPBPtr;
typedef CALLBACK_API( UInt16 , PCCardCSClientProcPtr )(ClientCallbackPBPtr ccPBPtr);
typedef STACK_UPP_TYPE(PCCardCSClientProcPtr)                   PCCardCSClientUPP;
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
    EXTERN_API(PCCardCSClientUPP)
    NewPCCardCSClientUPP           (PCCardCSClientProcPtr   userRoutine);

    EXTERN_API(void)
    DisposePCCardCSClientUPP       (PCCardCSClientUPP       userUPP);

    EXTERN_API(UInt16)
    InvokePCCardCSClientUPP        (ClientCallbackPBPtr     ccPBPtr,
                                    PCCardCSClientUPP       userUPP);

#endif  /* CALL_NOT_IN_CARBON */

#else
    enum { uppPCCardCSClientProcInfo = 0x000000E0 };                /* pascal 2_bytes Func(4_bytes) */
    #define NewPCCardCSClientUPP(userRoutine)                       (PCCardCSClientUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPCCardCSClientProcInfo, GetCurrentArchitecture())
    #define DisposePCCardCSClientUPP(userUPP)                       DisposeRoutineDescriptor(userUPP)
    #define InvokePCCardCSClientUPP(ccPBPtr, userUPP)               (UInt16)CALL_ONE_PARAMETER_UPP((userUPP), uppPCCardCSClientProcInfo, (ccPBPtr))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewPCCardCSClientProc(userRoutine)                      NewPCCardCSClientUPP(userRoutine)
#define CallPCCardCSClientProc(userRoutine, ccPBPtr)            InvokePCCardCSClientUPP(ccPBPtr, userRoutine)

struct RegisterClientPB {
    UInt32                          clientHandle;               /* <-  client descriptor*/
    PCCardCSClientUPP               clientEntry;                /*  -> universal procPtr to client's event handler*/
    UInt16                          attributes;                 /*  -> bitmap of client attributes*/
    UInt16                          eventMask;                  /*  -> bitmap of events to notify client*/
    Ptr                             clientData;                 /*  -> pointer to client's data*/
    UInt16                          version;                    /*  -> Card Services version this client expects*/
};
typedef struct RegisterClientPB         RegisterClientPB;
/*  'attributes' field values (see GetClientInfo)*/
/*
    kCSMemoryClient                 = 0x0001,
    kCSIOClient                     = 0x0004,
    kCSShareableCardInsertEvents    = 0x0008,
    kCSExclusiveCardInsertEvents    = 0x0010
*/


/*----------------      CSReleaseConfiguration          ----------------*/


struct ReleaseConfigurationPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          socket;                     /*  -> */
};
typedef struct ReleaseConfigurationPB   ReleaseConfigurationPB;
/*----------------      CSResetCard                     ----------------*/


struct ResetCardPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          socket;                     /*  -> */
    UInt16                          attributes;                 /*  -> xxx*/
};
typedef struct ResetCardPB              ResetCardPB;
/*----------------      CSValidateCIS                   ----------------*/


struct ValidateCISPB {
    UInt16                          socket;                     /*  -> */
    UInt16                          chains;                     /*  -> whether link/null tuples should be included*/
};
typedef struct ValidateCISPB            ValidateCISPB;
/*
  ----------------      CSRequestIO                     ----------------
  ----------------      CSReleaseIO                     ----------------
*/


struct ReqRelIOPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          socket;                     /*  -> socket number*/
    UInt16                          reserved;
    UInt16                          basePort1;                  /*    -> base I/O port for range*/
    UInt8                           numPorts1;                  /*    -> number of ports (e.g., bytes).*/
    UInt8                           attributes1;                /*    -> attributes*/

    UInt16                          basePort2;                  /*    -> base I/O port for range*/
    UInt8                           numPorts2;                  /*    -> number of ports*/
    UInt8                           attributes2;                /*    -> attributes*/

    UInt8                           ioAddrLines;                /*    -> number of I/O lines decoded by card*/
    UInt8                           reserved1;
};
typedef struct ReqRelIOPB               ReqRelIOPB;
/*----------------      CSVendorSpecific                ----------------*/

struct VendorSpecificPB {
    UInt32                          clientHandle;               /*  -> clientHandle returned by RegisterClient*/
    UInt16                          vsCode;
    UInt16                          socket;
    UInt32                          dataLen;                    /*  -> length of buffer pointed to by vsDataPtr*/
    UInt8 *                         vsDataPtr;                  /*  -> Card Services version this client expects*/
};
typedef struct VendorSpecificPB         VendorSpecificPB;
/*  'vsCode' field values*/

enum {
    vsAppleReserved             = 0x0000,
    vsEjectCard                 = 0x0001,
    vsGetCardInfo               = 0x0002,
    vsEnableSocketEvents        = 0x0003,
    vsGetCardLocationIcon       = 0x0004,
    vsGetCardLocationText       = 0x0005,
    vsGetAdapterInfo            = 0x0006
};

/*
  ///////////////////////////////////////////////////////////////////////////////////////
    GetAdapterInfo parameter block (vendor-specific call #6)
*/


struct GetAdapterInfoPB {
    UInt32                          attributes;                 /* <-  capabilties of socket's adapter*/
    UInt16                          revision;                   /* <-  id of adapter*/
    UInt16                          reserved;                   /* */
    UInt16                          numVoltEntries;             /* <-  number of valid voltage values*/
    UInt8 *                         voltages;                   /* <-> array of BCD voltage values*/
};
typedef struct GetAdapterInfoPB         GetAdapterInfoPB;
/*  'attributes' field values*/
enum {
    kCSLevelModeInterrupts      = 0x00000001,
    kCSPulseModeInterrupts      = 0x00000002,
    kCSProgrammableWindowAddr   = 0x00000004,
    kCSProgrammableWindowSize   = 0x00000008,
    kCSSocketSleepPower         = 0x00000010,
    kCSSoftwareEject            = 0x00000020,
    kCSLockableSocket           = 0x00000040,
    kCSInUseIndicator           = 0x00000080
};

/*
  ///////////////////////////////////////////////////////////////////////////////////////
    GetCardInfo parameter block (vendor-specific call #2)
*/


struct GetCardInfoPB {
    UInt8                           cardType;                   /* <-  type of card in this socket (defined at top of file)*/
    UInt8                           subType;                    /* <-  more detailed card type (defined at top of file)*/
    UInt16                          reserved;                   /* <-> reserved (should be set to zero)*/
    UInt16                          cardNameLen;                /*  -> maximum length of card name to be returned*/
    UInt16                          vendorNameLen;              /*  -> maximum length of vendor name to be returned*/
    UInt8 *                         cardName;                   /*  -> pointer to card name string (read from CIS), or nil*/
    UInt8 *                         vendorName;                 /*  -> pointer to vendor name string (read from CIS), or nil*/
};
typedef struct GetCardInfoPB            GetCardInfoPB;
/*  GetCardInfo card types*/
enum {
    kCSUnknownCardType          = 0,
    kCSMultiFunctionCardType    = 1,
    kCSMemoryCardType           = 2,
    kCSSerialPortCardType       = 3,
    kCSSerialOnlyType           = 0,
    kCSDataModemType            = 1,
    kCSFaxModemType             = 2,
    kCSFaxAndDataModemMask      = (kCSDataModemType | kCSFaxModemType),
    kCSVoiceEncodingType        = 4,
    kCSParallelPortCardType     = 4,
    kCSFixedDiskCardType        = 5,
    kCSUnknownFixedDiskType     = 0,
    kCSATAInterface             = 1,
    kCSRotatingDevice           = (0 << 7),
    kCSSiliconDevice            = (1 << 7),
    kCSVideoAdaptorCardType     = 6,
    kCSNetworkAdaptorCardType   = 7,
    kCSAIMSCardType             = 8,
    kCSNumCardTypes             = 9
};


#ifndef __PCCARDENABLERPLUGIN__
/*
    NOTE: These prototypes conflict with PCCardEnablerPlugin.*
          You cannot use both PCCardEnablerPlugin.h and CardServices.h
          
*/
#if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
CSVendorSpecific                (VendorSpecificPB *     pb)                                 TWOWORDINLINE(0x7000, 0xAAF0);

EXTERN_API( OSErr )
CSRegisterClient                (RegisterClientPB *     pb)                                 TWOWORDINLINE(0x7001, 0xAAF0);

EXTERN_API( OSErr )
CSDeregisterClient              (RegisterClientPB *     pb)                                 TWOWORDINLINE(0x7002, 0xAAF0);

EXTERN_API( OSErr )
CSGetFirstTuple                 (GetTuplePB *           pb)                                 TWOWORDINLINE(0x7003, 0xAAF0);

EXTERN_API( OSErr )
CSGetNextTuple                  (GetTuplePB *           pb)                                 TWOWORDINLINE(0x7004, 0xAAF0);

EXTERN_API( OSErr )
CSGetTupleData                  (GetTuplePB *           pb)                                 TWOWORDINLINE(0x7005, 0xAAF0);

EXTERN_API( OSErr )
CSGetConfigurationInfo          (GetModRequestConfigInfoPB * pb)                            TWOWORDINLINE(0x7006, 0xAAF0);

EXTERN_API( OSErr )
CSGetCardServicesInfo           (GetCardServicesInfoPB * pb)                                TWOWORDINLINE(0x7007, 0xAAF0);

EXTERN_API( OSErr )
CSGetStatus                     (GetStatusPB *          pb)                                 TWOWORDINLINE(0x7008, 0xAAF0);

EXTERN_API( OSErr )
CSValidateCIS                   (ValidateCISPB *        pb)                                 TWOWORDINLINE(0x7009, 0xAAF0);

EXTERN_API( OSErr )
CSGetFirstClient                (GetClientPB *          pb)                                 TWOWORDINLINE(0x700F, 0xAAF0);

EXTERN_API( OSErr )
CSGetNextClient                 (GetClientPB *          pb)                                 TWOWORDINLINE(0x7010, 0xAAF0);

EXTERN_API( OSErr )
CSGetClientInfo                 (GetClientInfoPB *      pb)                                 TWOWORDINLINE(0x7011, 0xAAF0);

EXTERN_API( OSErr )
CSResetCard                     (ResetCardPB *          pb)                                 TWOWORDINLINE(0x7012, 0xAAF0);

EXTERN_API( OSErr )
CSRequestWindow                 (ReqModRelWindowPB *    pb)                                 TWOWORDINLINE(0x7013, 0xAAF0);

EXTERN_API( OSErr )
CSModifyWindow                  (ReqModRelWindowPB *    pb)                                 TWOWORDINLINE(0x7014, 0xAAF0);

EXTERN_API( OSErr )
CSReleaseWindow                 (ReqModRelWindowPB *    pb)                                 TWOWORDINLINE(0x7015, 0xAAF0);

EXTERN_API( OSErr )
CSRequestConfiguration          (GetModRequestConfigInfoPB * pb)                            TWOWORDINLINE(0x701B, 0xAAF0);

EXTERN_API( OSErr )
CSModifyConfiguration           (GetModRequestConfigInfoPB * pb)                            TWOWORDINLINE(0x701C, 0xAAF0);

EXTERN_API( OSErr )
CSAccessConfigurationRegister   (AccessConfigurationRegisterPB * pb)                        TWOWORDINLINE(0x701D, 0xAAF0);

EXTERN_API( OSErr )
CSReleaseConfiguration          (ReleaseConfigurationPB * pb)                               TWOWORDINLINE(0x701E, 0xAAF0);

EXTERN_API( OSErr )
CSGetClientEventMask            (GetSetClientEventMaskPB * pb)                              TWOWORDINLINE(0x701F, 0xAAF0);

EXTERN_API( OSErr )
CSSetClientEventMask            (GetSetClientEventMaskPB * pb)                              TWOWORDINLINE(0x7020, 0xAAF0);

EXTERN_API( OSErr )
CSRequestSocketMask             (ReqRelSocketMaskPB *   pb)                                 TWOWORDINLINE(0x7021, 0xAAF0);

EXTERN_API( OSErr )
CSReleaseSocketMask             (ReqRelSocketMaskPB *   pb)                                 TWOWORDINLINE(0x7022, 0xAAF0);


/*
    Additional calls which are required for all I/O clients when running on
    systems which do not reserve dedicated I/O-spaces for each PC Card.
*/

EXTERN_API( OSErr )
CSRequestIO                     (ReqRelIOPB *           pb)                                 TWOWORDINLINE(0x7025, 0xAAF0);

EXTERN_API( OSErr )
CSReleaseIO                     (ReqRelIOPB *           pb)                                 TWOWORDINLINE(0x7026, 0xAAF0);

#endif  /* CALL_NOT_IN_CARBON */

#endif  /* !defined(__PCCARDENABLERPLUGIN__) */


#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 /* __CARDSERVICES__ */





See more files for this project here

guliverkli

Home of VobSub, Media Player Classic (MPC) and other misc utils.

Project homepage: http://sourceforge.net/projects/guliverkli
Programming language(s): C,C++,PHP
License: other

  ADSP.h
  ADSPSecure.h
  AEDataModel.h
  AEObjects.h
  AEPackObject.h
  AERegistry.h
  AEUserTermTypes.h
  AGP.h
  AIFF.h
  ASDebugging.h
  ASRegistry.h
  ATA.h
  ATSLayoutTypes.h
  ATSTypes.h
  ATSUnicode.h
  AVComponents.h
  AVLTree.h
  Aliases.h
  Appearance.h
  AppleEvents.h
  AppleGuide.h
  AppleScript.h
  AppleTalk.h
  Balloons.h
  CFArray.h
  CFBag.h
  CFBase.h
  CFBundle.h
  CFCharacterSet.h
  CFData.h
  CFDate.h
  CFDictionary.h
  CFNumber.h
  CFPlugIn.h
  CFPreferences.h
  CFPropertyList.h
  CFSet.h
  CFString.h
  CFStringEncodingExt.h
  CFTimeZone.h
  CFURL.h
  CFURLAccess.h
  CMAcceleration.h
  CMApplication.h
  CMCalibrator.h
  CMComponent.h
  CMConversions.h
  CMICCProfile.h
  CMMComponent.h
  CMPRComponent.h
  CMScriptingPlugin.h
  CRMSerialDevices.h
  CTBUtilities.h
  CarbonEvents.h
  CardServices.h
  CodeFragments.h
  Collections.h
  ColorPicker.h
  ColorPickerComponents.h
  CommResources.h
  Components.h
  ConditionalMacros.h
  ConnectionTools.h
  Connections.h
  ControlDefinitions.h
  ControlStrip.h
  Controls.h
  CoreFoundation.h
  CryptoMessageSyntax.h
  CursorDevices.h
  DatabaseAccess.h
  DateTimeUtils.h
  Debugging.h
  DeskBus.h
  DeviceControl.h
  Devices.h
  Dialogs.h
  Dictionary.h
  DigitalSignature.h
  DiskInit.h
  Disks.h
  Displays.h
  Drag.h
  DrawSprocket.h
  DriverFamilyMatching.h
  DriverGestalt.h
  DriverServices.h
  DriverSupport.h
  DriverSynchronization.h
  ENET.h
  EPPC.h
  Editions.h
  Endian.h
  Events.h
  FSM.h
  FileSigning.h
  FileTransferTools.h
  FileTransfers.h
  FileTypesAndCreators.h
  Files.h