Annotation of kernel/bsd/dev/ppc/drvUSBCMD/devices.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:        File:           Devices.h
                     27:  
                     28:        Contains:       Device Manager Interfaces.
                     29:  
                     30:        Version:        Technology:     PowerSurge 1.0.2.
                     31:                                Package:        Universal Interfaces 2.1.2 on ETO #20
                     32:  
                     33:        Copyright:      � 1984-1995 by Apple Computer, Inc.
                     34:                                All rights reserved.
                     35:  
                     36:        Bugs?:          If you find a problem with this file, use the Apple Bug Reporter
                     37:                                stack.  Include the file and version information (from above)
                     38:                                in the problem description and send to:
                     39:                                        Internet:       [email protected]
                     40:                                        AppleLink:      APPLE.BUGS
                     41:  
                     42: */
                     43: 
                     44: #ifndef __DEVICES__
                     45: #define __DEVICES__
                     46: 
                     47: 
                     48: #ifndef __OSUTILS__
                     49: //naga#include <OSUtils.h>
                     50: #endif
                     51: /*     #include <Types.h>                                                                                      */
                     52: /*             #include <ConditionalMacros.h>                                                  */
                     53: /*     #include <MixedMode.h>                                                                          */
                     54: /*     #include <Memory.h>                                                                                     */
                     55: 
                     56: #ifndef __FILES__
                     57: //naga#include <Files.h>
                     58: #endif
                     59: /*     #include <Finder.h>                                                                                     */
                     60: 
                     61: #ifndef __QUICKDRAW__
                     62: //naga#include <Quickdraw.h>
                     63: #endif
                     64: /*     #include <QuickdrawText.h>                                                                      */
                     65: 
                     66: #ifndef __EVENTS__
                     67: //naga#include <Events.h>
                     68: #endif
                     69: 
                     70: #ifndef __DIALOGS__
                     71: //#include <Dialogs.h>
                     72: #endif
                     73: /*     #include <Errors.h>                                                                                     */
                     74: /*     #include <Menus.h>                                                                                      */
                     75: /*     #include <Controls.h>                                                                           */
                     76: /*     #include <Windows.h>                                                                            */
                     77: /*     #include <TextEdit.h>                                                                           */
                     78: 
                     79: #ifndef __KERNEL__
                     80: //naga#include <Kernel.h>
                     81: #endif
                     82: 
                     83: #ifndef __NAMEREGISTRY__
                     84: //naga#include <NameRegistry.h>
                     85: #endif
                     86: /*naga
                     87: #ifndef __CODEFRAGMENTS__
                     88: #include <CodeFragments.h>
                     89: #endif
                     90: 
                     91: #ifdef __cplusplus
                     92: extern "C" {
                     93: #endif
                     94: 
                     95: #if PRAGMA_ALIGN_SUPPORTED
                     96: #pragma options align=mac68k
                     97: #endif
                     98: 
                     99: #if PRAGMA_IMPORT_SUPPORTED
                    100: #pragma import on
                    101: #endif
                    102:  naga*/
                    103: 
                    104: enum {
                    105:        chooserInitMsg                          = 11,                                                   /* the user selected this device package */
                    106:        newSelMsg                                       = 12,                                                   /* the user made new device selections */
                    107:        fillListMsg                                     = 13,                                                   /* fill the device list with choices */
                    108:        getSelMsg                                       = 14,                                                   /* mark one or more choices as selected */
                    109:        selectMsg                                       = 15,                                                   /* the user made a selection */
                    110:        deselectMsg                                     = 16,                                                   /* the user canceled a selection */
                    111:        terminateMsg                            = 17,                                                   /* allows device package to clean up */
                    112:        buttonMsg                                       = 19                                                    /* the user selected a button */
                    113: };
                    114: 
                    115: /* Values of the 'caller' parameter to a Chooser device package */
                    116: enum {
                    117:        chooserID                                       = 1
                    118: };
                    119: 
                    120: /* Values of the 'message' parameter to a Control Panel 'cdev' */
                    121: enum {
                    122:        initDev                                         = 0,                                                    /*Time for cdev to initialize itself*/
                    123:        hitDev                                          = 1,                                                    /*Hit on one of my items*/
                    124:        closeDev                                        = 2,                                                    /*Close yourself*/
                    125:        nulDev                                          = 3,                                                    /*Null event*/
                    126:        updateDev                                       = 4,                                                    /*Update event*/
                    127:        activDev                                        = 5,                                                    /*Activate event*/
                    128:        deactivDev                                      = 6,                                                    /*Deactivate event*/
                    129:        keyEvtDev                                       = 7,                                                    /*Key down/auto key*/
                    130:        macDev                                          = 8,                                                    /*Decide whether or not to show up*/
                    131:        undoDev                                         = 9,
                    132:        cutDev                                          = 10,
                    133:        copyDev                                         = 11,
                    134:        pasteDev                                        = 12,
                    135:        clearDev                                        = 13,
                    136:        cursorDev                                       = 14
                    137: };
                    138: 
                    139: /* Special values a Control Panel 'cdev' can return */
                    140: enum {
                    141:        cdevGenErr                                      = -1,                                                   /*General error; gray cdev w/o alert*/
                    142:        cdevMemErr                                      = 0,                                                    /*Memory shortfall; alert user please*/
                    143:        cdevResErr                                      = 1,                                                    /*Couldn't get a needed resource; alert*/
                    144:        cdevUnset                                       = 3                                                             /* cdevValue is initialized to this*/
                    145: };
                    146: 
                    147: /* Values of the 'message' parameter to a Monitor 'mntr' */
                    148: enum {
                    149:        initMsg                                         = 1,                                                    /*initialization*/
                    150:        okMsg                                           = 2,                                                    /*user clicked OK button*/
                    151:        cancelMsg                                       = 3,                                                    /*user clicked Cancel button*/
                    152:        hitMsg                                          = 4,                                                    /*user clicked control in Options dialog*/
                    153:        nulMsg                                          = 5,                                                    /*periodic event*/
                    154:        updateMsg                                       = 6,                                                    /*update event*/
                    155:        activateMsg                                     = 7,                                                    /*not used*/
                    156:        deactivateMsg                           = 8,                                                    /*not used*/
                    157:        keyEvtMsg                                       = 9,                                                    /*keyboard event*/
                    158:        superMsg                                        = 10,                                                   /*show superuser controls*/
                    159:        normalMsg                                       = 11,                                                   /*show only normal controls*/
                    160:        startupMsg                                      = 12                                                    /*code has been loaded*/
                    161: };
                    162: 
                    163: /* control codes for DeskAccessories */
                    164: enum {
                    165:        goodbye                                         = -1,                                                   /* heap being reinitialized */
                    166:        killCode                                        = 1,                                                    /* KillIO requested */
                    167:        accEvent                                        = 64,                                                   /* handle an event */
                    168:        accRun                                          = 65,                                                   /* time for periodic action */
                    169:        accCursor                                       = 66,                                                   /* change cursor shape */
                    170:        accMenu                                         = 67,                                                   /* handle menu item */
                    171:        accUndo                                         = 68,                                                   /* handle undo command */
                    172:        accCut                                          = 70,                                                   /* handle cut command */
                    173:        accCopy                                         = 71,                                                   /* handle copy command */
                    174:        accPaste                                        = 72,                                                   /* handle paste command */
                    175:        accClear                                        = 73                                                    /* handle clear command */
                    176: };
                    177: 
                    178: /* Control/Status Call Codes */
                    179: enum {
                    180:        drvStsCode                                      = 8,                                                    /* status call code for drive status */
                    181:        ejectCode                                       = 7,                                                    /* control call eject code */
                    182:        tgBuffCode                                      = 8                                                             /* set tag buffer code */
                    183: };
                    184: 
                    185: /* miscellaneous Device Manager constants */
                    186: enum {
                    187:        ioInProgress                            = 1,                                                    /* predefined value of ioResult while I/O is pending */
                    188:        aRdCmd                                          = 2,                                                    /* low byte of ioTrap for Read calls */
                    189:        aWrCmd                                          = 3,                                                    /* low byte of ioTrap for Write calls */
                    190:        asyncTrpBit                                     = 10,                                                   /* trap word modifier */
                    191:        noQueueBit                                      = 9                                                             /* trap word modifier */
                    192: };
                    193: 
                    194: /* flags used in the driver header and device control entry */
                    195: enum {
                    196:        dReadEnable                                     = 0,                                                    /* set if driver responds to read requests */
                    197:        dWritEnable                                     = 1,                                                    /* set if driver responds to write requests */
                    198:        dCtlEnable                                      = 2,                                                    /* set if driver responds to control requests */
                    199:        dStatEnable                                     = 3,                                                    /* set if driver responds to status requests */
                    200:        dNeedGoodBye                            = 4,                                                    /* set if driver needs time for performing periodic tasks */
                    201:        dNeedTime                                       = 5,                                                    /* set if driver needs time for performing periodic tasks */
                    202:        dNeedLock                                       = 6,                                                    /* set if driver must be locked in memory as soon as it is opened */
                    203:        dNeedLockMask                           = 0x4000,                                               /* set if driver must be locked in memory as soon as it is opened */
                    204:        dNeedTimeMask                           = 0x2000,                                               /* set if driver needs time for performing periodic tasks */
                    205:        dNeedGoodByeMask                        = 0x1000,                                               /* set if driver needs to be called before the application heap is initialized */
                    206:        dStatEnableMask                         = 0x0800,                                               /* set if driver responds to status requests */
                    207:        dCtlEnableMask                          = 0x0400,                                               /* set if driver responds to control requests */
                    208:        dWritEnableMask                         = 0x0200,                                               /* set if driver responds to write requests */
                    209:        dReadEnableMask                         = 0x0100                                                /* set if driver responds to read requests */
                    210: };
                    211: 
                    212: /* run-time flags used in the device control entry */
                    213: enum {
                    214:        dOpened                                         = 5,                                                    /* driver is open */
                    215:        dRAMBased                                       = 6,                                                    /* dCtlDriver is a handle (1) or pointer (0) */
                    216:        drvrActive                                      = 7,                                                    /* driver is currently processing a request */
                    217:        drvrActiveMask                          = 0x0080,                                               /* driver is currently processing a request */
                    218:        dRAMBasedMask                           = 0x0040,                                               /* dCtlDriver is a handle (1) or pointer (0) */
                    219:        dOpenedMask                                     = 0x0020                                                /* driver is open */
                    220: };
                    221: 
                    222: struct DRVRHeader {
                    223:        short                                                   drvrFlags;
                    224:        short                                                   drvrDelay;
                    225:        short                                                   drvrEMask;
                    226:        short                                                   drvrMenu;
                    227:        short                                                   drvrOpen;
                    228:        short                                                   drvrPrime;
                    229:        short                                                   drvrCtl;
                    230:        short                                                   drvrStatus;
                    231:        short                                                   drvrClose;
                    232:        unsigned char                                   drvrName[1];
                    233: };
                    234: typedef struct DRVRHeader DRVRHeader;
                    235: 
                    236: typedef DRVRHeader *DRVRHeaderPtr, **DRVRHeaderHandle;
                    237: 
                    238: struct DCtlEntry {
                    239:        Ptr                                                             dCtlDriver;
                    240:        short                                                   dCtlFlags;
                    241:        QHdr                                                    dCtlQHdr;
                    242:        long                                                    dCtlPosition;
                    243:        Handle                                                  dCtlStorage;
                    244:        short                                                   dCtlRefNum;
                    245:        long                                                    dCtlCurTicks;
                    246: //naga WindowPtr                                               dCtlWindow;
                    247:        short                                                   dCtlDelay;
                    248:        short                                                   dCtlEMask;
                    249:        short                                                   dCtlMenu;
                    250: };
                    251: typedef struct DCtlEntry DCtlEntry;
                    252: 
                    253: typedef DCtlEntry *DCtlPtr, **DCtlHandle;
                    254: 
                    255: struct AuxDCE {
                    256:        Ptr                                                             dCtlDriver;
                    257:        short                                                   dCtlFlags;
                    258:        QHdr                                                    dCtlQHdr;
                    259:        long                                                    dCtlPosition;
                    260:        Handle                                                  dCtlStorage;
                    261:        short                                                   dCtlRefNum;
                    262:        long                                                    dCtlCurTicks;
                    263:        //nagaGrafPtr                                                   dCtlWindow;
                    264:        short                                                   dCtlDelay;
                    265:        short                                                   dCtlEMask;
                    266:        short                                                   dCtlMenu;
                    267:        SInt8                                                   dCtlSlot;
                    268:        SInt8                                                   dCtlSlotId;
                    269:        long                                                    dCtlDevBase;
                    270:        Ptr                                                             dCtlOwner;
                    271:        SInt8                                                   dCtlExtDev;
                    272:        SInt8                                                   fillByte;
                    273:        UInt32                                                  dCtlNodeID;
                    274: };
                    275: typedef struct AuxDCE AuxDCE;
                    276: 
                    277: typedef AuxDCE *AuxDCEPtr, **AuxDCEHandle;
                    278: 
                    279: typedef UInt16 UnitNumber;
                    280: 
                    281: typedef UInt32 DriverOpenCount;
                    282: 
                    283: typedef SInt16 DriverRefNum;
                    284: 
                    285: typedef SInt16 DriverFlags;
                    286: 
                    287: typedef UInt32 IOCommandCode;
                    288: 
                    289: 
                    290: enum {
                    291:        kOpenCommand                            = 0,
                    292:        kCloseCommand                           = 1,
                    293:        kReadCommand                            = 2,
                    294:        kWriteCommand                           = 3,
                    295:        kControlCommand                         = 4,
                    296:        kStatusCommand                          = 5,
                    297:        kKillIOCommand                          = 6,
                    298:        kInitializeCommand                      = 7,                                                    /* init driver and device*/
                    299:        kFinalizeCommand                        = 8,                                                    /* shutdown driver and device*/
                    300:        kReplaceCommand                         = 9,                                                    /* replace an old driver*/
                    301:        kSupersededCommand                      = 10                                                    /* prepare to be replaced by a new driver*/
                    302: };
                    303: //naga
                    304: //typedef KernelID IOCommandID;
                    305: 
                    306: typedef UInt32 IOCommandKind;
                    307: //naga
                    308: typedef int RegEntryID;
                    309: 
                    310: enum {
                    311:        kSynchronousIOCommandKind       = 0x00000001,
                    312:        kAsynchronousIOCommandKind      = 0x00000002,
                    313:        kImmediateIOCommandKind         = 0x00000004
                    314: };
                    315: 
                    316: struct DriverInitInfo {
                    317:        DriverRefNum                                    refNum;
                    318:        RegEntryID                                              deviceEntry;
                    319: };
                    320: struct DriverFinalInfo {
                    321:        DriverRefNum                                    refNum;
                    322:        RegEntryID                                              deviceEntry;
                    323: };
                    324: typedef struct DriverInitInfo DriverInitInfo, *DriverInitInfoPtr;
                    325: 
                    326: typedef struct DriverInitInfo DriverReplaceInfo, *DriverReplaceInfoPtr;
                    327: 
                    328: typedef struct DriverFinalInfo DriverFinalInfo, *DriverFinalInfoPtr;
                    329: 
                    330: typedef struct DriverFinalInfo DriverSupersededInfo, *DriverSupersededInfoPtr;
                    331: 
                    332: /* Contents are command specific*/
                    333: union IOCommandContents {
                    334:        ParmBlkPtr                                              pb;
                    335:        DriverInitInfoPtr                               initialInfo;
                    336:        DriverFinalInfoPtr                              finalInfo;
                    337:        DriverReplaceInfoPtr                    replaceInfo;
                    338:        DriverSupersededInfoPtr                 supersededInfo;
                    339: };
                    340: typedef union IOCommandContents IOCommandContents;
                    341: 
                    342: typedef OSErr (DriverEntryPoint)(AddressSpaceID SpaceID, IOCommandID CommandID, IOCommandContents Contents, IOCommandCode Code, IOCommandKind Kind);
                    343: typedef DriverEntryPoint *DriverEntryPointPtr;
                    344: 
                    345: /* Driver Typing Information Used to Match Drivers With Devices */
                    346: struct DriverType {
                    347:        Str31                                                   nameInfoStr;                            /* Driver Name/Info String*/
                    348:        NumVersion                                              version;                                        /* Driver Version Number*/
                    349: };
                    350: typedef struct DriverType DriverType, *DriverTypePtr;
                    351: 
                    352: /* OS Runtime Information Used to Setup and Maintain a Driver's Runtime Environment */
                    353: typedef OptionBits RuntimeOptions;
                    354: 
                    355: 
                    356: enum {
                    357:        kDriverIsLoadedUponDiscovery = 0x00000001,                                      /* auto-load driver when discovered*/
                    358:        kDriverIsOpenedUponLoad         = 0x00000002,                                   /* auto-open driver when loaded*/
                    359:        kDriverIsUnderExpertControl     = 0x00000004,                                   /* I/O expert handles loads/opens*/
                    360:        kDriverIsConcurrent                     = 0x00000008,                                   /* supports concurrent requests*/
                    361:        kDriverQueuesIOPB                       = 0x00000010                                    /* device manager doesn't queue IOPB*/
                    362: };
                    363: 
                    364: struct DriverOSRuntime {
                    365:        RuntimeOptions                                  driverRuntime;                          /* Options for OS Runtime*/
                    366:        Str31                                                   driverName;                                     /* Driver's name to the OS*/
                    367:        UInt32                                                  driverDescReserved[8];          /* Reserved area*/
                    368: };
                    369: typedef struct DriverOSRuntime DriverOSRuntime, *DriverOSRuntimePtr;
                    370: 
                    371: /* OS Service Information Used To Declare What APIs a Driver Supports */
                    372: typedef UInt32 ServiceCount;
                    373: 
                    374: struct DriverServiceInfo {
                    375:        OSType                                                  serviceCategory;                        /* Service Category Name*/
                    376:        OSType                                                  serviceType;                            /* Type within Category*/
                    377:        NumVersion                                              serviceVersion;                         /* Version of service*/
                    378: };
                    379: typedef struct DriverServiceInfo DriverServiceInfo, *DriverServiceInfoPtr;
                    380: 
                    381: struct DriverOSService {
                    382:        ServiceCount                                    nServices;                                      /* Number of Services Supported*/
                    383:        DriverServiceInfo                               service[1];                                     /* The List of Services (at least one)*/
                    384: };
                    385: typedef struct DriverOSService DriverOSService, *DriverOSServicePtr;
                    386: 
                    387: /* Categories */
                    388: 
                    389: enum {
                    390:        kServiceCategoryDisplay         = 'disp',                                               /* Display Manager*/
                    391:        kServiceCategoryOpenTransport = 'otan',                                         /* Open Transport*/
                    392:        kServiceCategoryBlockStorage = 'blok',                                          /* Block Storage*/
                    393:        kServiceCategoryNdrvDriver      = 'ndrv',                                               /* Generic Native Driver*/
                    394:        kServiceCategoryScsiSIM         = 'scsi'
                    395: };
                    396: 
                    397: /* Ndrv ServiceCategory Types */
                    398: enum {
                    399:        kNdrvTypeIsGeneric                      = 'genr',                                               /* generic*/
                    400:        kNdrvTypeIsVideo                        = 'vido',                                               /* video*/
                    401:        kNdrvTypeIsBlockStorage         = 'blok',                                               /* block storage*/
                    402:        kNdrvTypeIsNetworking           = 'netw',                                               /* networking*/
                    403:        kNdrvTypeIsSerial                       = 'serl',                                               /* serial*/
                    404:        kNdrvTypeIsSound                        = 'sond',                                               /* sound*/
                    405:        kNdrvTypeIsBusBridge            = 'brdg'
                    406: };
                    407: 
                    408: /*     The Driver Description */
                    409: enum {
                    410:        kTheDescriptionSignature        = 'mtej'
                    411: };
                    412: 
                    413: typedef UInt32 DriverDescVersion;
                    414: 
                    415: 
                    416: enum {
                    417:        kInitialDriverDescriptor        = 0
                    418: };
                    419: 
                    420: struct DriverDescription {
                    421:        OSType                                                  driverDescSignature;            /* Signature field of this structure*/
                    422:        DriverDescVersion                               driverDescVersion;                      /* Version of this data structure*/
                    423:        DriverType                                              driverType;                                     /* Type of Driver*/
                    424:        DriverOSRuntime                                 driverOSRuntimeInfo;            /* OS Runtime Requirements of Driver*/
                    425:        DriverOSService                                 driverServices;                         /* Apple Service API Membership*/
                    426: };
                    427: typedef struct DriverDescription DriverDescription, *DriverDescriptionPtr;
                    428: 
                    429: /* Record to describe a file-based driver candidate */
                    430: struct FileBasedDriverRecord {
                    431:        FSSpec                                                  theSpec;                                        /* file specification*/
                    432:        DriverType                                              theType;                                        /* nameInfoStr + version number*/
                    433:        Boolean                                                 compatibleProp;                         /* true if matched using a compatible name*/
                    434:        UInt8                                                   pad[3];                                         /* alignment*/
                    435: };
                    436: typedef struct FileBasedDriverRecord FileBasedDriverRecord, *FileBasedDriverRecordPtr;
                    437: 
                    438: /* Driver Loader API */
                    439: #define DECLARE_DRIVERDESCRIPTION(N_ADDITIONAL_SERVICES)  \
                    440:        struct {                                        \
                    441:        DriverDescription       fixed;  \
                    442:        DriverServiceInfo       additional_service[N_ADDITIONAL_SERVICES-1]; \
                    443:        };
                    444: extern SInt16 HigherDriverVersion(NumVersion *driverVersion1, NumVersion *driverVersion2);
                    445: extern OSErr VerifyFragmentAsDriver(CFragConnectionID fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc);
                    446: extern OSErr GetDriverMemoryFragment(Ptr memAddr, long length, ConstStr63Param fragName, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc);
                    447: extern OSErr GetDriverDiskFragment(FSSpecPtr fragmentSpec, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc);
                    448: extern OSErr InstallDriverFromFragment(CFragConnectionID fragmentConnID, RegEntryIDPtr device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum);
                    449: extern OSErr InstallDriverFromFile(FSSpecPtr fragmentSpec, RegEntryIDPtr device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum);
                    450: extern OSErr InstallDriverFromMemory(Ptr memory, long length, ConstStr63Param fragName, RegEntryIDPtr device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum);
                    451: extern OSErr InstallDriverFromDisk(Ptr theDriverName, RegEntryIDPtr theDevice, UnitNumber theBeginningUnit, UnitNumber theEndingUnit, DriverRefNum *theRefNum);
                    452: extern OSErr FindDriversForDevice(RegEntryIDPtr device, FSSpec *fragmentSpec, DriverDescription *fileDriverDesc, Ptr *memAddr, long *length, StringPtr fragName, DriverDescription *memDriverDesc);
                    453: extern OSErr FindDriverCandidates(RegEntryIDPtr deviceID, Ptr *propBasedDriver, RegPropertyValueSize *propBasedDriverSize, StringPtr deviceName, DriverType *propBasedDriverType, Boolean *gotPropBasedDriver, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount *nFileBasedDrivers);
                    454: extern OSErr ScanDriverCandidates(RegEntryIDPtr deviceID, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount nFileBasedDrivers, FileBasedDriverRecordPtr matchingDrivers, ItemCount *nMatchingDrivers);
                    455: extern OSErr GetDriverForDevice(RegEntryIDPtr device, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc);
                    456: extern OSErr InstallDriverForDevice(RegEntryIDPtr device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum);
                    457: extern OSErr SetDriverClosureMemory(CFragConnectionID fragmentConnID, Boolean holdDriverMemory);
                    458: extern OSErr ReplaceDriverWithFragment(DriverRefNum theRefNum, CFragConnectionID fragmentConnID);
                    459: extern OSErr GetDriverInformation(DriverRefNum refNum, UnitNumber *unitNum, DriverFlags *flags, DriverOpenCount *count, StringPtr name, RegEntryID *device, CFragHFSLocator *driverLoadLocation, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescription *driverDesc);
                    460: extern OSErr OpenInstalledDriver(DriverRefNum refNum, SInt8 ioPermission);
                    461: extern OSErr RenameDriver(DriverRefNum refNum, StringPtr newDriverName);
                    462: extern OSErr RemoveDriver(DriverRefNum refNum, Boolean immediate);
                    463: extern OSErr LookupDrivers(UnitNumber beginningUnit, UnitNumber endingUnit, Boolean emptyUnits, ItemCount *returnedRefNums, DriverRefNum *refNums);
                    464: extern UnitNumber HighestUnitNumber(void);
                    465: extern OSErr DriverGestaltOn(DriverRefNum refNum);
                    466: extern OSErr DriverGestaltOff(DriverRefNum refNum);
                    467: extern Boolean DriverGestaltIsOn(DriverFlags flags);
                    468: 
                    469: #if !OLDROUTINELOCATIONS
                    470: 
                    471: #if !GENERATINGCFM
                    472: #pragma parameter __D0 PBOpenSync(__A0)
                    473: #endif
                    474: extern pascal OSErr PBOpenSync(ParmBlkPtr paramBlock)
                    475:  ONEWORDINLINE(0xA000);
                    476: 
                    477: #if !GENERATINGCFM
                    478: #pragma parameter __D0 PBOpenAsync(__A0)
                    479: #endif
                    480: extern pascal OSErr PBOpenAsync(ParmBlkPtr paramBlock)
                    481:  ONEWORDINLINE(0xA400);
                    482: 
                    483: #if !GENERATINGCFM
                    484: #pragma parameter __D0 PBOpenImmed(__A0)
                    485: #endif
                    486: extern pascal OSErr PBOpenImmed(ParmBlkPtr paramBlock)
                    487:  ONEWORDINLINE(0xA200);
                    488: 
                    489: #if !GENERATINGCFM
                    490: #pragma parameter __D0 PBCloseSync(__A0)
                    491: #endif
                    492: extern pascal OSErr PBCloseSync(ParmBlkPtr paramBlock)
                    493:  ONEWORDINLINE(0xA001);
                    494: 
                    495: #if !GENERATINGCFM
                    496: #pragma parameter __D0 PBCloseAsync(__A0)
                    497: #endif
                    498: extern pascal OSErr PBCloseAsync(ParmBlkPtr paramBlock)
                    499:  ONEWORDINLINE(0xA401);
                    500: 
                    501: #if !GENERATINGCFM
                    502: #pragma parameter __D0 PBCloseImmed(__A0)
                    503: #endif
                    504: extern pascal OSErr PBCloseImmed(ParmBlkPtr paramBlock)
                    505:  ONEWORDINLINE(0xA201);
                    506: 
                    507: #if !GENERATINGCFM
                    508: #pragma parameter __D0 PBReadSync(__A0)
                    509: #endif
                    510: extern pascal OSErr PBReadSync(ParmBlkPtr paramBlock)
                    511:  ONEWORDINLINE(0xA002);
                    512: 
                    513: #if !GENERATINGCFM
                    514: #pragma parameter __D0 PBReadAsync(__A0)
                    515: #endif
                    516: extern pascal OSErr PBReadAsync(ParmBlkPtr paramBlock)
                    517:  ONEWORDINLINE(0xA402);
                    518: 
                    519: #if !GENERATINGCFM
                    520: #pragma parameter __D0 PBReadImmed(__A0)
                    521: #endif
                    522: extern pascal OSErr PBReadImmed(ParmBlkPtr paramBlock)
                    523:  ONEWORDINLINE(0xA202);
                    524: 
                    525: #if !GENERATINGCFM
                    526: #pragma parameter __D0 PBWriteSync(__A0)
                    527: #endif
                    528: extern pascal OSErr PBWriteSync(ParmBlkPtr paramBlock)
                    529:  ONEWORDINLINE(0xA003);
                    530: 
                    531: #if !GENERATINGCFM
                    532: #pragma parameter __D0 PBWriteAsync(__A0)
                    533: #endif
                    534: extern pascal OSErr PBWriteAsync(ParmBlkPtr paramBlock)
                    535:  ONEWORDINLINE(0xA403);
                    536: 
                    537: #if !GENERATINGCFM
                    538: #pragma parameter __D0 PBWriteImmed(__A0)
                    539: #endif
                    540: extern pascal OSErr PBWriteImmed(ParmBlkPtr paramBlock)
                    541:  ONEWORDINLINE(0xA203);
                    542: extern pascal void AddDrive(short drvrRefNum, short drvNum, DrvQElPtr qEl);
                    543: extern pascal QHdrPtr GetDrvQHdr(void)
                    544:  THREEWORDINLINE(0x2EBC, 0x0000, 0x0308);
                    545: #endif
                    546: /* Control Panel Default Proc */
                    547: typedef pascal long (*ControlPanelDefProcPtr)(short message, short item, short numItems, short cPanelID, EventRecord *theEvent, long cdevValue, DialogPtr cpDialog);
                    548: 
                    549: #if GENERATINGCFM
                    550: typedef UniversalProcPtr ControlPanelDefUPP;
                    551: #else
                    552: typedef ControlPanelDefProcPtr ControlPanelDefUPP;
                    553: #endif
                    554: 
                    555: enum {
                    556:        uppControlPanelDefProcInfo = kPascalStackBased
                    557:                 | RESULT_SIZE(SIZE_CODE(sizeof(long)))
                    558:                 | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
                    559:                 | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
                    560:                 | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
                    561:                 | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
                    562:                 | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(EventRecord*)))
                    563:                 | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long)))
                    564:                 | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(DialogPtr)))
                    565: };
                    566: 
                    567: #if GENERATINGCFM
                    568: #define NewControlPanelDefProc(userRoutine)            \
                    569:                (ControlPanelDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlPanelDefProcInfo, GetCurrentArchitecture())
                    570: #else
                    571: #define NewControlPanelDefProc(userRoutine)            \
                    572:                ((ControlPanelDefUPP) (userRoutine))
                    573: #endif
                    574: 
                    575: #if GENERATINGCFM
                    576: #define CallControlPanelDefProc(userRoutine, message, item, numItems, cPanelID, theEvent, cdevValue, cpDialog)         \
                    577:                CallUniversalProc((UniversalProcPtr)(userRoutine), uppControlPanelDefProcInfo, (message), (item), (numItems), (cPanelID), (theEvent), (cdevValue), (cpDialog))
                    578: #else
                    579: #define CallControlPanelDefProc(userRoutine, message, item, numItems, cPanelID, theEvent, cdevValue, cpDialog)         \
                    580:                (*(userRoutine))((message), (item), (numItems), (cPanelID), (theEvent), (cdevValue), (cpDialog))
                    581: #endif
                    582: 
                    583: extern pascal DCtlHandle GetDCtlEntry(short refNum);
                    584: /*
                    585:        SetChooserAlert used to simply set a bit in a low-mem global
                    586:        to tell the Chooser not to display its warning message when
                    587:        the printer is changed. However, under MultiFinder and System 7,
                    588:        this low-mem is swapped out when a layer change occurs, and the
                    589:        Chooser never sees the change. It is obsolete, and completely
                    590:        unsupported on the PowerPC. 68K apps can still call it if they
                    591:        wish.
                    592: */
                    593: #if OLDROUTINENAMES && !GENERATINGCFM
                    594: extern pascal Boolean SetChooserAlert(Boolean f);
                    595: #endif
                    596: 
                    597: #if !GENERATINGCFM
                    598: #pragma parameter __D0 DriverInstall(__A0, __D0)
                    599: #endif
                    600: extern pascal OSErr DriverInstall(DRVRHeaderPtr drvrPtr, short refNum)
                    601:  ONEWORDINLINE(0xA03D);
                    602: 
                    603: #if !GENERATINGCFM
                    604: #pragma parameter __D0 DriverInstallReserveMem(__A0, __D0)
                    605: #endif
                    606: extern pascal OSErr DriverInstallReserveMem(DRVRHeaderPtr drvrPtr, short refNum)
                    607:  ONEWORDINLINE(0xA43D);
                    608: 
                    609: #if !GENERATINGCFM
                    610: #pragma parameter __D0 DrvrRemove(__D0)
                    611: #endif
                    612: extern pascal OSErr DrvrRemove(short refNum)
                    613:  ONEWORDINLINE(0xA03E);
                    614: #define DriverRemove(refNum) DrvrRemove(refNum)
                    615: extern pascal OSErr OpenDriver(ConstStr255Param name, short *drvrRefNum);
                    616: extern pascal OSErr CloseDriver(short refNum);
                    617: extern pascal OSErr Control(short refNum, short csCode, const void *csParamPtr);
                    618: extern pascal OSErr Status(short refNum, short csCode, void *csParamPtr);
                    619: extern pascal OSErr KillIO(short refNum);
                    620: 
                    621: #if !GENERATINGCFM
                    622: #pragma parameter __D0 PBControlSync(__A0)
                    623: #endif
                    624: extern pascal OSErr PBControlSync(ParmBlkPtr paramBlock)
                    625:  ONEWORDINLINE(0xA004);
                    626: 
                    627: #if !GENERATINGCFM
                    628: #pragma parameter __D0 PBControlAsync(__A0)
                    629: #endif
                    630: extern pascal OSErr PBControlAsync(ParmBlkPtr paramBlock)
                    631:  ONEWORDINLINE(0xA404);
                    632: 
                    633: #if !GENERATINGCFM
                    634: #pragma parameter __D0 PBControlImmed(__A0)
                    635: #endif
                    636: extern pascal OSErr PBControlImmed(ParmBlkPtr paramBlock)
                    637:  ONEWORDINLINE(0xA204);
                    638: 
                    639: #if !GENERATINGCFM
                    640: #pragma parameter __D0 PBStatusSync(__A0)
                    641: #endif
                    642: extern pascal OSErr PBStatusSync(ParmBlkPtr paramBlock)
                    643:  ONEWORDINLINE(0xA005);
                    644: 
                    645: #if !GENERATINGCFM
                    646: #pragma parameter __D0 PBStatusAsync(__A0)
                    647: #endif
                    648: extern pascal OSErr PBStatusAsync(ParmBlkPtr paramBlock)
                    649:  ONEWORDINLINE(0xA405);
                    650: 
                    651: #if !GENERATINGCFM
                    652: #pragma parameter __D0 PBStatusImmed(__A0)
                    653: #endif
                    654: extern pascal OSErr PBStatusImmed(ParmBlkPtr paramBlock)
                    655:  ONEWORDINLINE(0xA205);
                    656: 
                    657: #if !GENERATINGCFM
                    658: #pragma parameter __D0 PBKillIOSync(__A0)
                    659: #endif
                    660: extern pascal OSErr PBKillIOSync(ParmBlkPtr paramBlock)
                    661:  ONEWORDINLINE(0xA006);
                    662: 
                    663: #if !GENERATINGCFM
                    664: #pragma parameter __D0 PBKillIOAsync(__A0)
                    665: #endif
                    666: extern pascal OSErr PBKillIOAsync(ParmBlkPtr paramBlock)
                    667:  ONEWORDINLINE(0xA406);
                    668: 
                    669: #if !GENERATINGCFM
                    670: #pragma parameter __D0 PBKillIOImmed(__A0)
                    671: #endif
                    672: extern pascal OSErr PBKillIOImmed(ParmBlkPtr paramBlock)
                    673:  ONEWORDINLINE(0xA206);
                    674: extern pascal short OpenDeskAcc(ConstStr255Param deskAccName)
                    675:  ONEWORDINLINE(0xA9B6);
                    676: extern pascal void CloseDeskAcc(short refNum)
                    677:  ONEWORDINLINE(0xA9B7);
                    678: #if CGLUESUPPORTED
                    679: extern short opendeskacc(const char *deskAccName);
                    680: extern OSErr opendriver(const char *driverName, short *refNum);
                    681: #endif
                    682: #if OLDROUTINENAMES
                    683: /*
                    684:        The PBxxx() routines are obsolete.  
                    685:        
                    686:        Use the PBxxxSync(), PBxxxAsync(), or PBxxxImmed version instead.
                    687: */
                    688: #define PBControl(pb, async) ((async) ? PBControlAsync(pb) : PBControlSync(pb))
                    689: #define PBStatus(pb, async) ((async) ? PBStatusAsync(pb) : PBStatusSync(pb))
                    690: #define PBKillIO(pb, async) ((async) ? PBKillIOAsync(pb) : PBKillIOSync(pb))
                    691: #if !OLDROUTINELOCATIONS
                    692: #define PBOpen(pb, async) ((async) ? PBOpenAsync(pb) : PBOpenSync(pb))
                    693: #define PBClose(pb, async) ((async) ? PBCloseAsync(pb) : PBCloseSync(pb))
                    694: #define PBRead(pb, async) ((async) ? PBReadAsync(pb) : PBReadSync(pb))
                    695: #define PBWrite(pb, async) ((async) ? PBWriteAsync(pb) : PBWriteSync(pb))
                    696: #endif
                    697: #endif
                    698: 
                    699: #if PRAGMA_IMPORT_SUPPORTED
                    700: #pragma import off
                    701: #endif
                    702: 
                    703: #if PRAGMA_ALIGN_SUPPORTED
                    704: #pragma options align=reset
                    705: #endif
                    706: 
                    707: #ifdef __cplusplus
                    708: }
                    709: #endif
                    710: 
                    711: #endif /* __DEVICES__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.