📄 infofilter.h
字号:
#define FILE_RECORD_NONE (0xFFFC) // mean no record in this file link list#define FILE_RECORD_BEGIN (0xFFFD)#define FILE_RECORD_END (0xFFFE)// wyc0.68, mean this file record is not link by sort/filter yet#define FILE_RECORD_CLEAN (0xFFFF)#define MM_MAX_FILENAME_LENGTH (12) // total 12 chars in file name.#define MM_MAX_DIRNAME_LENGTH (10) // total 10 chars in dir name.#define MM_ISO_SUPPORT_FILE_LENGTH (64)// define for parsing time information from ISO disc#define IF_TIME_YEAR_RECORD_OFFSET (1980 - 1900) // 1980 is our recording begin, 1900 is ISO9660 recorded from 1900.#define IF_YEAR_SHIFT 26#define IF_MONTH_SHIFT 22#define IF_DATE_SHIFT 17#define IF_HOUR_SHIFT 12#define IF_MIN_SHIFT 6#define IF_SEC_SHIFT 0// wyc0.85, add define#define IF_YEAR_MASK_BIT 0x3F#define IF_MONTH_MASK_BIT 0xF#define IF_DATE_MASK_BIT 0x1F#define IF_HOUR_MASK_BIT 0x1F#define IF_MIN_MASK_BIT 0x3F#define IF_SEC_MASK_BIT 0x3F#define IF_DUMP_IN_SECTOR_SIZE 2048// wyc0.63, add two define for DVD / VCD / CDROM dumped sector number.// wyc0.65, set from 150 to 15 to fix some DVD-ROM can't detect CDROM disc successfully problem.#define IF_DUMP_SECTOR_NUM_CDROM 15#define IF_DUMP_SECTOR_NUM_OTHER 5#define IF_DUMP_SECTOR_NOTCARE_CDROM 0xFE#define IF_DUMP_SECTOR_NOTCARE_OTHER 0xFF// wyc2.36a-909s,#define IF_MODE_CONFIG_SUPPORT 0x1#define IF_MODE_CHECK_MPEG_CD 0x2#define IF_MODE_CLEAR_MODE 0x3#define IF_SUOOPRT_FUSS_MPEGCD 0x1#define IF_MPEG_CD_TRUE 0x2// wyc2.38a-909s, two mode define #define IF_DISC_MODE 1#define IF_DISK_MODE 2// wyc2.55-909P-AP,#define IF_PARSE_FILE_MODE 1#define IF_PARSE_AP_MODE 2// wyc2.14-909s, move define to utl.h.// Follow define for used for FAT#define FAT_MAX_SHORT_FILE_NAME 8#define FAT_START_CLUS_NUM 2#define PARSER_SECTOR_SIZE (2048)#define USB_DEFAULT_SECTOR_SIZE (512)// wyc1.05-909, add one define to record the cached cluster number in DRAM. Beause FAT16 will use 2 bytes per cluster, // so cached cluster mumber is 1024. Total used DRAM is 2048 bytes.#define FAT12_TABLE_CACHE_CLUS_NUM (1364)#define FAT16_TABLE_CACHE_CLUS_NUM (1024)// wyc1.07-909, because FAT32 need 4 bytes to record one cluster in FAT table, so we just use 512 as the cache memory size.#define FAT32_TABLE_CACHE_CLUS_NUM (512)// maybe different in FAT32#define FAT16_TABLE_OCCUPY_SIZE_PER_CLUS (2)#define FAT32_TABLE_OCCUPY_SIZE_PER_CLUS (4)#define FAT_INFO_BYTE_PER_USBSEC (1)#define FAT_INFO_DATA_START_SEC (2)#define FAT_INFO_SECTOR_PER_CLUSTER (3)#define FAT12_TABLE_CLUS_END (0xFFF)#define FAT16_TABLE_CLUS_END (0xFFFF)#define FAT32_TABLE_CLUS_END (0x0FFFFFFF) // FAT is DWORD reverse. So actural value is 0x0FFFFFFF///////////////////////////////////////////////////////// Structure define part.// Define the structure to keep the title's information for comparing and reading correct title key.typedef struct tagMULTI_KEYS_TITLE_LOG{ char cTitleName [15]; // Point to a title name string BYTE bRegionInfo; // Title's region number BYTE bTitleSetNo; // Title set number which has this abnormal phenomenon DWORD dwTitleKeyAddress[MAX_TITLE_KEY_NUM]; // Keep first cell start address of each title key} MULTI_KEYS_TITLE_LOG, *PMULTI_KEYS_TITLE_LOG;// follow structure define are for UDFtypedef struct tagTIMESTAMP{ WORD wTypeAndTimezone; WORD wYear; BYTE bMonth; BYTE bDay; BYTE bHour; BYTE bMinute; BYTE bSecond; BYTE bCentiseconds; BYTE bHundredsofMicroseconds; BYTE bMicroseconds;} PACK_FORMAT TIMESTAMP, * PTIMESTAMP; typedef struct tagEXTENT_AD{ DWORD dwExtentLength; DWORD dwExtentLocation;} PACK_FORMAT EXTENT_AD, * PEXTENT_AD;typedef struct tagLB_ADDR{ DWORD dwLogicBlockNum; WORD wParRefeNum;} PACK_FORMAT LB_ADDR, * PLB_ADDR;typedef struct tagLONG_AD{ DWORD dwExtentLength; LB_ADDR ExtentLocation; BYTE bImpUse[6];} PACK_FORMAT LONG_AD, * PLONG_AD;typedef struct tagDESCRIPTOR_TAG{ WORD wTagIdentifier; WORD wDescriptorVersion; BYTE bTagCheckSum; BYTE bReserved; WORD wTagSerialNum; WORD wDescriptorCRC; WORD wDescriptorCRCLength; DWORD dwTagLocation;} PACK_FORMAT DESCRIPTOR_TAG, * PDESCRIPTOR_TAG;typedef struct tagICB_TAG{ DWORD dwPRNDE; WORD wStrategyType; WORD wStrateryParameter; WORD wMaxNumOfEntry; BYTE bReserve; BYTE bFileType; BYTE bParentICBLoc[6]; WORD wFlag;} PACK_FORMAT ICB_TAG, * PICB_TAG;typedef struct tagAVDP_STRUCTURE{ DESCRIPTOR_TAG DesTag; EXTENT_AD MVDST; EXTENT_AD RVDST;} PACK_FORMAT AVDP_STRUCTURE, * PAVDP_STRUCTURE;typedef struct tagPARTITION_DESCRIPTOR{ DESCRIPTOR_TAG DesTag; DWORD dwVDSNum; WORD wPartitionFlags; WORD wPartitionNumber; BYTE bPartitionContents[32]; BYTE bPartitionContentUse[128]; DWORD dwAccessType; DWORD dwPartitionStartLocation; DWORD dwPartitionLength;} PACK_FORMAT PARTITION_DESCRIPTOR, * PPARTITION_DESCRIPTOR;typedef struct tagFILE_SET_DESCRIPTOR{ DESCRIPTOR_TAG DesTag; BYTE bUnUsedByte[384]; LONG_AD RootICB;} PACK_FORMAT FILE_SET_DESCRIPTOR, * PFILE_SET_DESCRIPTOR;typedef struct tagFILE_ID_DESCRIPTOR{ DESCRIPTOR_TAG DesTag; WORD wFileVerNum; BYTE bFileCharacteristics; BYTE bFILength; LONG_AD ICB; WORD wIULength; } PACK_FORMAT FILE_ID_DESCRIPTOR, * PFILE_ID_DESCRIPTOR;typedef struct tagFILE_ENTRY_DESCRIPTOR{ DESCRIPTOR_TAG DesTag; ICB_TAG ICBTag; BYTE bUnUsedByte1[20]; BYTE bInfoLength[8]; BYTE bLogicBlock[8]; TIMESTAMP AccessTime; BYTE bUnUsedByte2[84]; DWORD dwEALength; DWORD dwADLength; LONG_AD AD1; LONG_AD AD2; } PACK_FORMAT FILE_ENTRY_DESCRIPTOR, * PFILE_ENTRY_DESCRIPTOR;// follow structure define are for FATtypedef struct tagFAT_FS_FAT16_BOOT_SECTOR{ WORD wBytesPerSector; BYTE bSectorsPerCluster; WORD ReservedSectors; BYTE bNumberOfFATs; WORD wRootEntries; WORD wTotalSectors; BYTE bMedia; WORD wSectorsPerFAT; WORD wSectorsPerTrack; WORD wHeadsPerCylinder; DWORD dwHiddenSectors; DWORD dwTotalSectorsBig; } PACK_FORMAT FAT_FS_FAT16_BOOT_SECTOR, * PFAT_FS_FAT16_BOOT_SECTOR;typedef struct tagFAT_FS_FAT16_BPB{ BYTE bJmp[3]; BYTE bOemName[8]; FAT_FS_FAT16_BOOT_SECTOR bBootSector; BYTE bDriveNumber; BYTE bUnused; BYTE bExtBootSignature; DWORD dwSerialNumber; BYTE bVolumeLabel[11]; BYTE bFileSystem[8]; } PACK_FORMAT FAT_FS_FAT16_BPB, * PFAT_FS_FAT16_BPB;// wyc1.07-909, structure define for FAT32.typedef struct tagFAT_FS_FAT32_BOOT_SECTOR{ WORD wBytesPerSector; BYTE bSectorsPerCluster; WORD ReservedSectors; BYTE bNumberOfFATs; WORD wRootEntries; WORD wTotalSectors; BYTE bMedia; WORD wSectorsPerFAT; WORD wSectorsPerTrack; WORD wHeadsPerCylinder; DWORD dwHiddenSectors; DWORD dwTotalSectorsBig; DWORD dw32SectorsPerFAT; WORD w32Flags; WORD w32Version; DWORD dw32RootCluster; WORD w32InfoSector; WORD w32BootBackupStart; BYTE b32Reserved[12];} PACK_FORMAT FAT_FS_FAT32_BOOT_SECTOR, * PFAT_FS_FAT32_BOOT_SECTOR;typedef struct tagFAT_FS_FAT32_BPB{ BYTE bJmp[3]; BYTE bOemName[8]; FAT_FS_FAT32_BOOT_SECTOR bBootSector; BYTE b32DriveNumber; BYTE b32Unused; BYTE b32ExtBootSignature; DWORD dw32SerialNumber; BYTE b32VolumeLabel[11]; BYTE b32FileSystem[8]; } PACK_FORMAT FAT_FS_FAT32_BPB, * PFAT_FS_FAT32_BPB;// wyc1.02, new structure to parse physical sector.typedef struct tagMBR{ BYTE bDummy[454]; DWORD dwLBABegin;} PACK_FORMAT MBR, * PMBR;typedef struct tagFAT_FS_FAT_SFN_ENTRY{ BYTE bDirName[8]; BYTE bDirExtName[3]; BYTE bDirAttr; BYTE bReserved; BYTE bDirCrtTimeTenth; WORD wDirCtrTime; WORD wDirCrtDate; WORD wDirLstAccDate; WORD wDirFstClusHI; WORD wDirWrtTime; WORD wDirWrtDate; WORD wDirFstClusLO; DWORD dwDirFileSize;} PACK_FORMAT FAT_FS_FAT_SFN_ENTRY, * PFAT_FS_FAT_SFN_ENTRY;typedef struct tagFAT_FS_FAT_LFN_ENTRY{ BYTE bLDirOrd; BYTE bLDirName1[10]; BYTE bLDirAttr; BYTE bLDirType; BYTE bLDirChkSum; BYTE bLDirName2[12]; WORD bLDirFstClusLO; BYTE bLDirName3[4];} PACK_FORMAT FAT_FS_FAT_LFN_ENTRY, * PFAT_FS_FAT_LFN_ENTRY;#define ENTRY_RANGE_LENGTH 8 // wyc1.10, need to increase the length to 7typedef struct tagENTRY_RANGE{ BYTE cS[4]; DWORD dwLen; // ** TCH0.50;} ENTRY_RANGE, * PENTRY_RANGE;// LLY1.20 create, declare a file range structure.typedef struct tagFILE_RANGE{ DWORD dwStart; // Start sector DWORD dwLen; // File length in sector unit} FILE_RANGE, *PFILE_RANGE;// File name information structure// NOTICE!! When update structure of FILENAMEINFO, need also to update FILENAMEINFO_LENGTH also.typedef struct tagFILENAMEINFO{ char cName[MM_MAX_FILENAME_LENGTH+1]; BYTE bExtID;} FILENAMEINFO, * PFILENAMEINFO;// dir name information structure// NOTICE !! When update DIRNAMEINFO structure, need also to modify DIRNAMEINFO_LENGTH.typedef struct tagDIRNAMEINFO{ char cName[MM_MAX_DIRNAME_LENGTH+1]; // store directory name BYTE bMMLinkStatus; WORD wMMFileRecordEntry; WORD wMMFileRecordEnd; // wyc1.07-909, can't use define MAX_EXTENSION_NO because it will be changed by SUPPORT_4M_FLASH define, so use another to replace it. // wyc2.60-909P, seemed don't use in code now. // WORD wMMExtFileNum[DEFAULT_MAX_EXTENSION_NO]; // for recording the file number in each extension name in each dirs.} DIRNAMEINFO, * PDIRNAMEINFO;// wyc1.05-909, move these two define from mmanager.h tp infofilter.h// The structures of TREE record.typedef struct tagTREE_INFO{ BYTE bParentID; // parent ID BYTE b1stSubDirID; // 1st sub-directory ID BYTE bNoOfSubDir; // total number of sub-directory} TREE_INFO, * PTREE_INFO;// wyc1.07-909, move define to here.// Max length of DIR_LOC structure#define DIR_LOC_LENGTH 4typedef struct tagDIR_LOC{ BYTE bSector[DIR_LOC_LENGTH]; // keep location (3 BYTE unit)} DIR_LOC, * PDIR_LOC;// Max length of TREE_INFO structure#define TREE_INFO_LENGTH 3// wyc1.05-909, add one define to parse dir information.typedef struct tagFAT_FS_FAT_DIRLOG{ BYTE bMaxStringLen; WORD wMaxDirNO; BYTE bActualDirNO; PDIRNAMEINFO pDirNameList; PTREE_INFO pVolumeDirTree; WORD *pFilesOfDir; PDIR_LOC pDirLoc;} FAT_FS_FAT_DIRLOG, * PFAT_FS_FAT_DIRLOG;// File record structure// NOTICE!! When update structure of FILE_RECORD, need also to update FILE_RECORD_LENGTH also.typedef struct tagFILE_RECORD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -