ecma167.h

来自「ZORAN 962/966 SOURCE CODE,DVD chip」· C头文件 代码 · 共 752 行 · 第 1/2 页

H
752
字号
#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 + =
减小字号Ctrl + -
显示快捷键?