- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- /****************************************************************************************
- * Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
- * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
- *
- * File: $Workfile: ECMA119.h $
- *
- * Description:
- * ============
- *
- *
- * Log:
- * ====
- * $Revision: 3 $
- * Last Modified by $Author: Leslie $ at $Modtime: 03-01-30 16:34 $
- ****************************************************************************************
- * Updates:
- ****************************************************************************************
- * $Log: /SourceCode/I64_Common/I64_Reference/Playcore/FileSys/ISO9660/ECMA119.h $
- *
- * 3 03-01-30 23:13 Leslie
- * Add new FILEREC struct type
- *
- * 5 23/04/02 9:30 Nirm
- * - Added dependency in "Config.h".
- *
- * 4 27/01/02 17:32 Nirm
- * Added support for Short Filenames (to reduce memory consumption).
- *
- * 3 1/10/02 15:29 Idan
- * Corrected Include-Paths + added a define for memory optimization
- *
- * 2 12/31/01 19:46 Idan
- * initializing the ISO9660 FS is working.
- *
- * 1 12/27/01 14:19 Idan
- *
- ****************************************************************************************/
- /////////////////////////////////////////////////////////////////////////////
- // ECMA119.h - Definitions and Data-Structures described in ECMA-119 (ISO-9660)
- //
- // Author: Nir Milstein
- #include "Config.h" // Global Configuration - do not remove!
- #ifndef __ECMA_119_H_
- #define __ECMA_119_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 LOGICAL_BLOCK_SIZE 2048
- /////////////////////////////////////////////////////////////////////////////
- // Recording of Descriptor Fields (ECMA-119 7)
- // 16-bit Numerical Value (ECMA-167 7.2)
- typedef UINT16 LB16; // A Little-Endian 16-bit (ECMA-119 7.2.1)
- typedef UINT16 MB16; // A Big-Endian 16-bit (ECMA-119 7.2.2)
- // Both-Bytes 16-bit (ECMA-119 7.2.3)
- typedef struct BB16_TAG {
- LB16 wLE16; // Little-Endian
- MB16 wBE16; // Big-Endian
- } BB16;
- // 32-bit Numerical Value (ECMA-167 7.3)
- typedef UINT32 LB32; // A Little-Endian 32-bit (ECMA-119 7.3.1)
- typedef UINT32 MB32; // A Big-Endian 32-bit (ECMA-119 7.3.2)
- // Both-Bytes 32-bit (ECMA-119 7.3.3)
- typedef struct BB32_TAG {
- LB32 dwLE32; // Little-Endian
- MB32 dwBE32; // Big-Endian
- } BB32;
- // Separators (ECMA-119 7.4.3)
- #define SEPARATOR1 0x2E
- #define SEPARATOR2 0x3B
- // File-Identifier (ECMA-119 7.5.1)
- #define SHORT_ID_LENGTH 32
- /////////////////////////////////////////////////////////////////////////////
- // Volume Descriptors (ECMA-119 8)
- #define VOLUME_DESC_LEN 2048
- #define STANDARD_ID_LEN 5
- // Generic Volume Descriptor (ECMA-119 8.1)
- struct GenericVolumeStructureDesc {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- BYTE aReserved[2041];
- };
- #define STANDARD_ID_CD001 "CD001"
- #define DESC_TYPE_BOOT 0
- #define DESC_TYPE_PRIMARY_VOLUME 1
- #define DESC_TYPE_SUPPL_VOLUME 2
- #define DESC_TYPE_VOLUME_PARTITION 3
- #define DESC_TYPE_TERMINATOR 255
- // Boot Record (ECMA-119 8.2)
- struct BootRecordDesc {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- BYTE sBootSystemID[32];
- BYTE sBootID[32];
- BYTE aBootSystemUse[1977];
- };
- // Volume Descriptor-Set Terminator (ECMA-119 8.3)
- #define VolumeDescriptorSetTerminator GenericVolumeStructureDesc
- // Root-Directory Record (ECMA-119 8.9.1)
- // Record Timestamp (ECMA-119 9.1.5)
- typedef struct RecordTimestamp_TAG {
- BYTE uYear; // Since 1900
- BYTE uMonth;
- BYTE uDay;
- BYTE uHour;
- BYTE uMinute;
- BYTE uSecond;
- BYTE uGMT_Offset;
- } RecordTimestamp;
- struct ReservedDirRecord {
- UINT8 cbLengthOfDirRecord;
- UINT8 cbExtendedAttrRecordLength;
- BB32 dwExtentLocation;
- BB32 dwDataLength;
- RecordTimestamp rtsRecording;
- UINT8 uFlags;
- UINT8 uFileUnitSize;
- UINT8 uInterleaveGapSize;
- BB16 uVolumeSequenceNumber;
- UINT8 cbLengthOfDirID;
- BYTE cDirID;
- };
- // Primary-Volume Descriptor (ECMA-119 8.4)
- #define MAX_ID_LENGTH 128
- // Volume Timestamp (ECMA-119 8.4.26.1)
- typedef struct VolumeTimestamp_TAG {
- BYTE sYear[4];
- BYTE sMonth[2];
- BYTE sDay[2];
- BYTE sHour[2];
- BYTE sMinute[2];
- BYTE sSecond[2];
- BYTE sHundredthsOfSec[2];
- BYTE uGMT_Offset;
- } VolumeTimestamp;
- struct PrimaryVolumeDesc {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- UINT8 uUnused1;
- BYTE sSystemID[32];
- BYTE sVolumeID[32];
- BYTE aUnused2[8];
- BB32 dwVolumeSpaceSize;
- BYTE aUnused3[32];
- BB16 uVolumeSetSize;
- BB16 uVolumeSequenceNumber;
- BB16 uLogicalBlockSize;
- BB32 dwPathTableSize;
- LB32 dwLocationOfLPathTable;
- LB32 dwLocationOfOptionalLPathTable;
- MB32 dwLoactionOfMPathTable;
- MB32 dwLoactionOfOptionalMPathTable;
- struct ReservedDirRecord rdrRootDir;
- BYTE sVolumeSetID[MAX_ID_LENGTH];
- BYTE sPublisherID[MAX_ID_LENGTH];
- BYTE sDataPreparerID[MAX_ID_LENGTH];
- BYTE sApplicationID[MAX_ID_LENGTH];
- BYTE sCopyrightFileID[37];
- BYTE sAbstractFileID[37];
- BYTE sBibliographicFileID[37];
- VolumeTimestamp vtsCreation;
- VolumeTimestamp vtsModification;
- VolumeTimestamp vtsExpiration;
- VolumeTimestamp vtsEffective;
- UINT8 uFileStructureVersion;
- UINT8 uReserved;
- BYTE aApplicationUse[512];
- BYTE aReserved[653];
- };
- // Supplementary Volume Descriptor (ECMA-119 8.5)
- struct SupplementaryVolumeDesc {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- UINT8 uVolumeFlags;
- BYTE sSystemID[32];
- BYTE sVolumeID[32];
- BYTE aUnused1[8];
- BB32 dwVolumeSpaceSize;
- BYTE aEscapeSequences[32];
- BB16 uVolumeSetSize;
- BB16 uVolumeSequenceNumber;
- BB16 uLogicalBlockSize;
- BB32 dwPathTableSize;
- LB32 dwLocationOfLPathTable;
- LB32 dwLocationOfOptionalLPathTable;
- MB32 dwLoactionOfMPathTable;
- MB32 dwLoactionOfOptionalMPathTable;
- struct ReservedDirRecord rdrRootDir;
- BYTE sVolumeSetID[MAX_ID_LENGTH];
- BYTE sPublisherID[MAX_ID_LENGTH];
- BYTE sDataPreparerID[MAX_ID_LENGTH];
- BYTE sApplicationID[MAX_ID_LENGTH];
- BYTE sCopyrightFileID[37];
- BYTE sAbstractFileID[37];
- BYTE sBibliographicFileID[37];
- VolumeTimestamp vtsCreation;
- VolumeTimestamp vtsModification;
- VolumeTimestamp vtsExpiration;
- VolumeTimestamp vtsEffective;
- UINT8 uFileStructureVersion;
- UINT8 uReserved;
- BYTE aApplicationUse[512];
- BYTE aReserved[653];
- };
- // Volume Partition Descriptor (ECMA-119 8.6)
- struct VolumePartitionDesc {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- UINT8 uUnused;
- BYTE aSystemID[32];
- BYTE aVolumePartitionID[32];
- BB32 dwVolumePartitionLocation;
- BB32 dwVolumePartitionSize;
- BYTE aSystemUse[1960];
- };
- /////////////////////////////////////////////////////////////////////////////
- // File and Directory Descriptors (ECMA-119 9)
- // Directory/File Record (ECMA-119 9.1)
- struct DirFileRecord {
- UINT8 cbLengthOfDirRecord;
- UINT8 cbExtendedAttrRecordLength;
- BB32 dwExtentLocation;
- BB32 dwDataLength;
- RecordTimestamp rtsRecording;
- UINT8 uFlags;
- UINT8 uFileUnitSize;
- UINT8 uInterleaveGapSize;
- BB16 uVolumeSequenceNumber;
- UINT8 cbLengthOfFileID;
- BYTE sFileID[];
- BYTE aPadding[];
- BYTE aSystemUse[];
- };
- struct FILEREC
- { // Total size MUST fit a multiple of DWORDs
- UINT32 StartAddr; /* 4 bytes : Location start block address */
- UINT32 Size; /* 4 bytes : File size in Bytes */
- WCHAR Name[CLIPS_MAX_FILENAME_LEN]; /* xx bytes : File Name */
- UINT8 FileType; /* 1 byte ; index of the file type */
- };
- #define FILE_FLAGS_HIDDEN 0x01
- #define FILE_FLAGS_DIRECTORY 0x02
- #define FILE_FLAGS_ASSOCIATED 0x04
- #define FILE_FLAGS_RECORD_VALID 0x08
- #define FILE_FLAGS_PROTECTION 0x10
- #define FILE_FLAGS_MULTI_EXT 0x80
- #define FILE_FILEID_CURRENT "0"
- #define FILE_FILEID_PARENT "1"
- // The following two variants of the Dir/File Record are used to access the
- // members in a 32-bit Word-aligned manner.
- struct DirFileRecord_Aligned {
- BYTE aPadding[2];
- struct DirFileRecord dfrRec;
- };
- struct ReservedDirRecord_Aligned {
- BYTE aPadding[2];
- struct ReservedDirRecord rdrRec;
- };
- // DVD Copyright-Management Information of System-Use (DVD-ROM Spec., Part 2: File-System, 3.7.2)
- struct DirFileRecordSystemUse_DVD {
- BYTE ucCGMSInfo;
- UINT8 uDataStructureType;
- BYTE aProtectionSystemInfo[4];
- };
- // Path-Table Record (ECMA-119 9.4)
- struct PathTableRecord {
- UINT8 cbLengthOfDirID;
- UINT8 cbExtendedAttrRecordLength;
- #ifdef MOTOROLA
- MB32 dwExtentLocation;
- MB16 uParentDirNumber;
- #else
- LB32 dwExtentLocation;
- LB16 uParentDirNumber;
- #endif //MOTOROLA
- BYTE sDirID[];
- BYTE aPadding[];
- };
- // The following variant of the Path-Table Record is used to access the
- // members in a 32-bit Word-aligned manner.
- struct PathTableRecord_Aligned {
- BYTE aPadding[2];
- struct PathTableRecord ptrRec;
- };
- // Extended Attribute Record (ECMA-119 9.5)
- // Note: This class is not required
- /////////////////////////////////////////////////////////////////////////////
- // Implementation-Specific auxiliary structures
- struct GenericVolumeStructureDesc_Base {
- UINT8 uVolumeDescType;
- BYTE aStandardID[STANDARD_ID_LEN];
- UINT8 uVolumeDescVersion;
- };
- #define PARTIAL_VOLUME_DESC_OFFSET 40
- #define DATA_PREPARER_IDENTIFIER_OFFSET 446
- struct VolumeDesc_Partial {
- BYTE sVolumeID[32];
- BYTE aUnused2[8];
- BB32 dwVolumeSpaceSize;
- BYTE aEscapeSequences[32];
- BB16 uVolumeSetSize;
- BB16 uVolumeSequenceNumber;
- BB16 uLogicalBlockSize;
- BB32 dwPathTableSize;
- LB32 dwLocationOfLPathTable;
- LB32 dwLocationOfOptionalLPathTable;
- MB32 dwLoactionOfMPathTable;
- MB32 dwLoactionOfOptionalMPathTable;
- struct ReservedDirRecord rdrRootDir;
- };
- #pragma pack()
- #endif //__ECMA_119_H_