- /****************************************************************************************
- * Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
- * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
- *
- * File: $Workfile: ECMA167.h $
- *
- * Description:
- * ============
- *
- *
- * Log:
- * ====
- * $Revision: 2 $
- * Last Modified by $Author: Nirm $ at $Modtime: 23/04/02 9:06 $
- ****************************************************************************************
- * Updates:
- ****************************************************************************************
- * $Log: /I49/H49V/Playcore/FileSys/UDF/ECMA167.h $
- *
- * 2 23/04/02 9:30 Nirm
- * - Added dependency in "Config.h".
- *
- * 1 30/01/02 18:12 Nirm
- ****************************************************************************************/
- /////////////////////////////////////////////////////////////////////////////
- // ECMA167.h - Definitions and Data-Structures described in ECMA-167
- //
- // Author: Nir Milstein
- #include "Config.h" // Global Configuration - do not remove!
- #ifndef __ECMA_167_H_
- #define __ECMA_167_H_
- #include "IncludeSysDefs.h"
- // NOTE: All of the structures MUST be packed, since they represent
- // data-structures resident on the Medium!
- #pragma pack(1)
- /////////////////////////////////////////////////////////////////////////////
- // Constants
- #define VOLUME_RECOGNITION_SEQUENCE_START_LSN 16
- #define FIRST_ANCHOR_POINT_LSN 256
- #define MAX_ID_LENGTH 128
- /////////////////////////////////////////////////////////////////////////////
- // General - Basic Types (ECMA-167 1/7)
- // D-String (ECMA-167 1/7.2)
- typedef char DString;
- // Character-Set Specification (ECMA-167 1/7.2.1)
- typedef struct CharSpec_TAG {
- UINT8 uCharacterSetType;
- BYTE aCharacterSetInfo[63];
- } CharSpec;
- #define CHARACTER_SET_TYPE_CS0 0x00
- // Timestamp (ECMA-167 1/7.3)
- typedef struct Timestamp_TAG {
- UINT16 uTypeAndTimezone;
- INT16 iYear;
- UINT8 uMonth;
- UINT8 uDay;
- UINT8 uHour;
- UINT8 uMinute;
- UINT8 uSecond;
- UINT8 uCentiseconds;
- UINT8 uHundredsOfSeconds;
- UINT8 uMicroseconds;
- } Timestamp;
- #define TIMESTAMP_TYPE_CUT 0
- #define TIMESTAMP_TYPE_LOCAL 1
- #define TIMESTAMP_TYPE_AGREEMENT 2
- // Entity Identifier (ECMA-167 1/7.4)
- typedef struct RegID_Tag {
- UINT8 uFlags;
- BYTE aIdentifier[23];
- BYTE aIdentifierSuffix[8];
- } RegID;
- #define REGID_FLAGS_DIRTY 0x01
- #define REGID_FLAGS_PROTECTED 0x02
- /////////////////////////////////////////////////////////////////////////////
- // Volume and Boot-Block Recognition - Volume Recognition Structures (ECMA-167 2/9)
- // Volume Structure Descriptor (ECMA-167 2/9.1)
- #define STANDARD_ID_LEN 5
- struct GenericVolumeStructureDesc {
- UINT8 uStructureType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uStructureVersion;
- BYTE aStructureData[2041];
- };
- #define STANDARD_ID_BEA01 "BEA01"
- #define STANDARD_ID_BOOT2 "BOOT2"
- #define STANDARD_ID_CD001 "CD001"
- #define STANDARD_ID_CDW02 "CDW02"
- #define STANDARD_ID_NSR02 "NSR02"
- #define STANDARD_ID_NSR03 "NSR03"
- #define STANDARD_ID_TEA01 "TEA01"
- // Beginning Extended Area Descriptor (ECMA-167 2/9.2)
- #define BeginningExtendedAreaDesc GenericVolumeStructureDesc
- // Terminating Extended Area Descriptor (ECMA-167 2/9.3)
- #define TerminatingExtendedAreaDesc GenericVolumeStructureDesc
- // Boot Descriptor (ECMA-167 2/9.4)
- struct BootDesc {
- UINT8 uStructureType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uStructureVersion;
- BYTE ucReserved;
- RegID ridArchitectureType;
- RegID ridBootID;
- UINT32 dwBootExtentLocation;
- UINT32 dwBootExtentLength;
- UINT32 dwLoadAddressLow;
- UINT32 dwLoadAddressHigh;
- UINT32 dwStartAddressLow;
- UINT32 dwStartAddressHigh;
- Timestamp tsDescCreation;
- UINT16 wFlags;
- BYTE aReserved[32];
- BYTE aBootUse[1906];
- };
- /////////////////////////////////////////////////////////////////////////////
- // Volume Structure - Basic Types (ECMA-167 3/7)
- // Extent Descriptor (ECMA-167 3/7.1)
- typedef struct Extent_ad_TAG {
- UINT32 dwExtentLength;
- UINT32 dwExtentLocation;
- } Extent_ad;
- // Descriptor Tag (ECMA-167 3/7.2)
- typedef struct Tag_TAG {
- UINT16 uTagID;
- UINT16 uDescriptorVersion;
- UINT8 uTagChecksum;
- BYTE ucReserved;
- UINT16 uTagSerialNumber;
- UINT16 uDescriptorCRC;
- UINT16 uDescriptorCRCLength;
- UINT32 dwTagLocation;
- } Tag;
- #define TAG_ID_PRIMARY_VOLUME_DESC 1
- #define TAG_ID_ANCHOR_VOLUME_DESC_PTR 2
- #define TAG_ID_VOLUME_DESC_PTR 3
- #define TAG_ID_IMP_USE_VOLUME_DESC 4
- #define TAG_ID_PARTITION_DESC 5
- #define TAG_ID_LOGICAL_VOLUME_DESC 6
- #define TAG_ID_UNALLOC_SPACE_DESC 7
- #define TAG_ID_TERMINATING_DESC 8
- #define TAG_ID_LOGICAL_VOLUME_INTEGRITY 9
- /////////////////////////////////////////////////////////////////////////////
- // Volume Structure - Volume Recognition Structures (ECMA-167 3/9)
- // NSR Descriptor (ECMA-167 3/9.1)
- struct NSRDesc {
- UINT8 uStructureType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uStructureVersion;
- BYTE ucReserved;
- BYTE aStructureData[2040];
- };
- /////////////////////////////////////////////////////////////////////////////
- // Volume Structure - Volume Data Structures (ECMA-167 3/10)
- // Primary Volume Descriptor (ECMA-167 3/10.1)
- struct PrimaryVolumeDesc {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- UINT32 dwPrimaryVolumeDescNumber;
- DString sVolumeID[32];
- UINT16 uVolumeSequenceNumber;
- UINT16 uMaxVolumeSequenceNumber;
- UINT16 uInterchangeLevel;
- UINT16 uMaxInterchangeLevel;
- UINT32 dwCharSetList;
- UINT32 dwMaxCharSetList;
- DString sVolumeSetID[128];
- CharSpec csDescriptorCharSet;
- CharSpec csExplanatoryCharSet;
- Extent_ad exVolumeAbstract;
- Extent_ad exVolumeCopyrightNotice;
- RegID ridApplicationID;
- Timestamp tsRecording;
- RegID ridImplID;
- BYTE aImplUse[64];
- UINT32 dwPredecessorVolumeDescSequenceLocation;
- UINT16 wFlags;
- BYTE aReserved[22];
- };
- #define PVD_FLAGS_VOLUME_SET_ID 0x0001
- // Anchor Volume Descriptor Pointer (ECMA-167 3/10.2)
- struct AnchorVolumeDescPtr {
- Tag tgDescTag;
- Extent_ad exMainVolumeDescSequenceExtent;
- Extent_ad exReserveVolumeDescSequenceExtent;
- BYTE aReserved[480];
- };
- // Volume Descriptor Pointer (ECMA-167 3/10.3)
- struct VolumeDescPtr {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- Extent_ad exNextVolumeDescSequenceExtent;
- BYTE aReserved[484];
- };
- // Implementation Use Volume Descriptor (ECMA-167 3/10.4)
- struct ImplUseVolumeDesc {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- RegID ridImplID;
- BYTE aImplUse[460];
- };
- // Partition Descriptor (ECMA-167 3/10.5)
- struct PartitionDesc {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- UINT16 wPartitionFlags;
- UINT16 uPartitionNumber;
- RegID ridPartitionContents;
- BYTE aPartitionContentsUse[128];
- UINT32 uAccessType;
- UINT32 dwPartitionStartingLocation;
- UINT32 uPartitionLength;
- RegID ridImplID;
- BYTE aImplUse[128];
- BYTE aReserved[156];
- };
- #define PARTITION_FLAGS_ALLOCATION 1
- #define PARTITION_CONTENTS_FDC01 "+FDC01"
- #define PARTITION_CONTENTS_CD001 "+CD001"
- #define PARTITION_CONTENTS_CDW02 "+CDW02"
- #define PARTITION_CONTENTS_NSR02 "+NSR02"
- #define PARTITION_CONTENTS_NSR03 "+NSR03"
- #define PARTITION_ACCESS_NONE 0
- #define PARTITION_ACCESS_RO 1
- #define PARTITION_ACCESS_WO 2
- #define PARTITION_ACCESS_RW 3
- #define PARTITION_ACCESS_OW 4
- // Logical Volume Descriptor (ECMA-167 3/10.6)
- struct LogicalVolumeDesc {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- CharSpec csDescCharSet;
- DString sLogicalVolumeID[128];
- UINT32 cbLogicalBlockSize;
- RegID ridDomainID;
- BYTE aLogicalVolumeContentsUse[16];
- UINT32 cbMapTableLength;
- UINT32 uNumberOfPartitionMaps;
- RegID ridImplID;
- BYTE aImplUse[128];
- Extent_ad exIntegritySequenceExtent;
- BYTE aPartitionMaps[];
- };
- // Generic Partition Map (ECMA-167 3/10.7.1)
- struct PartitionMapGeneric {
- UINT8 uPartitionMapType;
- UINT8 cbPartitionMapLength;
- BYTE aPartitionMapping[];
- };
- #define PARTITION_MAP_TYPE_NONE 0
- #define PARTITION_MAP_TYPE_1 1
- #define PARTITION_MAP_TYPE_2 2
- // Type1 PartitionMap (ECMA-167 3/10.7.2)
- struct PartitionMapType1 {
- UINT8 uPartitionMapType;
- UINT8 cbPartitionMapLength;
- UINT16 uVolumeSequenceNumber;
- UINT16 uPartitionNumber;
- };
- // Type2 PartitionMap (ECMA-167 3/10.7.3)
- struct PartitionMapType2 {
- UINT8 uPartitionMapType;
- UINT8 cbPartitionMapLength;
- BYTE aPartitionID[62];
- };
- // Unallocated Space Descriptor (ECMA-167 3/10.8)
- struct UnallocatedSpaceDesc {
- Tag tgDescTag;
- UINT32 dwVolumeDescSequenceNumber;
- UINT32 uNumberOfAllocationDescs;
- Extent_ad exAllcationDescs[];
- };
- // Terminating Descriptor (ECMA-167 3/10.9)
- struct TerminatingDescriptor {
- Tag tgDescTag;
- BYTE aReserved[496];
- };
- // Logical Volume Integrity Descriptor (ECMA-167 3/10.10)
- struct LogicalVolumeIntegrityDesc {
- Tag tgDescTag;
- Timestamp tsRecording;
- UINT32 dwIntegrityType;
- Extent_ad exNextIntegrityExtent;
- BYTE aLogicalVolumeContentsUse[32];
- UINT32 uNumberOfPartitions;
- UINT32 uLengthOfImplUse;
- UINT32 aFreeSpaceTable[];
- UINT32 aSizeTable[];
- BYTE aImplUse[];
- };
- #define INTEGRITY_TYPE_OPEN 0
- #define INTEGRITY_TYPE_CLOSE 1
- /////////////////////////////////////////////////////////////////////////////
- // File Structure - Basic Types (ECMA-167 4/7)
- // Recorded Address (ECMA-167 4/7.1)
- typedef struct LB_Addr_TAG {
- UINT32 uLogicalBlockNumber; // Relative to the start of the Partition
- UINT16 uPartitionReferenceNumber;
- } LB_Addr;
- // Descriptor Tag (ECMA-167 4/7.2)
- #define TAG_ID_FILE_SET_DESC 256
- #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_