📄 apple.h
字号:
/* * libhfs - library for reading and writing Macintosh HFS volumes * Copyright (C) 1996-1998 Robert Leslie * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: apple.h,v 1.1 1998/04/11 08:27:11 rob Exp $ */typedef signed char Char;typedef unsigned char UChar;typedef signed char SignedByte;typedef signed short Integer;typedef unsigned short UInteger;typedef signed long LongInt;typedef unsigned long ULongInt;typedef char Str15[16];typedef char Str31[32];typedef long OSType;typedef struct { Integer sbSig; /* device signature (should be 0x4552) */ Integer sbBlkSize; /* block size of the device (in bytes) */ LongInt sbBlkCount; /* number of blocks on the device */ Integer sbDevType; /* reserved */ Integer sbDevId; /* reserved */ LongInt sbData; /* reserved */ Integer sbDrvrCount; /* number of driver descriptor entries */ LongInt ddBlock; /* first driver's starting block */ Integer ddSize; /* size of the driver, in 512-byte blocks */ Integer ddType; /* driver operating system type (MacOS = 1) */ Integer ddPad[243]; /* additional drivers, if any */} Block0;typedef struct { Integer pmSig; /* partition signature (0x504d or 0x5453) */ Integer pmSigPad; /* reserved */ LongInt pmMapBlkCnt; /* number of blocks in partition map */ LongInt pmPyPartStart; /* first physical block of partition */ LongInt pmPartBlkCnt; /* number of blocks in partition */ Char pmPartName[33]; /* partition name */ Char pmParType[33]; /* partition type */ LongInt pmLgDataStart; /* first logical block of data area */ LongInt pmDataCnt; /* number of blocks in data area */ LongInt pmPartStatus; /* partition status information */ LongInt pmLgBootStart; /* first logical block of boot code */ LongInt pmBootSize; /* size of boot code, in bytes */ LongInt pmBootAddr; /* boot code load address */ LongInt pmBootAddr2; /* reserved */ LongInt pmBootEntry; /* boot code entry point */ LongInt pmBootEntry2; /* reserved */ LongInt pmBootCksum; /* boot code checksum */ Char pmProcessor[17];/* processor type */ Integer pmPad[188]; /* reserved */} Partition;typedef struct { Integer bbID; /* boot blocks signature */ LongInt bbEntry; /* entry point to boot code */ Integer bbVersion; /* boot blocks version number */ Integer bbPageFlags; /* used internally */ Str15 bbSysName; /* System filename */ Str15 bbShellName; /* Finder filename */ Str15 bbDbg1Name; /* debugger filename */ Str15 bbDbg2Name; /* debugger filename */ Str15 bbScreenName; /* name of startup screen */ Str15 bbHelloName; /* name of startup program */ Str15 bbScrapName; /* name of system scrap file */ Integer bbCntFCBs; /* number of FCBs to allocate */ Integer bbCntEvts; /* number of event queue elements */ LongInt bb128KSHeap; /* system heap size on 128K Mac */ LongInt bb256KSHeap; /* used internally */ LongInt bbSysHeapSize; /* system heap size on all machines */ Integer filler; /* reserved */ LongInt bbSysHeapExtra; /* additional system heap space */ LongInt bbSysHeapFract; /* fraction of RAM for system heap */} BootBlkHdr;typedef struct { UInteger xdrStABN; /* first allocation block */ UInteger xdrNumABlks; /* number of allocation blocks */} ExtDescriptor;typedef ExtDescriptor ExtDataRec[3];typedef struct { SignedByte xkrKeyLen; /* key length */ SignedByte xkrFkType; /* fork type (0x00/0xff == data/resource */ ULongInt xkrFNum; /* file number */ UInteger xkrFABN; /* starting file allocation block */} ExtKeyRec;typedef struct { SignedByte ckrKeyLen; /* key length */ SignedByte ckrResrv1; /* reserved */ ULongInt ckrParID; /* parent directory ID */ Str31 ckrCName; /* catalog node name */} CatKeyRec;typedef struct { Integer v; /* vertical coordinate */ Integer h; /* horizontal coordinate */} Point;typedef struct { Integer top; /* top edge of rectangle */ Integer left; /* left edge */ Integer bottom; /* bottom edge */ Integer right; /* right edge */} Rect;typedef struct { Rect frRect; /* folder's rectangle */ Integer frFlags; /* flags */ Point frLocation; /* folder's location */ Integer frView; /* folder's view */} DInfo;typedef struct { Point frScroll; /* scroll position */ LongInt frOpenChain; /* directory ID chain of open folders */ Integer frUnused; /* reserved */ Integer frComment; /* comment ID */ LongInt frPutAway; /* directory ID */} DXInfo;typedef struct { OSType fdType; /* file type */ OSType fdCreator; /* file's creator */ Integer fdFlags; /* flags */ Point fdLocation; /* file's location */ Integer fdFldr; /* file's window */} FInfo;typedef struct { Integer fdIconID; /* icon ID */ Integer fdUnused[4]; /* reserved */ Integer fdComment; /* comment ID */ LongInt fdPutAway; /* home directory ID */} FXInfo;typedef struct { Integer drSigWord; /* volume signature (0x4244 for HFS) */ LongInt drCrDate; /* date and time of volume creation */ LongInt drLsMod; /* date and time of last modification */ Integer drAtrb; /* volume attributes */ UInteger drNmFls; /* number of files in root directory */ UInteger drVBMSt; /* first block of volume bit map (always 3) */ UInteger drAllocPtr; /* start of next allocation search */ UInteger drNmAlBlks; /* number of allocation blocks in volume */ ULongInt drAlBlkSiz; /* size (in bytes) of allocation blocks */ ULongInt drClpSiz; /* default clump size */ UInteger drAlBlSt; /* first allocation block in volume */ LongInt drNxtCNID; /* next unused catalog node ID (dir/file ID) */ UInteger drFreeBks; /* number of unused allocation blocks */ char drVN[28]; /* volume name (1-27 chars) */ LongInt drVolBkUp; /* date and time of last backup */ Integer drVSeqNum; /* volume backup sequence number */ ULongInt drWrCnt; /* volume write count */ ULongInt drXTClpSiz; /* clump size for extents overflow file */ ULongInt drCTClpSiz; /* clump size for catalog file */ UInteger drNmRtDirs; /* number of directories in root directory */ ULongInt drFilCnt; /* number of files in volume */ ULongInt drDirCnt; /* number of directories in volume */ LongInt drFndrInfo[8]; /* information used by the Finder */ UInteger drEmbedSigWord; /* type of embedded volume */ ExtDescriptor drEmbedExtent; /* location of embedded volume */ ULongInt drXTFlSize; /* size (in bytes) of extents overflow file */ ExtDataRec drXTExtRec; /* first extent record for extents file */ ULongInt drCTFlSize; /* size (in bytes) of catalog file */ ExtDataRec drCTExtRec; /* first extent record for catalog file */} MDB;typedef enum { cdrDirRec = 1, cdrFilRec = 2, cdrThdRec = 3, cdrFThdRec = 4} CatDataType;typedef struct { SignedByte cdrType; /* record type */ SignedByte cdrResrv2; /* reserved */ union { struct { /* cdrDirRec */ Integer dirFlags; /* directory flags */ UInteger dirVal; /* directory valence */ ULongInt dirDirID; /* directory ID */ LongInt dirCrDat; /* date and time of creation */ LongInt dirMdDat; /* date and time of last modification */ LongInt dirBkDat; /* date and time of last backup */ DInfo dirUsrInfo; /* Finder information */ DXInfo dirFndrInfo; /* additional Finder information */ LongInt dirResrv[4]; /* reserved */ } dir; struct { /* cdrFilRec */ SignedByte filFlags; /* file flags */ SignedByte filTyp; /* file type */ FInfo filUsrWds; /* Finder information */ ULongInt filFlNum; /* file ID */ UInteger filStBlk; /* first alloc block of data fork */ ULongInt filLgLen; /* logical EOF of data fork */ ULongInt filPyLen; /* physical EOF of data fork */ UInteger filRStBlk; /* first alloc block of resource fork */ ULongInt filRLgLen; /* logical EOF of resource fork */ ULongInt filRPyLen; /* physical EOF of resource fork */ LongInt filCrDat; /* date and time of creation */ LongInt filMdDat; /* date and time of last modification */ LongInt filBkDat; /* date and time of last backup */ FXInfo filFndrInfo; /* additional Finder information */ UInteger filClpSize; /* file clump size */ ExtDataRec filExtRec; /* first data fork extent record */ ExtDataRec filRExtRec; /* first resource fork extent record */ LongInt filResrv; /* reserved */ } fil; struct { /* cdrThdRec */ LongInt thdResrv[2]; /* reserved */ ULongInt thdParID; /* parent ID for this directory */ Str31 thdCName; /* name of this directory */ } dthd; struct { /* cdrFThdRec */ LongInt fthdResrv[2]; /* reserved */ ULongInt fthdParID; /* parent ID for this file */ Str31 fthdCName; /* name of this file */ } fthd; } u;} CatDataRec;typedef struct { ULongInt ndFLink; /* forward link */ ULongInt ndBLink; /* backward link */ SignedByte ndType; /* node type */ SignedByte ndNHeight; /* node level */ UInteger ndNRecs; /* number of records in node */ Integer ndResv2; /* reserved */} NodeDescriptor;enum { ndIndxNode = (SignedByte) 0x00, ndHdrNode = (SignedByte) 0x01, ndMapNode = (SignedByte) 0x02, ndLeafNode = (SignedByte) 0xff};typedef struct { UInteger bthDepth; /* current depth of tree */ ULongInt bthRoot; /* number of root node */ ULongInt bthNRecs; /* number of leaf records in tree */ ULongInt bthFNode; /* number of first leaf node */ ULongInt bthLNode; /* number of last leaf node */ UInteger bthNodeSize; /* size of a node */ UInteger bthKeyLen; /* maximum length of a key */ ULongInt bthNNodes; /* total number of nodes in tree */ ULongInt bthFree; /* number of free nodes */ SignedByte bthResv[76]; /* reserved */} BTHdrRec;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -