Files.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:276k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       Files.h
  3.  
  4.      Contains:   File Manager (MFS, HFS, and HFS+) Interfaces.
  5.  
  6.      Version:    Technology: Mac OS 8.5
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1985-2001 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __FILES__
  18. #define __FILES__
  19. #ifndef __MACTYPES__
  20. #include "MacTypes.h"
  21. #endif
  22. #ifndef __MIXEDMODE__
  23. #include "MixedMode.h"
  24. #endif
  25. #ifndef __OSUTILS__
  26. #include "OSUtils.h"
  27. #endif
  28. #ifndef __TEXTCOMMON__
  29. #include "TextCommon.h"
  30. #endif
  31. #ifndef __UTCUTILS__
  32. #include "UTCUtils.h"
  33. #endif
  34. /* Finder constants were moved to Finder.* */
  35. #ifndef __FINDER__
  36. #include "Finder.h"
  37. #endif
  38. #if PRAGMA_ONCE
  39. #pragma once
  40. #endif
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47. #if PRAGMA_STRUCT_ALIGN
  48.     #pragma options align=mac68k
  49. #elif PRAGMA_STRUCT_PACKPUSH
  50.     #pragma pack(push, 2)
  51. #elif PRAGMA_STRUCT_PACK
  52.     #pragma pack(2)
  53. #endif
  54. /* HFSUniStr255 is the Unicode equivalent of Str255 */
  55. struct HFSUniStr255 {
  56.     UInt16                          length;                     /* number of unicode characters */
  57.     UniChar                         unicode[255];               /* unicode characters */
  58. };
  59. typedef struct HFSUniStr255             HFSUniStr255;
  60. typedef const HFSUniStr255 *            ConstHFSUniStr255Param;
  61. enum {
  62.     fsCurPerm                   = 0x00,                         /* open access permissions in ioPermssn */
  63.     fsRdPerm                    = 0x01,
  64.     fsWrPerm                    = 0x02,
  65.     fsRdWrPerm                  = 0x03,
  66.     fsRdWrShPerm                = 0x04,
  67.     fsRdDenyPerm                = 0x10,                         /* for use with OpenDeny and OpenRFDeny */
  68.     fsWrDenyPerm                = 0x20                          /* for use with OpenDeny and OpenRFDeny */
  69. };
  70. enum {
  71.     fsRtParID                   = 1,
  72.     fsRtDirID                   = 2
  73. };
  74. enum {
  75.     fsAtMark                    = 0,                            /* positioning modes in ioPosMode */
  76.     fsFromStart                 = 1,
  77.     fsFromLEOF                  = 2,
  78.     fsFromMark                  = 3
  79. };
  80. enum {
  81.                                                                 /* ioPosMode flags */
  82.     pleaseCacheBit              = 4,                            /* please cache this request */
  83.     pleaseCacheMask             = 0x0010,
  84.     noCacheBit                  = 5,                            /* please don't cache this request */
  85.     noCacheMask                 = 0x0020,
  86.     rdVerifyBit                 = 6,                            /* read verify mode */
  87.     rdVerifyMask                = 0x0040,
  88.     rdVerify                    = 64,                           /* old name of rdVerifyMask */
  89.     forceReadBit                = 6,
  90.     forceReadMask               = 0x0040,
  91.     newLineBit                  = 7,                            /* newline mode */
  92.     newLineMask                 = 0x0080,
  93.     newLineCharMask             = 0xFF00                        /* newline character */
  94. };
  95. enum {
  96.                                                                 /* CatSearch Search bitmask Constants */
  97.     fsSBPartialName             = 1,
  98.     fsSBFullName                = 2,
  99.     fsSBFlAttrib                = 4,
  100.     fsSBFlFndrInfo              = 8,
  101.     fsSBFlLgLen                 = 32,
  102.     fsSBFlPyLen                 = 64,
  103.     fsSBFlRLgLen                = 128,
  104.     fsSBFlRPyLen                = 256,
  105.     fsSBFlCrDat                 = 512,
  106.     fsSBFlMdDat                 = 1024,
  107.     fsSBFlBkDat                 = 2048,
  108.     fsSBFlXFndrInfo             = 4096,
  109.     fsSBFlParID                 = 8192,
  110.     fsSBNegate                  = 16384,
  111.     fsSBDrUsrWds                = 8,
  112.     fsSBDrNmFls                 = 16,
  113.     fsSBDrCrDat                 = 512,
  114.     fsSBDrMdDat                 = 1024,
  115.     fsSBDrBkDat                 = 2048,
  116.     fsSBDrFndrInfo              = 4096,
  117.     fsSBDrParID                 = 8192
  118. };
  119. enum {
  120.                                                                 /* CatSearch Search bit value Constants */
  121.     fsSBPartialNameBit          = 0,                            /*ioFileName points to a substring*/
  122.     fsSBFullNameBit             = 1,                            /*ioFileName points to a match string*/
  123.     fsSBFlAttribBit             = 2,                            /*search includes file attributes*/
  124.     fsSBFlFndrInfoBit           = 3,                            /*search includes finder info*/
  125.     fsSBFlLgLenBit              = 5,                            /*search includes data logical length*/
  126.     fsSBFlPyLenBit              = 6,                            /*search includes data physical length*/
  127.     fsSBFlRLgLenBit             = 7,                            /*search includes resource logical length*/
  128.     fsSBFlRPyLenBit             = 8,                            /*search includes resource physical length*/
  129.     fsSBFlCrDatBit              = 9,                            /*search includes create date*/
  130.     fsSBFlMdDatBit              = 10,                           /*search includes modification date*/
  131.     fsSBFlBkDatBit              = 11,                           /*search includes backup date*/
  132.     fsSBFlXFndrInfoBit          = 12,                           /*search includes extended finder info*/
  133.     fsSBFlParIDBit              = 13,                           /*search includes file's parent ID*/
  134.     fsSBNegateBit               = 14,                           /*return all non-matches*/
  135.     fsSBDrUsrWdsBit             = 3,                            /*search includes directory finder info*/
  136.     fsSBDrNmFlsBit              = 4,                            /*search includes directory valence*/
  137.     fsSBDrCrDatBit              = 9,                            /*directory-named version of fsSBFlCrDatBit*/
  138.     fsSBDrMdDatBit              = 10,                           /*directory-named version of fsSBFlMdDatBit*/
  139.     fsSBDrBkDatBit              = 11,                           /*directory-named version of fsSBFlBkDatBit*/
  140.     fsSBDrFndrInfoBit           = 12,                           /*directory-named version of fsSBFlXFndrInfoBit*/
  141.     fsSBDrParIDBit              = 13                            /*directory-named version of fsSBFlParIDBit*/
  142. };
  143. enum {
  144.                                                                 /* vMAttrib (GetVolParms) bit position constants */
  145.     bLimitFCBs                  = 31,
  146.     bLocalWList                 = 30,
  147.     bNoMiniFndr                 = 29,
  148.     bNoVNEdit                   = 28,
  149.     bNoLclSync                  = 27,
  150.     bTrshOffLine                = 26,
  151.     bNoSwitchTo                 = 25,
  152.     bNoDeskItems                = 20,
  153.     bNoBootBlks                 = 19,
  154.     bAccessCntl                 = 18,
  155.     bNoSysDir                   = 17,
  156.     bHasExtFSVol                = 16,
  157.     bHasOpenDeny                = 15,
  158.     bHasCopyFile                = 14,
  159.     bHasMoveRename              = 13,
  160.     bHasDesktopMgr              = 12,
  161.     bHasShortName               = 11,
  162.     bHasFolderLock              = 10,
  163.     bHasPersonalAccessPrivileges = 9,
  164.     bHasUserGroupList           = 8,
  165.     bHasCatSearch               = 7,
  166.     bHasFileIDs                 = 6,
  167.     bHasBTreeMgr                = 5,
  168.     bHasBlankAccessPrivileges   = 4,
  169.     bSupportsAsyncRequests      = 3,                            /* asynchronous requests to this volume are handled correctly at any time*/
  170.     bSupportsTrashVolumeCache   = 2
  171. };
  172. enum {
  173.                                                                 /* vMExtendedAttributes (GetVolParms) bit position constants */
  174.     bIsEjectable                = 0,                            /* volume is in an ejectable disk drive */
  175.     bSupportsHFSPlusAPIs        = 1,                            /* volume supports HFS Plus APIs directly (not through compatibility layer) */
  176.     bSupportsFSCatalogSearch    = 2,                            /* volume supports FSCatalogSearch */
  177.     bSupportsFSExchangeObjects  = 3,                            /* volume supports FSExchangeObjects */
  178.     bSupports2TBFiles           = 4,                            /* volume supports supports 2 terabyte files */
  179.     bSupportsLongNames          = 5,                            /* volume supports file/directory/volume names longer than 31 characters */
  180.     bSupportsMultiScriptNames   = 6,                            /* volume supports file/directory/volume names with characters from multiple script systems */
  181.     bSupportsNamedForks         = 7,                            /* volume supports forks beyond the data and resource forks */
  182.     bSupportsSubtreeIterators   = 8,                            /* volume supports recursive iterators not at the volume root */
  183.     bL2PCanMapFileBlocks        = 9,                            /* volume supports Lg2Phys SPI correctly */
  184.     bAllowCDiDataHandler        = 17                            /* allow QuickTime's CDi data handler to examine this volume */
  185. };
  186. enum {
  187.                                                                 /* Desktop Database icon Constants */
  188.     kLargeIcon                  = 1,
  189.     kLarge4BitIcon              = 2,
  190.     kLarge8BitIcon              = 3,
  191.     kSmallIcon                  = 4,
  192.     kSmall4BitIcon              = 5,
  193.     kSmall8BitIcon              = 6
  194. };
  195. enum {
  196.     kLargeIconSize              = 256,
  197.     kLarge4BitIconSize          = 512,
  198.     kLarge8BitIconSize          = 1024,
  199.     kSmallIconSize              = 64,
  200.     kSmall4BitIconSize          = 128,
  201.     kSmall8BitIconSize          = 256
  202. };
  203. enum {
  204.                                                                 /* Large Volume Constants */
  205.     kWidePosOffsetBit           = 8,
  206.     kUseWidePositioning         = (1 << kWidePosOffsetBit),
  207.     kMaximumBlocksIn4GB         = 0x007FFFFF
  208. };
  209. enum {
  210.                                                                 /* Foreign Privilege Model Identifiers */
  211.     fsUnixPriv                  = 1
  212. };
  213. enum {
  214.                                                                 /* Authentication Constants */
  215.     kNoUserAuthentication       = 1,
  216.     kPassword                   = 2,
  217.     kEncryptPassword            = 3,
  218.     kTwoWayEncryptPassword      = 6
  219. };
  220. /* mapping codes (ioObjType) for MapName & MapID */
  221. enum {
  222.     kOwnerID2Name               = 1,
  223.     kGroupID2Name               = 2,
  224.     kOwnerName2ID               = 3,
  225.     kGroupName2ID               = 4,                            /* types of oj object to be returned (ioObjType) for _GetUGEntry */
  226.     kReturnNextUser             = 1,
  227.     kReturnNextGroup            = 2,
  228.     kReturnNextUG               = 3
  229. };
  230. /* vcbFlags bits */
  231. enum {
  232.     kVCBFlagsIdleFlushBit       = 3,                            /* Set if volume should be flushed at idle time */
  233.     kVCBFlagsIdleFlushMask      = 0x0008,
  234.     kVCBFlagsHFSPlusAPIsBit     = 4,                            /* Set if volume implements HFS Plus APIs itself (not via emulation) */
  235.     kVCBFlagsHFSPlusAPIsMask    = 0x0010,
  236.     kVCBFlagsHardwareGoneBit    = 5,                            /* Set if disk driver returned a hardwareGoneErr to Read or Write */
  237.     kVCBFlagsHardwareGoneMask   = 0x0020,
  238.     kVCBFlagsVolumeDirtyBit     = 15,                           /* Set if volume information has changed since the last FlushVol */
  239.     kVCBFlagsVolumeDirtyMask    = 0x8000
  240. };
  241. /* ioFlAttrib bits returned by PBGetCatInfo */
  242. enum {
  243.                                                                 /* file and directory attributes in ioFlAttrib */
  244.     kioFlAttribLockedBit        = 0,                            /* Set if file or directory is locked */
  245.     kioFlAttribLockedMask       = 0x01,
  246.     kioFlAttribResOpenBit       = 2,                            /* Set if resource fork is open */
  247.     kioFlAttribResOpenMask      = 0x04,
  248.     kioFlAttribDataOpenBit      = 3,                            /* Set if data fork is open */
  249.     kioFlAttribDataOpenMask     = 0x08,
  250.     kioFlAttribDirBit           = 4,                            /* Set if this is a directory */
  251.     kioFlAttribDirMask          = 0x10,
  252.     ioDirFlg                    = 4,                            /* Set if this is a directory (old name) */
  253.     ioDirMask                   = 0x10,
  254.     kioFlAttribCopyProtBit      = 6,                            /* Set if AppleShare server "copy-protects" the file */
  255.     kioFlAttribCopyProtMask     = 0x40,
  256.     kioFlAttribFileOpenBit      = 7,                            /* Set if file (either fork) is open */
  257.     kioFlAttribFileOpenMask     = 0x80,                         /* ioFlAttrib for directories only */
  258.     kioFlAttribInSharedBit      = 2,                            /* Set if the directory is within a shared area of the directory hierarchy */
  259.     kioFlAttribInSharedMask     = 0x04,
  260.     kioFlAttribMountedBit       = 3,                            /* Set if the directory is a share point that is mounted by some user */
  261.     kioFlAttribMountedMask      = 0x08,
  262.     kioFlAttribSharePointBit    = 5,                            /* Set if the directory is a share point */
  263.     kioFlAttribSharePointMask   = 0x20
  264. };
  265. /* ioFCBFlags bits returned by PBGetFCBInfo */
  266. enum {
  267.     kioFCBWriteBit              = 8,                            /* Data can be written to this file */
  268.     kioFCBWriteMask             = 0x0100,
  269.     kioFCBResourceBit           = 9,                            /* This file is a resource fork */
  270.     kioFCBResourceMask          = 0x0200,
  271.     kioFCBWriteLockedBit        = 10,                           /* File has a locked byte range */
  272.     kioFCBWriteLockedMask       = 0x0400,
  273.     kioFCBLargeFileBit          = 11,                           /* File may grow beyond 2GB; cache uses file blocks, not bytes */
  274.     kioFCBLargeFileMask         = 0x0800,
  275.     kioFCBSharedWriteBit        = 12,                           /* File is open for shared write access */
  276.     kioFCBSharedWriteMask       = 0x1000,
  277.     kioFCBFileLockedBit         = 13,                           /* File is locked (write-protected) */
  278.     kioFCBFileLockedMask        = 0x2000,
  279.     kioFCBOwnClumpBit           = 14,                           /* File has clump size specified in FCB */
  280.     kioFCBOwnClumpMask          = 0x4000,
  281.     kioFCBModifiedBit           = 15,                           /* File has changed since it was last flushed */
  282.     kioFCBModifiedMask          = 0x8000
  283. };
  284. /* ioACUser bits returned by PBGetCatInfo */
  285. /* Note: you must clear ioACUser before calling PBGetCatInfo because some file systems do not use this field */
  286. enum {
  287.     kioACUserNoSeeFolderBit     = 0,                            /* Set if user does not have See Folder privileges */
  288.     kioACUserNoSeeFolderMask    = 0x01,
  289.     kioACUserNoSeeFilesBit      = 1,                            /* Set if user does not have See Files privileges */
  290.     kioACUserNoSeeFilesMask     = 0x02,
  291.     kioACUserNoMakeChangesBit   = 2,                            /* Set if user does not have Make Changes privileges */
  292.     kioACUserNoMakeChangesMask  = 0x04,
  293.     kioACUserNotOwnerBit        = 7,                            /* Set if user is not owner of the directory */
  294.     kioACUserNotOwnerMask       = 0x80
  295. };
  296. /* Folder and File values of access privileges in ioACAccess */
  297. enum {
  298.     kioACAccessOwnerBit         = 31,                           /* User is owner of directory */
  299.     kioACAccessOwnerMask        = (long)0x80000000,
  300.     kioACAccessBlankAccessBit   = 28,                           /* Directory has blank access privileges */
  301.     kioACAccessBlankAccessMask  = 0x10000000,
  302.     kioACAccessUserWriteBit     = 26,                           /* User has write privileges */
  303.     kioACAccessUserWriteMask    = 0x04000000,
  304.     kioACAccessUserReadBit      = 25,                           /* User has read privileges */
  305.     kioACAccessUserReadMask     = 0x02000000,
  306.     kioACAccessUserSearchBit    = 24,                           /* User has search privileges */
  307.     kioACAccessUserSearchMask   = 0x01000000,
  308.     kioACAccessEveryoneWriteBit = 18,                           /* Everyone has write privileges */
  309.     kioACAccessEveryoneWriteMask = 0x00040000,
  310.     kioACAccessEveryoneReadBit  = 17,                           /* Everyone has read privileges */
  311.     kioACAccessEveryoneReadMask = 0x00020000,
  312.     kioACAccessEveryoneSearchBit = 16,                          /* Everyone has search privileges */
  313.     kioACAccessEveryoneSearchMask = 0x00010000,
  314.     kioACAccessGroupWriteBit    = 10,                           /* Group has write privileges */
  315.     kioACAccessGroupWriteMask   = 0x00000400,
  316.     kioACAccessGroupReadBit     = 9,                            /* Group has read privileges */
  317.     kioACAccessGroupReadMask    = 0x00000200,
  318.     kioACAccessGroupSearchBit   = 8,                            /* Group has search privileges */
  319.     kioACAccessGroupSearchMask  = 0x00000100,
  320.     kioACAccessOwnerWriteBit    = 2,                            /* Owner has write privileges */
  321.     kioACAccessOwnerWriteMask   = 0x00000004,
  322.     kioACAccessOwnerReadBit     = 1,                            /* Owner has read privileges */
  323.     kioACAccessOwnerReadMask    = 0x00000002,
  324.     kioACAccessOwnerSearchBit   = 0,                            /* Owner has search privileges */
  325.     kioACAccessOwnerSearchMask  = 0x00000001,
  326.     kfullPrivileges             = 0x00070007,                   /* all privileges for everybody and owner*/
  327.     kownerPrivileges            = 0x00000007                    /* all privileges for owner only*/
  328. };
  329. /* values of user IDs and group IDs */
  330. enum {
  331.     knoUser                     = 0,
  332.     kadministratorUser          = 1
  333. };
  334. enum {
  335.     knoGroup                    = 0
  336. };
  337. struct GetVolParmsInfoBuffer {
  338.     short                           vMVersion;                  /*version number*/
  339.     long                            vMAttrib;                   /*bit vector of attributes (see vMAttrib constants)*/
  340.     Handle                          vMLocalHand;                /*handle to private data*/
  341.     long                            vMServerAdr;                /*AppleTalk server address or zero*/
  342.                                                                 /*       vMVersion 1 GetVolParmsInfoBuffer ends here */
  343.     long                            vMVolumeGrade;              /*approx. speed rating or zero if unrated*/
  344.     short                           vMForeignPrivID;            /*foreign privilege model supported or zero if none*/
  345.                                                                 /*       vMVersion 2 GetVolParmsInfoBuffer ends here */
  346.     long                            vMExtendedAttributes;       /*extended attribute bits (see vMExtendedAttributes constants)*/
  347.                                                                 /*       vMVersion 3 GetVolParmsInfoBuffer ends here */
  348. };
  349. typedef struct GetVolParmsInfoBuffer    GetVolParmsInfoBuffer;
  350. typedef union ParamBlockRec             ParamBlockRec;
  351. typedef ParamBlockRec *                 ParmBlkPtr;
  352. typedef CALLBACK_API( void , IOCompletionProcPtr )(ParmBlkPtr paramBlock);
  353. /*
  354.     WARNING: IOCompletionProcPtr uses register based parameters under classic 68k
  355.              and cannot be written in a high-level language without 
  356.              the help of mixed mode or assembly glue.
  357. */
  358. typedef REGISTER_UPP_TYPE(IOCompletionProcPtr)                  IOCompletionUPP;
  359. struct IOParam {
  360.     QElemPtr                        qLink;                      /*queue link in header*/
  361.     short                           qType;                      /*type byte for safety check*/
  362.     short                           ioTrap;                     /*FS: the Trap*/
  363.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  364.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  365.     volatile OSErr                  ioResult;                   /*result code*/
  366.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  367.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  368.     short                           ioRefNum;                   /*refNum for I/O operation*/
  369.     SInt8                           ioVersNum;                  /*version number*/
  370.     SInt8                           ioPermssn;                  /*Open: permissions (byte)*/
  371.     Ptr                             ioMisc;                     /*Rename: new name (GetEOF,SetEOF: logical end of file) (Open: optional ptr to buffer) (SetFileType: new type)*/
  372.     Ptr                             ioBuffer;                   /*data buffer Ptr*/
  373.     long                            ioReqCount;                 /*requested byte count; also = ioNewDirID*/
  374.     long                            ioActCount;                 /*actual byte count completed*/
  375.     short                           ioPosMode;                  /*initial file positioning*/
  376.     long                            ioPosOffset;                /*file position offset*/
  377. };
  378. typedef struct IOParam                  IOParam;
  379. typedef IOParam *                       IOParamPtr;
  380. struct FileParam {
  381.     QElemPtr                        qLink;                      /*queue link in header*/
  382.     short                           qType;                      /*type byte for safety check*/
  383.     short                           ioTrap;                     /*FS: the Trap*/
  384.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  385.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  386.     volatile OSErr                  ioResult;                   /*result code*/
  387.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  388.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  389.     short                           ioFRefNum;                  /*reference number*/
  390.     SInt8                           ioFVersNum;                 /*version number*/
  391.     SInt8                           filler1;
  392.     short                           ioFDirIndex;                /*GetFInfo directory index*/
  393.     SInt8                           ioFlAttrib;                 /*GetFInfo: in-use bit=7, lock bit=0*/
  394.     SInt8                           ioFlVersNum;                /*file version number*/
  395.     FInfo                           ioFlFndrInfo;               /*user info*/
  396.     unsigned long                   ioFlNum;                    /*GetFInfo: file number; TF- ioDirID*/
  397.     unsigned short                  ioFlStBlk;                  /*start file block (0 if none)*/
  398.     long                            ioFlLgLen;                  /*logical length (EOF)*/
  399.     long                            ioFlPyLen;                  /*physical length*/
  400.     unsigned short                  ioFlRStBlk;                 /*start block rsrc fork*/
  401.     long                            ioFlRLgLen;                 /*file logical length rsrc fork*/
  402.     long                            ioFlRPyLen;                 /*file physical length rsrc fork*/
  403.     unsigned long                   ioFlCrDat;                  /*file creation date& time (32 bits in secs)*/
  404.     unsigned long                   ioFlMdDat;                  /*last modified date and time*/
  405. };
  406. typedef struct FileParam                FileParam;
  407. typedef FileParam *                     FileParamPtr;
  408. struct VolumeParam {
  409.     QElemPtr                        qLink;                      /*queue link in header*/
  410.     short                           qType;                      /*type byte for safety check*/
  411.     short                           ioTrap;                     /*FS: the Trap*/
  412.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  413.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  414.     volatile OSErr                  ioResult;                   /*result code*/
  415.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  416.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  417.     long                            filler2;
  418.     short                           ioVolIndex;                 /*volume index number*/
  419.     unsigned long                   ioVCrDate;                  /*creation date and time*/
  420.     unsigned long                   ioVLsBkUp;                  /*last backup date and time*/
  421.     unsigned short                  ioVAtrb;                    /*volume attrib*/
  422.     unsigned short                  ioVNmFls;                   /*number of files in directory*/
  423.     unsigned short                  ioVDirSt;                   /*start block of file directory*/
  424.     short                           ioVBlLn;                    /*GetVolInfo: length of dir in blocks*/
  425.     unsigned short                  ioVNmAlBlks;                /*for compatibilty ioVNmAlBlks * ioVAlBlkSiz <= 2 GB*/
  426.     unsigned long                   ioVAlBlkSiz;                /*for compatibilty ioVAlBlkSiz is <= $0000FE00 (65,024)*/
  427.     unsigned long                   ioVClpSiz;                  /*GetVolInfo: bytes to allocate at a time*/
  428.     unsigned short                  ioAlBlSt;                   /*starting disk(512-byte) block in block map*/
  429.     unsigned long                   ioVNxtFNum;                 /*GetVolInfo: next free file number*/
  430.     unsigned short                  ioVFrBlk;                   /*GetVolInfo: # free alloc blks for this vol*/
  431. };
  432. typedef struct VolumeParam              VolumeParam;
  433. typedef VolumeParam *                   VolumeParamPtr;
  434. struct CntrlParam {
  435.     QElemPtr                        qLink;                      /*queue link in header*/
  436.     short                           qType;                      /*type byte for safety check*/
  437.     short                           ioTrap;                     /*FS: the Trap*/
  438.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  439.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  440.     volatile OSErr                  ioResult;                   /*result code*/
  441.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  442.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  443.     short                           ioCRefNum;                  /*refNum for I/O operation*/
  444.     short                           csCode;                     /*word for control status code*/
  445.     short                           csParam[11];                /*operation-defined parameters*/
  446. };
  447. typedef struct CntrlParam               CntrlParam;
  448. typedef CntrlParam *                    CntrlParamPtr;
  449. struct SlotDevParam {
  450.     QElemPtr                        qLink;                      /*queue link in header*/
  451.     short                           qType;                      /*type byte for safety check*/
  452.     short                           ioTrap;                     /*FS: the Trap*/
  453.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  454.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  455.     volatile OSErr                  ioResult;                   /*result code*/
  456.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  457.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  458.     short                           ioSRefNum;
  459.     SInt8                           ioSVersNum;
  460.     SInt8                           ioSPermssn;
  461.     Ptr                             ioSMix;
  462.     short                           ioSFlags;
  463.     SInt8                           ioSlot;
  464.     SInt8                           ioID;
  465. };
  466. typedef struct SlotDevParam             SlotDevParam;
  467. typedef SlotDevParam *                  SlotDevParamPtr;
  468. struct MultiDevParam {
  469.     QElemPtr                        qLink;                      /*queue link in header*/
  470.     short                           qType;                      /*type byte for safety check*/
  471.     short                           ioTrap;                     /*FS: the Trap*/
  472.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  473.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  474.     volatile OSErr                  ioResult;                   /*result code*/
  475.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  476.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  477.     short                           ioMRefNum;
  478.     SInt8                           ioMVersNum;
  479.     SInt8                           ioMPermssn;
  480.     Ptr                             ioMMix;
  481.     short                           ioMFlags;
  482.     Ptr                             ioSEBlkPtr;
  483. };
  484. typedef struct MultiDevParam            MultiDevParam;
  485. typedef MultiDevParam *                 MultiDevParamPtr;
  486. union ParamBlockRec {
  487.     IOParam                         ioParam;
  488.     FileParam                       fileParam;
  489.     VolumeParam                     volumeParam;
  490.     CntrlParam                      cntrlParam;
  491.     SlotDevParam                    slotDevParam;
  492.     MultiDevParam                   multiDevParam;
  493. };
  494. struct HFileInfo {
  495.     QElemPtr                        qLink;                      /*queue link in header*/
  496.     short                           qType;                      /*type byte for safety check*/
  497.     short                           ioTrap;                     /*FS: the Trap*/
  498.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  499.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  500.     volatile OSErr                  ioResult;                   /*result code*/
  501.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  502.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  503.     short                           ioFRefNum;
  504.     SInt8                           ioFVersNum;
  505.     SInt8                           filler1;
  506.     short                           ioFDirIndex;
  507.     SInt8                           ioFlAttrib;
  508.     SInt8                           ioACUser;
  509.     FInfo                           ioFlFndrInfo;
  510.     long                            ioDirID;
  511.     unsigned short                  ioFlStBlk;
  512.     long                            ioFlLgLen;
  513.     long                            ioFlPyLen;
  514.     unsigned short                  ioFlRStBlk;
  515.     long                            ioFlRLgLen;
  516.     long                            ioFlRPyLen;
  517.     unsigned long                   ioFlCrDat;
  518.     unsigned long                   ioFlMdDat;
  519.     unsigned long                   ioFlBkDat;
  520.     FXInfo                          ioFlXFndrInfo;
  521.     long                            ioFlParID;
  522.     long                            ioFlClpSiz;
  523. };
  524. typedef struct HFileInfo                HFileInfo;
  525. struct DirInfo {
  526.     QElemPtr                        qLink;                      /*queue link in header*/
  527.     short                           qType;                      /*type byte for safety check*/
  528.     short                           ioTrap;                     /*FS: the Trap*/
  529.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  530.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  531.     volatile OSErr                  ioResult;                   /*result code*/
  532.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  533.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  534.     short                           ioFRefNum;
  535.     SInt8                           ioFVersNum;
  536.     SInt8                           filler1;
  537.     short                           ioFDirIndex;
  538.     SInt8                           ioFlAttrib;
  539.     SInt8                           ioACUser;
  540.     DInfo                           ioDrUsrWds;
  541.     long                            ioDrDirID;
  542.     unsigned short                  ioDrNmFls;
  543.     short                           filler3[9];
  544.     unsigned long                   ioDrCrDat;
  545.     unsigned long                   ioDrMdDat;
  546.     unsigned long                   ioDrBkDat;
  547.     DXInfo                          ioDrFndrInfo;
  548.     long                            ioDrParID;
  549. };
  550. typedef struct DirInfo                  DirInfo;
  551. union CInfoPBRec {
  552.     HFileInfo                       hFileInfo;
  553.     DirInfo                         dirInfo;
  554. };
  555. typedef union CInfoPBRec                CInfoPBRec;
  556. typedef CInfoPBRec *                    CInfoPBPtr;
  557. struct XCInfoPBRec {
  558.     QElemPtr                        qLink;
  559.     short                           qType;
  560.     short                           ioTrap;
  561.     Ptr                             ioCmdAddr;
  562.     ProcPtr                         ioCompletion;               /* --> A pointer to a completion routine */
  563.     volatile OSErr                  ioResult;                   /* --> The result code of the function */
  564.     StringPtr                       ioNamePtr;                  /* --> Pointer to pathname to object */
  565.     short                           ioVRefNum;                  /* --> A volume specification */
  566.     long                            filler1;
  567.     StringPtr                       ioShortNamePtr;             /* <-> A pointer to the short name string buffer - required! */
  568.     short                           filler2;
  569.     short                           ioPDType;                   /* <-- The ProDOS file type */
  570.     long                            ioPDAuxType;                /* <-- The ProDOS aux type */
  571.     long                            filler3[2];
  572.     long                            ioDirID;                    /* --> A directory ID */
  573. };
  574. typedef struct XCInfoPBRec              XCInfoPBRec;
  575. typedef XCInfoPBRec *                   XCInfoPBPtr;
  576. /* Catalog position record */
  577. struct CatPositionRec {
  578.     long                            initialize;
  579.     short                           priv[6];
  580. };
  581. typedef struct CatPositionRec           CatPositionRec;
  582. struct FSSpec {
  583.     short                           vRefNum;
  584.     long                            parID;
  585.     StrFileName                     name;                       /* a Str63 on MacOS*/
  586. };
  587. typedef struct FSSpec                   FSSpec;
  588. typedef FSSpec *                        FSSpecPtr;
  589. typedef FSSpecPtr *                     FSSpecHandle;
  590. /* pointer to array of FSSpecs */
  591. typedef FSSpecPtr                       FSSpecArrayPtr;
  592. /* 
  593.     The only difference between "const FSSpec*" and "ConstFSSpecPtr" is 
  594.     that as a parameter, ConstFSSpecPtr is allowed to be NULL 
  595. */
  596. typedef const FSSpec *                  ConstFSSpecPtr;
  597. /* 
  598.     The following are structures to be filled out with the _PBGetVolMountInfo call
  599.     and passed back into the _PBVolumeMount call for external file system mounts. 
  600. */
  601. /* the "signature" of the file system */
  602. typedef OSType                          VolumeType;
  603. enum {
  604.                                                                 /* the signature for AppleShare */
  605.     AppleShareMediaType         = FOUR_CHAR_CODE('afpm')
  606. };
  607. /*
  608.     VolMount stuff was once in FSM.*
  609. */
  610. struct VolMountInfoHeader {
  611.     short                           length;                     /* length of location data (including self) */
  612.     VolumeType                      media;                      /* type of media.  Variable length data follows */
  613. };
  614. typedef struct VolMountInfoHeader       VolMountInfoHeader;
  615. typedef VolMountInfoHeader *            VolMountInfoPtr;
  616. /* The new volume mount info record.  The old one is included for compatibility. 
  617.     the new record allows access by foriegn filesystems writers to the flags 
  618.     portion of the record. This portion is now public.  
  619. */
  620. struct VolumeMountInfoHeader {
  621.     short                           length;                     /* length of location data (including self) */
  622.     VolumeType                      media;                      /* type of media (must be registered with Apple) */
  623.     short                           flags;                      /* volume mount flags. Variable length data follows */
  624. };
  625. typedef struct VolumeMountInfoHeader    VolumeMountInfoHeader;
  626. typedef VolumeMountInfoHeader *         VolumeMountInfoHeaderPtr;
  627. /* volume mount flags */
  628. enum {
  629.     volMountNoLoginMsgFlagBit   = 0,                            /* Input to VolumeMount: If set, the file system */
  630.     volMountNoLoginMsgFlagMask  = 0x0001,                       /*  should suppresss any log-in message/greeting dialog */
  631.     volMountExtendedFlagsBit    = 7,                            /* Input to VolumeMount: If set, the mount info is a */
  632.     volMountExtendedFlagsMask   = 0x0080,                       /*  AFPXVolMountInfo record for 3.7 AppleShare Client */
  633.     volMountInteractBit         = 15,                           /* Input to VolumeMount: If set, it's OK for the file system */
  634.     volMountInteractMask        = 0x8000,                       /*  to perform user interaction to mount the volume */
  635.     volMountChangedBit          = 14,                           /* Output from VoumeMount: If set, the volume was mounted, but */
  636.     volMountChangedMask         = 0x4000,                       /*  the volume mounting information record needs to be updated. */
  637.     volMountFSReservedMask      = 0x00FF,                       /* bits 0-7 are defined by each file system for its own use */
  638.     volMountSysReservedMask     = 0xFF00                        /* bits 8-15 are reserved for Apple system use */
  639. };
  640. struct AFPVolMountInfo {
  641.     short                           length;                     /* length of location data (including self) */
  642.     VolumeType                      media;                      /* type of media */
  643.     short                           flags;                      /* bits for no messages, no reconnect */
  644.     SInt8                           nbpInterval;                /* NBP Interval parameter (IM2, p.322) */
  645.     SInt8                           nbpCount;                   /* NBP Interval parameter (IM2, p.322) */
  646.     short                           uamType;                    /* User Authentication Method */
  647.     short                           zoneNameOffset;             /* short positive offset from start of struct to Zone Name */
  648.     short                           serverNameOffset;           /* offset to pascal Server Name string */
  649.     short                           volNameOffset;              /* offset to pascal Volume Name string */
  650.     short                           userNameOffset;             /* offset to pascal User Name string */
  651.     short                           userPasswordOffset;         /* offset to pascal User Password string */
  652.     short                           volPasswordOffset;          /* offset to pascal Volume Password string */
  653.     char                            AFPData[144];               /* variable length data may follow */
  654. };
  655. typedef struct AFPVolMountInfo          AFPVolMountInfo;
  656. typedef AFPVolMountInfo *               AFPVolMountInfoPtr;
  657. /* AFPXVolMountInfo is the new AFP volume mount info record, requires the 3.7 AppleShare Client */
  658. struct AFPXVolMountInfo {
  659.     short                           length;                     /* length of location data (including self) */
  660.     VolumeType                      media;                      /* type of media */
  661.     short                           flags;                      /* bits for no messages, no reconnect */
  662.     SInt8                           nbpInterval;                /* NBP Interval parameter (IM2, p.322) */
  663.     SInt8                           nbpCount;                   /* NBP Interval parameter (IM2, p.322) */
  664.     short                           uamType;                    /* User Authentication Method type */
  665.     short                           zoneNameOffset;             /* short positive offset from start of struct to Zone Name */
  666.     short                           serverNameOffset;           /* offset to pascal Server Name string */
  667.     short                           volNameOffset;              /* offset to pascal Volume Name string */
  668.     short                           userNameOffset;             /* offset to pascal User Name string */
  669.     short                           userPasswordOffset;         /* offset to pascal User Password string */
  670.     short                           volPasswordOffset;          /* offset to pascal Volume Password string */
  671.     short                           extendedFlags;              /* extended flags word */
  672.     short                           uamNameOffset;              /* offset to a pascal UAM name string */
  673.     short                           alternateAddressOffset;     /* offset to Alternate Addresses in tagged format */
  674.     char                            AFPData[176];               /* variable length data may follow */
  675. };
  676. typedef struct AFPXVolMountInfo         AFPXVolMountInfo;
  677. typedef AFPXVolMountInfo *              AFPXVolMountInfoPtr;
  678. enum {
  679.     kAFPExtendedFlagsAlternateAddressMask = 1                   /*  bit in AFPXVolMountInfo.extendedFlags that means alternateAddressOffset is used*/
  680. };
  681. enum {
  682.                                                                 /* constants for use in AFPTagData.fType field*/
  683.     kAFPTagTypeIP               = 0x01,                         /* 4 byte IP address (MSB first)            */
  684.     kAFPTagTypeIPPort           = 0x02,                         /* 4 byte IP address, 2 byte port (MSB first)     */
  685.     kAFPTagTypeDDP              = 0x03,                         /* Net,Node,Socket Sent by the server, currently unused by the client */
  686.     kAFPTagTypeDNS              = 0x04                          /* DNS name in  address:port format   (total length variable up to 254 chars of dns name)          */
  687. };
  688. enum {
  689.                                                                 /* constants for use in AFPTagData.fLength field*/
  690.     kAFPTagLengthIP             = 0x06,
  691.     kAFPTagLengthIPPort         = 0x08,
  692.     kAFPTagLengthDDP            = 0x06
  693. };
  694. struct AFPTagData {
  695.     UInt8                           fLength;                    /* length of this data tag including the fLength field */
  696.     UInt8                           fType;
  697.     UInt8                           fData[1];                   /* variable length data */
  698. };
  699. typedef struct AFPTagData               AFPTagData;
  700. struct AFPAlternateAddress {
  701.                                                                 /* ooo.NOTE: fVersion was missing in 3.2 Universal Interfaces*/
  702.     UInt8                           fVersion;                   /* version of the structure (currently 0x00)*/
  703.     UInt8                           fAddressCount;
  704.     UInt8                           fAddressList[1];            /* actually variable length packed set of AFPTagData */
  705. };
  706. typedef struct AFPAlternateAddress      AFPAlternateAddress;
  707. struct DTPBRec {
  708.     QElemPtr                        qLink;                      /*queue link in header*/
  709.     short                           qType;                      /*type byte for safety check*/
  710.     short                           ioTrap;                     /*FS: the Trap*/
  711.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  712.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  713.     volatile OSErr                  ioResult;                   /*result code*/
  714.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  715.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  716.     short                           ioDTRefNum;                 /* desktop refnum */
  717.     short                           ioIndex;
  718.     long                            ioTagInfo;
  719.     Ptr                             ioDTBuffer;
  720.     long                            ioDTReqCount;
  721.     long                            ioDTActCount;
  722.     SInt8                           ioFiller1;
  723.     SInt8                           ioIconType;
  724.     short                           ioFiller2;
  725.     long                            ioDirID;
  726.     OSType                          ioFileCreator;
  727.     OSType                          ioFileType;
  728.     long                            ioFiller3;
  729.     long                            ioDTLgLen;
  730.     long                            ioDTPyLen;
  731.     short                           ioFiller4[14];
  732.     long                            ioAPPLParID;
  733. };
  734. typedef struct DTPBRec                  DTPBRec;
  735. typedef DTPBRec *                       DTPBPtr;
  736. struct HIOParam {
  737.     QElemPtr                        qLink;                      /*queue link in header*/
  738.     short                           qType;                      /*type byte for safety check*/
  739.     short                           ioTrap;                     /*FS: the Trap*/
  740.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  741.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  742.     volatile OSErr                  ioResult;                   /*result code*/
  743.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  744.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  745.     short                           ioRefNum;
  746.     SInt8                           ioVersNum;
  747.     SInt8                           ioPermssn;
  748.     Ptr                             ioMisc;
  749.     Ptr                             ioBuffer;
  750.     long                            ioReqCount;
  751.     long                            ioActCount;
  752.     short                           ioPosMode;
  753.     long                            ioPosOffset;
  754. };
  755. typedef struct HIOParam                 HIOParam;
  756. typedef HIOParam *                      HIOParamPtr;
  757. struct HFileParam {
  758.     QElemPtr                        qLink;                      /*queue link in header*/
  759.     short                           qType;                      /*type byte for safety check*/
  760.     short                           ioTrap;                     /*FS: the Trap*/
  761.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  762.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  763.     volatile OSErr                  ioResult;                   /*result code*/
  764.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  765.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  766.     short                           ioFRefNum;
  767.     SInt8                           ioFVersNum;
  768.     SInt8                           filler1;
  769.     short                           ioFDirIndex;
  770.     SInt8                           ioFlAttrib;
  771.     SInt8                           ioFlVersNum;
  772.     FInfo                           ioFlFndrInfo;
  773.     long                            ioDirID;
  774.     unsigned short                  ioFlStBlk;
  775.     long                            ioFlLgLen;
  776.     long                            ioFlPyLen;
  777.     unsigned short                  ioFlRStBlk;
  778.     long                            ioFlRLgLen;
  779.     long                            ioFlRPyLen;
  780.     unsigned long                   ioFlCrDat;
  781.     unsigned long                   ioFlMdDat;
  782. };
  783. typedef struct HFileParam               HFileParam;
  784. typedef HFileParam *                    HFileParamPtr;
  785. struct HVolumeParam {
  786.     QElemPtr                        qLink;                      /*queue link in header*/
  787.     short                           qType;                      /*type byte for safety check*/
  788.     short                           ioTrap;                     /*FS: the Trap*/
  789.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  790.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  791.     volatile OSErr                  ioResult;                   /*result code*/
  792.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  793.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  794.     long                            filler2;
  795.     short                           ioVolIndex;
  796.     unsigned long                   ioVCrDate;
  797.     unsigned long                   ioVLsMod;
  798.     short                           ioVAtrb;
  799.     unsigned short                  ioVNmFls;
  800.     unsigned short                  ioVBitMap;
  801.     unsigned short                  ioAllocPtr;
  802.     unsigned short                  ioVNmAlBlks;
  803.     unsigned long                   ioVAlBlkSiz;
  804.     unsigned long                   ioVClpSiz;
  805.     unsigned short                  ioAlBlSt;
  806.     unsigned long                   ioVNxtCNID;
  807.     unsigned short                  ioVFrBlk;
  808.     unsigned short                  ioVSigWord;
  809.     short                           ioVDrvInfo;
  810.     short                           ioVDRefNum;
  811.     short                           ioVFSID;
  812.     unsigned long                   ioVBkUp;
  813.     short                           ioVSeqNum;
  814.     unsigned long                   ioVWrCnt;
  815.     unsigned long                   ioVFilCnt;
  816.     unsigned long                   ioVDirCnt;
  817.     long                            ioVFndrInfo[8];
  818. };
  819. typedef struct HVolumeParam             HVolumeParam;
  820. typedef HVolumeParam *                  HVolumeParamPtr;
  821. struct XIOParam {
  822.     QElemPtr                        qLink;
  823.     short                           qType;
  824.     short                           ioTrap;
  825.     Ptr                             ioCmdAddr;
  826.     IOCompletionUPP                 ioCompletion;
  827.     volatile OSErr                  ioResult;
  828.     StringPtr                       ioNamePtr;
  829.     short                           ioVRefNum;
  830.     short                           ioRefNum;
  831.     SInt8                           ioVersNum;
  832.     SInt8                           ioPermssn;
  833.     Ptr                             ioMisc;
  834.     Ptr                             ioBuffer;
  835.     long                            ioReqCount;
  836.     long                            ioActCount;
  837.     short                           ioPosMode;                  /* must have kUseWidePositioning bit set */
  838.     wide                            ioWPosOffset;               /* wide positioning offset */
  839. };
  840. typedef struct XIOParam                 XIOParam;
  841. typedef XIOParam *                      XIOParamPtr;
  842. struct XVolumeParam {
  843.     QElemPtr                        qLink;
  844.     short                           qType;
  845.     short                           ioTrap;
  846.     Ptr                             ioCmdAddr;
  847.     IOCompletionUPP                 ioCompletion;
  848.     volatile OSErr                  ioResult;
  849.     StringPtr                       ioNamePtr;
  850.     short                           ioVRefNum;
  851.     unsigned long                   ioXVersion;                 /* this XVolumeParam version (0) */
  852.     short                           ioVolIndex;
  853.     unsigned long                   ioVCrDate;
  854.     unsigned long                   ioVLsMod;
  855.     short                           ioVAtrb;
  856.     unsigned short                  ioVNmFls;
  857.     unsigned short                  ioVBitMap;
  858.     unsigned short                  ioAllocPtr;
  859.     unsigned short                  ioVNmAlBlks;
  860.     unsigned long                   ioVAlBlkSiz;
  861.     unsigned long                   ioVClpSiz;
  862.     unsigned short                  ioAlBlSt;
  863.     unsigned long                   ioVNxtCNID;
  864.     unsigned short                  ioVFrBlk;
  865.     unsigned short                  ioVSigWord;
  866.     short                           ioVDrvInfo;
  867.     short                           ioVDRefNum;
  868.     short                           ioVFSID;
  869.     unsigned long                   ioVBkUp;
  870.     short                           ioVSeqNum;
  871.     unsigned long                   ioVWrCnt;
  872.     unsigned long                   ioVFilCnt;
  873.     unsigned long                   ioVDirCnt;
  874.     long                            ioVFndrInfo[8];
  875.     UInt64                          ioVTotalBytes;              /* total number of bytes on volume */
  876.     UInt64                          ioVFreeBytes;               /* number of free bytes on volume */
  877. };
  878. typedef struct XVolumeParam             XVolumeParam;
  879. typedef XVolumeParam *                  XVolumeParamPtr;
  880. struct AccessParam {
  881.     QElemPtr                        qLink;                      /*queue link in header*/
  882.     short                           qType;                      /*type byte for safety check*/
  883.     short                           ioTrap;                     /*FS: the Trap*/
  884.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  885.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  886.     volatile OSErr                  ioResult;                   /*result code*/
  887.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  888.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  889.     short                           filler3;
  890.     short                           ioDenyModes;                /*access rights data*/
  891.     short                           filler4;
  892.     SInt8                           filler5;
  893.     SInt8                           ioACUser;                   /*access rights for directory only*/
  894.     long                            filler6;
  895.     long                            ioACOwnerID;                /*owner ID*/
  896.     long                            ioACGroupID;                /*group ID*/
  897.     long                            ioACAccess;                 /*access rights*/
  898.     long                            ioDirID;
  899. };
  900. typedef struct AccessParam              AccessParam;
  901. typedef AccessParam *                   AccessParamPtr;
  902. struct ObjParam {
  903.     QElemPtr                        qLink;                      /*queue link in header*/
  904.     short                           qType;                      /*type byte for safety check*/
  905.     short                           ioTrap;                     /*FS: the Trap*/
  906.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  907.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  908.     volatile OSErr                  ioResult;                   /*result code*/
  909.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  910.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  911.     short                           filler7;
  912.     short                           ioObjType;                  /*function code*/
  913.     StringPtr                       ioObjNamePtr;               /*ptr to returned creator/group name*/
  914.     long                            ioObjID;                    /*creator/group ID*/
  915. };
  916. typedef struct ObjParam                 ObjParam;
  917. typedef ObjParam *                      ObjParamPtr;
  918. struct CopyParam {
  919.     QElemPtr                        qLink;                      /*queue link in header*/
  920.     short                           qType;                      /*type byte for safety check*/
  921.     short                           ioTrap;                     /*FS: the Trap*/
  922.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  923.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  924.     volatile OSErr                  ioResult;                   /*result code*/
  925.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  926.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  927.     short                           ioDstVRefNum;               /*destination vol identifier*/
  928.     short                           filler8;
  929.     StringPtr                       ioNewName;                  /*ptr to destination pathname*/
  930.     StringPtr                       ioCopyName;                 /*ptr to optional name*/
  931.     long                            ioNewDirID;                 /*destination directory ID*/
  932.     long                            filler14;
  933.     long                            filler15;
  934.     long                            ioDirID;
  935. };
  936. typedef struct CopyParam                CopyParam;
  937. typedef CopyParam *                     CopyParamPtr;
  938. struct WDParam {
  939.     QElemPtr                        qLink;                      /*queue link in header*/
  940.     short                           qType;                      /*type byte for safety check*/
  941.     short                           ioTrap;                     /*FS: the Trap*/
  942.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  943.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  944.     volatile OSErr                  ioResult;                   /*result code*/
  945.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  946.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  947.     short                           filler9;
  948.     short                           ioWDIndex;
  949.     long                            ioWDProcID;
  950.     short                           ioWDVRefNum;
  951.     short                           filler10;
  952.     long                            filler11;
  953.     long                            filler12;
  954.     long                            filler13;
  955.     long                            ioWDDirID;
  956. };
  957. typedef struct WDParam                  WDParam;
  958. typedef WDParam *                       WDParamPtr;
  959. struct FIDParam {
  960.     QElemPtr                        qLink;                      /*queue link in header*/
  961.     short                           qType;                      /*type byte for safety check*/
  962.     short                           ioTrap;                     /*FS: the Trap*/
  963.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  964.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  965.     volatile OSErr                  ioResult;                   /*result code*/
  966.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  967.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  968.     long                            filler14;
  969.     StringPtr                       ioDestNamePtr;              /* dest file name */
  970.     long                            filler15;
  971.     long                            ioDestDirID;                /* dest file's directory id */
  972.     long                            filler16;
  973.     long                            filler17;
  974.     long                            ioSrcDirID;                 /* source file's directory id */
  975.     short                           filler18;
  976.     long                            ioFileID;                   /* file ID */
  977. };
  978. typedef struct FIDParam                 FIDParam;
  979. typedef FIDParam *                      FIDParamPtr;
  980. struct ForeignPrivParam {
  981.     QElemPtr                        qLink;                      /*queue link in header*/
  982.     short                           qType;                      /*type byte for safety check*/
  983.     short                           ioTrap;                     /*FS: the Trap*/
  984.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  985.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  986.     volatile OSErr                  ioResult;                   /*result code*/
  987.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  988.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  989.     long                            ioFiller21;
  990.     long                            ioFiller22;
  991.     Ptr                             ioForeignPrivBuffer;
  992.     long                            ioForeignPrivActCount;
  993.     long                            ioForeignPrivReqCount;
  994.     long                            ioFiller23;
  995.     long                            ioForeignPrivDirID;
  996.     long                            ioForeignPrivInfo1;
  997.     long                            ioForeignPrivInfo2;
  998.     long                            ioForeignPrivInfo3;
  999.     long                            ioForeignPrivInfo4;
  1000. };
  1001. typedef struct ForeignPrivParam         ForeignPrivParam;
  1002. typedef ForeignPrivParam *              ForeignPrivParamPtr;
  1003. struct CSParam {
  1004.     QElemPtr                        qLink;                      /*queue link in header*/
  1005.     short                           qType;                      /*type byte for safety check*/
  1006.     short                           ioTrap;                     /*FS: the Trap*/
  1007.     Ptr                             ioCmdAddr;                  /*FS: address to dispatch to*/
  1008.     IOCompletionUPP                 ioCompletion;               /*completion routine addr (0 for synch calls)*/
  1009.     volatile OSErr                  ioResult;                   /*result code*/
  1010.     StringPtr                       ioNamePtr;                  /*ptr to Vol:FileName string*/
  1011.     short                           ioVRefNum;                  /*volume refnum (DrvNum for Eject and MountVol)*/
  1012.     FSSpecPtr                       ioMatchPtr;                 /* match array */
  1013.     long                            ioReqMatchCount;            /* maximum allowable matches */
  1014.     long                            ioActMatchCount;            /* actual match count */
  1015.     long                            ioSearchBits;               /* search criteria selector */
  1016.     CInfoPBPtr                      ioSearchInfo1;              /* search values and range lower bounds */
  1017.     CInfoPBPtr                      ioSearchInfo2;              /* search values and range upper bounds */
  1018.     long                            ioSearchTime;               /* length of time to run search */
  1019.     CatPositionRec                  ioCatPosition;              /* current position in the catalog */
  1020.     Ptr                             ioOptBuffer;                /* optional performance enhancement buffer */
  1021.     long                            ioOptBufSize;               /* size of buffer pointed to by ioOptBuffer */
  1022. };
  1023. typedef struct CSParam                  CSParam;
  1024. typedef CSParam *                       CSParamPtr;
  1025. union HParamBlockRec {
  1026.     HIOParam                        ioParam;
  1027.     HFileParam                      fileParam;
  1028.     HVolumeParam                    volumeParam;
  1029.     AccessParam                     accessParam;
  1030.     ObjParam                        objParam;
  1031.     CopyParam                       copyParam;
  1032.     WDParam                         wdParam;
  1033.     FIDParam                        fidParam;
  1034.     CSParam                         csParam;
  1035.     ForeignPrivParam                foreignPrivParam;
  1036. };
  1037. typedef union HParamBlockRec            HParamBlockRec;
  1038. typedef HParamBlockRec *                HParmBlkPtr;
  1039. struct CMovePBRec {
  1040.     QElemPtr                        qLink;
  1041.     short                           qType;
  1042.     short                           ioTrap;
  1043.     Ptr                             ioCmdAddr;
  1044.     IOCompletionUPP                 ioCompletion;
  1045.     volatile OSErr                  ioResult;
  1046.     StringPtr                       ioNamePtr;
  1047.     short                           ioVRefNum;
  1048.     long                            filler1;
  1049.     StringPtr                       ioNewName;
  1050.     long                            filler2;
  1051.     long                            ioNewDirID;
  1052.     long                            filler3[2];
  1053.     long                            ioDirID;
  1054. };
  1055. typedef struct CMovePBRec               CMovePBRec;
  1056. typedef CMovePBRec *                    CMovePBPtr;
  1057. struct WDPBRec {
  1058.     QElemPtr                        qLink;
  1059.     short                           qType;
  1060.     short                           ioTrap;
  1061.     Ptr                             ioCmdAddr;
  1062.     IOCompletionUPP                 ioCompletion;
  1063.     volatile OSErr                  ioResult;
  1064.     StringPtr                       ioNamePtr;
  1065.     short                           ioVRefNum;
  1066.     short                           filler1;
  1067.     short                           ioWDIndex;
  1068.     long                            ioWDProcID;
  1069.     short                           ioWDVRefNum;
  1070.     short                           filler2[7];
  1071.     long                            ioWDDirID;
  1072. };
  1073. typedef struct WDPBRec                  WDPBRec;
  1074. typedef WDPBRec *                       WDPBPtr;
  1075. struct FCBPBRec {
  1076.     QElemPtr                        qLink;
  1077.     short                           qType;
  1078.     short                           ioTrap;
  1079.     Ptr                             ioCmdAddr;
  1080.     IOCompletionUPP                 ioCompletion;
  1081.     volatile OSErr                  ioResult;
  1082.     StringPtr                       ioNamePtr;
  1083.     short                           ioVRefNum;
  1084.     short                           ioRefNum;
  1085.     short                           filler;
  1086.     short                           ioFCBIndx;
  1087.     short                           filler1;
  1088.     long                            ioFCBFlNm;
  1089.     short                           ioFCBFlags;
  1090.     unsigned short                  ioFCBStBlk;
  1091.     long                            ioFCBEOF;
  1092.     long                            ioFCBPLen;
  1093.     long                            ioFCBCrPs;
  1094.     short                           ioFCBVRefNum;
  1095.     long                            ioFCBClpSiz;
  1096.     long                            ioFCBParID;
  1097. };
  1098. typedef struct FCBPBRec                 FCBPBRec;
  1099. typedef FCBPBRec *                      FCBPBPtr;
  1100. struct VCB {
  1101.     QElemPtr                        qLink;
  1102.     short                           qType;
  1103.     short                           vcbFlags;
  1104.     unsigned short                  vcbSigWord;
  1105.     unsigned long                   vcbCrDate;
  1106.     unsigned long                   vcbLsMod;
  1107.     short                           vcbAtrb;
  1108.     unsigned short                  vcbNmFls;
  1109.     short                           vcbVBMSt;
  1110.     short                           vcbAllocPtr;
  1111.     unsigned short                  vcbNmAlBlks;
  1112.     long                            vcbAlBlkSiz;
  1113.     long                            vcbClpSiz;
  1114.     short                           vcbAlBlSt;
  1115.     long                            vcbNxtCNID;
  1116.     unsigned short                  vcbFreeBks;
  1117.     Str27                           vcbVN;
  1118.     short                           vcbDrvNum;
  1119.     short                           vcbDRefNum;
  1120.     short                           vcbFSID;
  1121.     short                           vcbVRefNum;
  1122.     Ptr                             vcbMAdr;
  1123.     Ptr                             vcbBufAdr;
  1124.     short                           vcbMLen;
  1125.     short                           vcbDirIndex;
  1126.     short                           vcbDirBlk;
  1127.     unsigned long                   vcbVolBkUp;
  1128.     unsigned short                  vcbVSeqNum;
  1129.     long                            vcbWrCnt;
  1130.     long                            vcbXTClpSiz;
  1131.     long                            vcbCTClpSiz;
  1132.     unsigned short                  vcbNmRtDirs;
  1133.     long                            vcbFilCnt;
  1134.     long                            vcbDirCnt;
  1135.     long                            vcbFndrInfo[8];
  1136.     unsigned short                  vcbVCSize;
  1137.     unsigned short                  vcbVBMCSiz;
  1138.     unsigned short                  vcbCtlCSiz;
  1139.     unsigned short                  vcbXTAlBlks;
  1140.     unsigned short                  vcbCTAlBlks;
  1141.     short                           vcbXTRef;
  1142.     short                           vcbCTRef;
  1143.     Ptr                             vcbCtlBuf;
  1144.     long                            vcbDirIDM;
  1145.     short                           vcbOffsM;
  1146. };
  1147. typedef struct VCB                      VCB;
  1148. typedef VCB *                           VCBPtr;
  1149. struct DrvQEl {
  1150.     QElemPtr                        qLink;
  1151.     short                           qType;
  1152.     short                           dQDrive;
  1153.     short                           dQRefNum;
  1154.     short                           dQFSID;
  1155.     unsigned short                  dQDrvSz;
  1156.     unsigned short                  dQDrvSz2;
  1157. };
  1158. typedef struct DrvQEl                   DrvQEl;
  1159. typedef DrvQEl *                        DrvQElPtr;
  1160. #if OPAQUE_UPP_TYPES
  1161.     EXTERN_API(IOCompletionUPP)
  1162.     NewIOCompletionUPP             (IOCompletionProcPtr     userRoutine);
  1163.     EXTERN_API(void)
  1164.     DisposeIOCompletionUPP         (IOCompletionUPP         userUPP);
  1165.     EXTERN_API(void)
  1166.     InvokeIOCompletionUPP          (ParmBlkPtr              paramBlock,
  1167.                                     IOCompletionUPP         userUPP);
  1168. #else
  1169.     enum { uppIOCompletionProcInfo = 0x00009802 };                  /* register no_return_value Func(4_bytes:A0) */
  1170.     #define NewIOCompletionUPP(userRoutine)                         (IOCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppIOCompletionProcInfo, GetCurrentArchitecture())
  1171.     #define DisposeIOCompletionUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  1172.     #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1173.     #pragma parameter InvokeIOCompletionUPP(__A0, __A1)
  1174.     void InvokeIOCompletionUPP(ParmBlkPtr paramBlock, IOCompletionUPP userUPP) = 0x4E91;
  1175.     #else
  1176.         #define InvokeIOCompletionUPP(paramBlock, userUPP)              CALL_ONE_PARAMETER_UPP((userUPP), uppIOCompletionProcInfo, (paramBlock))
  1177.     #endif
  1178. #endif
  1179. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  1180. #define NewIOCompletionProc(userRoutine)                        NewIOCompletionUPP(userRoutine)
  1181. #define CallIOCompletionProc(userRoutine, paramBlock)           InvokeIOCompletionUPP(paramBlock, userRoutine)
  1182. /*
  1183.    PBOpenSync(), PBOpenAsync(), PBOpenImmed() were moved to Devices.h
  1184.    PBCloseSync(), PBCloseAsync(), PBCloseImmed() were moved to Devices.h
  1185.    PBReadSync(), PBReadAsync(), PBReadImmed() were moved to Devices.h
  1186.    PBWriteSync(), PBWriteAsync(), PBWriteImmed() were moved to Devices.h
  1187. */
  1188. #if CALL_NOT_IN_CARBON
  1189. #if CALL_NOT_IN_CARBON
  1190.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1191.                                                                                             #pragma parameter __D0 PBGetVInfoSync(__A0)
  1192.                                                                                             #endif
  1193. EXTERN_API( OSErr ) PBGetVInfoSync(ParmBlkPtr paramBlock)                                   ONEWORDINLINE(0xA007);
  1194. #endif  /* CALL_NOT_IN_CARBON */
  1195. #endif  /* CALL_NOT_IN_CARBON */
  1196. #if CALL_NOT_IN_CARBON
  1197. #if CALL_NOT_IN_CARBON
  1198.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1199.                                                                                             #pragma parameter __D0 PBGetVInfoAsync(__A0)
  1200.                                                                                             #endif
  1201. EXTERN_API( OSErr ) PBGetVInfoAsync(ParmBlkPtr paramBlock)                                  ONEWORDINLINE(0xA407);
  1202. #endif  /* CALL_NOT_IN_CARBON */
  1203. #endif  /* CALL_NOT_IN_CARBON */
  1204.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1205.                                                                                             #pragma parameter __D0 PBXGetVolInfoSync(__A0)
  1206.                                                                                             #endif
  1207. EXTERN_API( OSErr ) PBXGetVolInfoSync(XVolumeParamPtr paramBlock)                           TWOWORDINLINE(0x7012, 0xA060);
  1208.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1209.                                                                                             #pragma parameter __D0 PBXGetVolInfoAsync(__A0)
  1210.                                                                                             #endif
  1211. EXTERN_API( OSErr ) PBXGetVolInfoAsync(XVolumeParamPtr paramBlock)                          TWOWORDINLINE(0x7012, 0xA460);
  1212. #if CALL_NOT_IN_CARBON
  1213. #if CALL_NOT_IN_CARBON
  1214.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1215.                                                                                             #pragma parameter __D0 PBGetVolSync(__A0)
  1216.                                                                                             #endif
  1217. EXTERN_API( OSErr ) PBGetVolSync(ParmBlkPtr paramBlock)                                     ONEWORDINLINE(0xA014);
  1218. #endif  /* CALL_NOT_IN_CARBON */
  1219. #endif  /* CALL_NOT_IN_CARBON */
  1220. #if CALL_NOT_IN_CARBON
  1221. #if CALL_NOT_IN_CARBON
  1222.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1223.                                                                                             #pragma parameter __D0 PBGetVolAsync(__A0)
  1224.                                                                                             #endif
  1225. EXTERN_API( OSErr ) PBGetVolAsync(ParmBlkPtr paramBlock)                                    ONEWORDINLINE(0xA414);
  1226. #endif  /* CALL_NOT_IN_CARBON */
  1227. #endif  /* CALL_NOT_IN_CARBON */
  1228. #if CALL_NOT_IN_CARBON
  1229. #if CALL_NOT_IN_CARBON
  1230.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1231.                                                                                             #pragma parameter __D0 PBSetVolSync(__A0)
  1232.                                                                                             #endif
  1233. EXTERN_API( OSErr ) PBSetVolSync(ParmBlkPtr paramBlock)                                     ONEWORDINLINE(0xA015);
  1234. #endif  /* CALL_NOT_IN_CARBON */
  1235. #endif  /* CALL_NOT_IN_CARBON */
  1236. #if CALL_NOT_IN_CARBON
  1237. #if CALL_NOT_IN_CARBON
  1238.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1239.                                                                                             #pragma parameter __D0 PBSetVolAsync(__A0)
  1240.                                                                                             #endif
  1241. EXTERN_API( OSErr ) PBSetVolAsync(ParmBlkPtr paramBlock)                                    ONEWORDINLINE(0xA415);
  1242. #endif  /* CALL_NOT_IN_CARBON */
  1243. #endif  /* CALL_NOT_IN_CARBON */
  1244.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1245.                                                                                             #pragma parameter __D0 PBFlushVolSync(__A0)
  1246.                                                                                             #endif
  1247. EXTERN_API( OSErr ) PBFlushVolSync(ParmBlkPtr paramBlock)                                   ONEWORDINLINE(0xA013);
  1248.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1249.                                                                                             #pragma parameter __D0 PBFlushVolAsync(__A0)
  1250.                                                                                             #endif
  1251. EXTERN_API( OSErr ) PBFlushVolAsync(ParmBlkPtr paramBlock)                                  ONEWORDINLINE(0xA413);
  1252. #if CALL_NOT_IN_CARBON
  1253. #if CALL_NOT_IN_CARBON
  1254.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1255.                                                                                             #pragma parameter __D0 PBHTrashVolumeCachesSync(__A0)
  1256.                                                                                             #endif
  1257. EXTERN_API( OSErr ) PBHTrashVolumeCachesSync(ParmBlkPtr paramBlock)                         ONEWORDINLINE(0xA213);
  1258. #endif  /* CALL_NOT_IN_CARBON */
  1259. #endif  /* CALL_NOT_IN_CARBON */
  1260. #if CALL_NOT_IN_CARBON
  1261. #if CALL_NOT_IN_CARBON
  1262.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1263.                                                                                             #pragma parameter __D0 PBCreateSync(__A0)
  1264.                                                                                             #endif
  1265. EXTERN_API( OSErr ) PBCreateSync(ParmBlkPtr paramBlock)                                     ONEWORDINLINE(0xA008);
  1266. #endif  /* CALL_NOT_IN_CARBON */
  1267. #endif  /* CALL_NOT_IN_CARBON */
  1268. #if CALL_NOT_IN_CARBON
  1269. #if CALL_NOT_IN_CARBON
  1270.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1271.                                                                                             #pragma parameter __D0 PBCreateAsync(__A0)
  1272.                                                                                             #endif
  1273. EXTERN_API( OSErr ) PBCreateAsync(ParmBlkPtr paramBlock)                                    ONEWORDINLINE(0xA408);
  1274. #endif  /* CALL_NOT_IN_CARBON */
  1275. #endif  /* CALL_NOT_IN_CARBON */
  1276. #if CALL_NOT_IN_CARBON
  1277. #if CALL_NOT_IN_CARBON
  1278.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1279.                                                                                             #pragma parameter __D0 PBDeleteSync(__A0)
  1280.                                                                                             #endif
  1281. EXTERN_API( OSErr ) PBDeleteSync(ParmBlkPtr paramBlock)                                     ONEWORDINLINE(0xA009);
  1282. #endif  /* CALL_NOT_IN_CARBON */
  1283. #endif  /* CALL_NOT_IN_CARBON */
  1284. #if CALL_NOT_IN_CARBON
  1285. #if CALL_NOT_IN_CARBON
  1286.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1287.                                                                                             #pragma parameter __D0 PBDeleteAsync(__A0)
  1288.                                                                                             #endif
  1289. EXTERN_API( OSErr ) PBDeleteAsync(ParmBlkPtr paramBlock)                                    ONEWORDINLINE(0xA409);
  1290. #endif  /* CALL_NOT_IN_CARBON */
  1291. #endif  /* CALL_NOT_IN_CARBON */
  1292. #if CALL_NOT_IN_CARBON
  1293. #if CALL_NOT_IN_CARBON
  1294.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1295.                                                                                             #pragma parameter __D0 PBOpenDFSync(__A0)
  1296.                                                                                             #endif
  1297. EXTERN_API( OSErr ) PBOpenDFSync(ParmBlkPtr paramBlock)                                     TWOWORDINLINE(0x701A, 0xA060);
  1298. #endif  /* CALL_NOT_IN_CARBON */
  1299. #endif  /* CALL_NOT_IN_CARBON */
  1300. #if CALL_NOT_IN_CARBON
  1301. #if CALL_NOT_IN_CARBON
  1302.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1303.                                                                                             #pragma parameter __D0 PBOpenDFAsync(__A0)
  1304.                                                                                             #endif
  1305. EXTERN_API( OSErr ) PBOpenDFAsync(ParmBlkPtr paramBlock)                                    TWOWORDINLINE(0x701A, 0xA460);
  1306. #endif  /* CALL_NOT_IN_CARBON */
  1307. #endif  /* CALL_NOT_IN_CARBON */
  1308. #if CALL_NOT_IN_CARBON
  1309. #if CALL_NOT_IN_CARBON
  1310.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1311.                                                                                             #pragma parameter __D0 PBOpenRFSync(__A0)
  1312.                                                                                             #endif