?? ecma167.h
字號:
#define TAG_ID_FILE_ID_DESC 257
#define TAG_ID_ALLOC_EXTENT_DESC 258
#define TAG_ID_INDIRECT_ENTRY 259
#define TAG_ID_TERMINAL_ENTRY 260
#define TAG_ID_FILE_ENTRY 261
#define TAG_ID_EXT_ATTR_HDR_DESC 262
#define TAG_ID_UNALLOC_SPACE_ENTRY 263
#define TAG_ID_SPACE_BITMAP_DESC 264
#define TAG_ID_PARTITION_INTEGRITY 265
#define TAG_ID_EXT_FILE_ENTRY 266
/////////////////////////////////////////////////////////////////////////////
// File Structure - File Data Structures (ECMA-167 4/14)
// Forward-Declarations
// Short Allocation Descriptor (ECMA-167 4/14.14.1)
typedef struct Short_ad_TAG {
UINT32 cbExtentLength; // 2 MSBs are Extent-Type
UINT32 dwExtentPosition; // Position within the containing Partition
} Short_ad;
// Long Allocation Descriptor (ECMA-167 4/14.14.2)
typedef struct Long_ad_TAG {
UINT32 cbExtentLength;
LB_Addr lbaExtentLocation;
BYTE aImplUse[6];
} Long_ad;
typedef union Alloc_Desc_TAG{
Short_ad sadFile;
Long_ad ladFile;
}Alloc_desc;
// File Set Descriptor (ECMA-167 4/14.1)
struct FileSetDesc {
Tag tgDescTag;
Timestamp tsRecording;
UINT16 uInterchangeLevel;
UINT16 uMaxInterchangeLevel;
UINT32 dwCharSetList;
UINT32 dwMaxCharSetList;
UINT32 uFileSetNumber;
UINT32 uFileSetDescNumber;
CharSpec csLogicalVolumeIDCharSet;
DString sLogicalVolumeID[128];
CharSpec csFileSetCharSet;
DString sFileSetID[32];
DString sCopyrightFileID[32];
DString sAbstractFileID[32];
Long_ad ladRootDirICB;
RegID ridDomainID;
Long_ad ladNextExtent;
Long_ad ladSystemStreamDirICB;
BYTE aReserved[32];
};
// Partition Header Descriptor (ECMA-167 4/14.3)
struct PartitionHeaderDesc {
Short_ad sadUnallocSpaceTable;
Short_ad sadUnallocSpaceBitmap;
Short_ad sadPartitionIntegrityTable;
Short_ad sadFreedSpaceTable;
Short_ad sadFreedSpaceBitmap;
BYTE aReserved[88];
};
// File Identifier Descriptor (ECMA-167 4/14.4)
struct FileIDDesc {
Tag tgDescTag;
UINT16 uFileVersionNumber;
UINT8 uFileCharacteristics;
UINT8 cbLengthOfFileID;
Long_ad ladICB;
UINT16 cbLengthOfImplUse;
BYTE aImplUse[];
DString sFileID[];
BYTE aPadding[];
};
#define FILE_CHAR_HIDDEN 0x01
#define FILE_CHAR_DIRECTORY 0x02
#define FILE_CHAR_DELETED 0x04
#define FILE_CHAR_PARENT 0x08
#define FILE_CHAR_METADATA 0x10
// Allocation Extent Descriptor (ECMA-167 4/14.5)
struct AllocationExtendDesc {
Tag tgDescTag;
UINT32 dwPrevAllocationExtentLocation;
UINT32 cbLengthOfAllocDescs;
};
// ICB Tag (ECMA-167 4/14.6)
typedef struct ICBTag_TAG {
UINT32 uPriorRecorderNumberOfDirectEntries;
UINT16 uStrategyType;
BYTE aStrategyParameter[2];
UINT16 uMaxNumberOfEntries;
BYTE ucReserved;
UINT8 uFileType;
LB_Addr lbaParentICBLocation;
UINT16 wFlags;
} ICBTag;
#define ICB_FILETYPE_NONE 0
#define ICB_FILETYPE_UNALLOC 1
#define ICB_FILETYPE_INTEGRITY 2
#define ICB_FILETYPE_INDIRECT 3
#define ICB_FILETYPE_DIRECTORY 4
#define ICB_FILETYPE_NORMAL 5
#define ICB_FILETYPE_BLOCK_DEV 6
#define ICB_FILETYPE_CHAR_DEV 7
#define ICB_FILETYPE_EXT_ATTR 8
#define ICB_FILETYPE_FIFO 9
#define ICB_FILETYPE_C_ISSOCK 10
#define ICB_FILETYPE_TERMINAL 11
#define ICB_FILETYPE_LINK 12
#define ICB_FILETYPE_STREAM_DIR 13
#define ICB_FLAGS_ALLOC_MASK 0x0007
#define ICB_FLAGS_AD_SHORT 0
#define ICB_FLAGS_AD_LONG 1
#define ICB_FLAGS_AD_EXTENDED 2
#define ICB_FLAGS_AD_IN_ICB 3
#define ICB_FLAGS_SORTED 0x0008
#define ICB_FLAGS_NONRELOC 0x0010
#define ICB_FLAGS_ARCHIVE 0x0020
#define ICB_FLAGS_SETUID 0x0040
#define ICB_FLAGS_SETGID 0x0080
#define ICB_FLAGS_STICKY 0x0100
#define ICB_FLAGS_CONTIGUOUS 0x0200
#define ICB_FLAGS_SYSTEM 0x0400
#define ICB_FLAGS_TRANSFORMED 0x0800
#define ICB_FLAGS_MULTIVERSIONS 0x1000
#define ICB_FLAGS_STREAM 0x2000
// Indirect Entry (ECMA-167 4/14.7)
struct IndirectEntry {
Tag tgDescTag;
ICBTag icbTag;
Long_ad ladIndirectICB;
};
// Terminal Entry (ECMA-167 4/14.8)
struct TerminalEntry {
Tag tgDescTag;
ICBTag icbTag;
};
// File Entry (ECMA-167 4/14.9)
struct FileEntry {
Tag tgDescTag;
ICBTag icbTag;
UINT32 dwUID;
UINT32 dwGID;
UINT32 dwPermissions;
UINT16 uFileLinkCnt;
UINT8 uRecordFormat;
UINT8 uRecordDisplayAttrs;
UINT32 cbRecordLength;
UINT32 cbInfoLengthLow;
UINT32 cbInfoLengthHigh;
UINT32 cbLogicalBlocksRecordedLow;
UINT32 cbLogicalBlocksRecordedHigh;
Timestamp tsAccess;
Timestamp tsModification;
Timestamp tsAttributes;
UINT32 dwCheckpoint;
Long_ad ladExtAttrICB;
RegID ridImplID;
UINT32 dwUniqueIDLow;
UINT32 dwUniqueIDHigh;
UINT32 cbLengthOfExtAttrs;
UINT32 cbLengthOfAllocDescs;
BYTE aExtendedAttrs[];
BYTE aAllocDescs[];
};
#define FILE_PERM_O_EXEC 0x00000001
#define FILE_PERM_O_WRITE 0x00000002
#define FILE_PERM_O_READ 0x00000004
#define FILE_PERM_O_ATTR 0x00000008
#define FILE_PERM_O_DELETE 0x00000010
#define FILE_PERM_G_EXEC 0x00000020
#define FILE_PERM_G_WRITE 0x00000040
#define FILE_PERM_G_READ 0x00000080
#define FILE_PERM_G_ATTR 0x00000100
#define FILE_PERM_G_DELETE 0x00000200
#define FILE_PERM_U_EXEC 0x00000400
#define FILE_PERM_U_WRITE 0x00000800
#define FILE_PERM_U_READ 0x00001000
#define FILE_PERM_U_ATTR 0x00002000
#define FILE_PERM_U_DELETE 0x00004000
#define FILE_REC_FRMT_NONE 0
#define FILE_REC_FRMT_FIXED_PAD 1
#define FILE_REC_FRMT_FIXED 2
#define FILE_REC_FRMT_VAR8 3
#define FILE_REC_FRMT_VAR16 4
#define FILE_REC_FRMT_VAR16_MSB 5
#define FILE_REC_FRMT_VAR32 6
#define FILE_REC_FRMT_PRINT 7
#define FILE_REC_FRMT_LF 8
#define FILE_REC_FRMT_CR 9
#define FILE_REC_FRMT_CRLF 10
#define FILE_REC_FRMT_LFCR 11
// Extended Attribute Header Descriptor (ECMA-167 4/14.10.1)
#define ATTR_TYPE_IMPL 2048
#define ATTR_TYPE_APPL 65536
struct ExtendedAttributeHeaderDesc {
Tag tgDescTag;
UINT32 cbImplAttrLocation;
UINT32 cbApplAttrLocation;
};
// Generic Extended Attribute (ECMA-167 4/14.10.2)
struct GenericExtendedAttribute {
UINT32 uAttrType;
UINT8 uAttrSubType;
BYTE aReserved[3];
UINT32 cbAttrLength;
BYTE aAttrData[];
};
// Implementation-Use Extended Attribute (ECMA-167 4/14.10.8)
struct ImplUseExtendedAttribute {
UINT32 uAttrType;
UINT8 uAttrSubType;
BYTE aReserved[3];
UINT32 cbAttrLength;
UINT32 cbImplUseLength;
RegID ridImplID;
BYTE aImplUse[];
};
// Unallocated Space Entry (ECMA-167 4/14.11)
struct UnallocSpaceEntry {
Tag tgDescTag;
ICBTag icbTag;
UINT32 cbLengthOfAllocDecs;
BYTE aAllocDescs[];
};
// Space Bitmap Descriptor (ECMA-167 4/14.12)
struct SpaceBitmapDesc {
Tag tgDescTag;
UINT32 uNumberOfBits;
UINT32 uNumberOfBytes;
BYTE aBitmap[];
};
// Partition Intergrity Entry (ECMA-167 4/14.13)
struct PartitionIntegrityEntry {
Tag tgDescTag;
ICBTag icbTag;
Timestamp tsRecording;
UINT8 uIntegrityType;
BYTE aReserved[175];
RegID ridImplID;
BYTE aImplUse[256];
};
#define INTERGITY_TYPE_OPEN 0
#define INTERGITY_TYPE_CLOSE 1
#define INTERGITY_TYPE_STABLE 2
// Extended Allocation Descriptor (ECMA-167 4/14.14.3)
struct ExtAllocDesc {
UINT32 cbExtentLength;
UINT32 cbRecordedLength;
UINT32 cbInfoLength;
LB_Addr lbaExtentLocation;
BYTE aImplUse[2];
};
// Logical Volume Header Descriptor (ECMA-167 4/14.15)
struct LogicalVolumeHdr {
UINT32 dwUniqueIDLow;
UINT32 dwUniqueIDHigh;
BYTE aReserved[24];
};
// Path Component (ECMA-167 4/14.16.1)
struct PathComponent {
UINT8 uComponentType;
UINT8 cbLengthOfComponentID;
UINT16 uComponentFileVersionNumber;
DString sComponentID[];
};
// Extended File Entry (ECMA-167 4/14.17)
struct ExtFileEntry {
Tag tgDescTag;
ICBTag icbTag;
UINT32 dwUID;
UINT32 dwGID;
UINT32 dwPermissions;
UINT16 uFileLinkCnt;
UINT8 uRecordFormat;
UINT8 uRecordDisplayAttrs;
UINT32 cbRecordLength;
UINT32 cbInfoLengthLow;
UINT32 cbInfoLengthHigh;
UINT32 cbObjectSizeLow;
UINT32 cbObjectSizeHigh;
UINT32 cbLogicalBlocksRecordedLow;
UINT32 cbLogicalBlocksRecordedHigh;
Timestamp tsAccess;
Timestamp tsModification;
Timestamp tsCreation;
Timestamp tsAttributes;
UINT32 dwCheckpoint;
BYTE aReserved[4];
Long_ad ladExtAttrICB;
Long_ad ladStreamDirICB;
RegID ridImplID;
UINT32 dwUniqueIDLow;
UINT32 dwUniqueIDHigh;
UINT32 cbLengthOfExtAttrs;
UINT32 cbLengthOfAllocDescs;
BYTE aExtendedAttrs[];
BYTE aAllocDescs[];
};
/////////////////////////////////////////////////////////////////////////////
// Implementation-Specific auxiliary definitions and structures
#define PRIMARY_VOLUME_DESC_INFO_OFFSET 24
#define VOLUME_SET_IDENTIFIER 72
#define PARTITION_DESC_INFO_OFFSET 188
#define LOGICAL_VOLUME_DESC_INFO_OFFSET 248
#define FILE_SET_DESC_INFO_OFFSET 400
#define FILE_ENTRY_INFOLENGTH_OFFSET 56
#define FILE_ENTRY_L_EXTATTR_OFFSET 168
#define FILE_ENTRY_L_ALLOCDESC_OFFSET 172
#define FILE_ENTRY_EXTATTRS_OFFSET 176
#define EXT_FILE_ENTRY_L_EXTATTR_OFFSET 208
#define EXT_FILE_ENTRY_L_ALLOCDESC_OFFSET 212
#define EXT_FILE_ENTRY_EXTATTRS_OFFSET 216
#ifdef DVD_VR_SUPPORT
#define ALLOCATION_EXTENT_LENGTH_OFFSET 20
#endif
struct GenericVolumeStructureDesc_Base {
UINT8 uStructureType;
BYTE aStandardID[STANDARD_ID_LEN];
UINT8 uStructureVersion;
};
#pragma pack()
#endif //__ECMA_167_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -