📄 smc_fs.h
字号:
};
// =============== 2002.12.20 ADD by HHC =================
typedef struct EntryInfo {
unsigned char ShortName[11];
unsigned char Attrib;
unsigned char NTRes;
unsigned char CrtTimeTenth;
unsigned int CrtTime;
unsigned int CrtDate;
unsigned int LstAccDate;
unsigned int FstClusH;
unsigned int WrtTime;
unsigned int WrtDate;
unsigned int FstClusLO;
unsigned long FileSize;
} SMC_ENTRY_INFO;
//========================================================
typedef struct DIRFILE_INFO {
SMC_ENTRY_INFO Entry;
//unsigned char Short_Name[11];
//unsigned char Attrib;
// unsigned char NTRes;
// unsigned char CrtTimeTenth;
// unsigned int CrtTime;
// unsigned int CrtDate;
// unsigned int LstAccDate;
// unsigned int FstClusH;
// unsigned int WrtTime;
// unsigned int WrtDate;
// unsigned int FstClusLO;
//unsigned long FileSize;
unsigned int LogDrvNum;
unsigned long FstClus;
unsigned long DirClus;
unsigned char Long_Name[MAX_LONGNAME+2];
} SMC_FILE_INFO;
typedef struct DRV_INFO {
unsigned char FAT_Type; // 0: Not Valid 1: FAT12 2:FAT16 3:FAT32
unsigned long RootDirSectors;
unsigned long FAT1StartSector; // FAT1 Start Sector
unsigned long FAT2StartSector; // FAT2 Start Sector
unsigned int FATSize; // FAT Size
unsigned long FirstDataSector; // Cluster Start Sector 2TH CLUSTER
unsigned long DirStartSector; // Root Start Sector
unsigned long DataSec; // Total Data Sector
unsigned long CountofClusters;
unsigned long TotalBytes; // Total Capacity
unsigned long SPClusForGetEmpty; // Start Position for Empty Cluster fast
unsigned long CurrDirectory; // Current Directory Cluster
struct PART_INFO part; // [18Bytes]
struct BS_INFO BS; // [57Bytes]
} SMC_DRV_INFO; // [96Bytes]
/*
struct _FAT_Cache {
unsigned int Used;
unsigned int LogDrvNum;
unsigned int Changed;
unsigned long Addr;
unsigned char Data[1536]; // 512*3 [ because FAT12 ]
};
*/
//extern struct _FILE FILE; // Define in FILE.H
typedef struct _HFILE {
SMC_ENTRY_INFO Entry;
//unsigned char FileName[8];
//unsigned char FileExt[3];
unsigned int Used;
unsigned int DrvNum;
unsigned long OldReadBytes;
unsigned long ReadBytes;
unsigned long Size;
unsigned long FstClus;
unsigned long CurClus;
unsigned long CurOffset;
unsigned long DirClus;
} HFILE;
#pragma packed off
//**********************************************************
//*
//* Global Variables
//*
//**********************************************************
#pragma memory=data_seg(TCC730_INTERNAL)
SMC_FS_EXT struct DRV_INFO mDrvInfo[MAX_PHY_DRIVE];
//SMC_FS_EXT struct _FAT_Cache mFATCache; // Defined already in FSCOMMON.H
SMC_FS_EXT unsigned int mTOTAL_Logic_Drv;
SMC_FS_EXT unsigned int mTOTAL_LogDrvofPhyDrv[MAX_PHY_DRIVE];
SMC_FS_EXT unsigned int mStatus_PhyDrv[MAX_PHY_DRIVE];
SMC_FS_EXT unsigned int mIsUsedVirTualFAT1ForSMC;
SMC_FS_EXT unsigned int mIsUsedFATCacheForWriteFile;
#pragma memory=default
//**********************************************************
//*
//* Definition FUNCTION
//*
//**********************************************************
//===============================================
//= Definition Function of SMC_MPX.C
//===============================================
extern SMC_MPX_ERROR SMC_MPX_InitFileSystem( drv_u16 SMC_DrvNo, drv_u8* Sector_Buffer );
extern unsigned long int SMC_MPX_GetTotalFileNum( drv_u16 SMC_DrvNo, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_CloseFile( drv_u16 FHandle, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_GetFileInfoByIndex( drv_u16 SMC_DrvNo, drv_u16 nFileIndex, SMC_FILE_INFO* lpfi, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_OpenFileByIndex( drv_u16 SMC_DrvNo, drv_u16 nFileIndex, drv_u16 fopen_mode, F_HANDLE* lpnHandle, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_GetLongFileNameByIndex( drv_u16 SMC_DrvNo, drv_u16 nIndex, drv_u8* lpwszLFN, drv_u16* lpnLen, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_DeleteFileByIndex( drv_u16 SMC_DrvNo, drv_u16 nIndex, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_ReadIdTag3( drv_u16 SMC_DrvNo, drv_u16 nIndex, MPX_IDTAG3_INFO* lpIdTag3Info, MPX_TYPE_INFO* lpTypeInfo );
/*
extern SMC_MPX_ERROR SMC_MPX_ReadIdTag3( drv_u16 SMC_DrvNo, drv_u16 nIndex, drv_u8* lpbFlags,
drv_u8 szTitle[30], drv_u8 szArtist[30], drv_u8 szAlbum[30],
drv_u8 szYear[4], drv_u8 szComment[30], drv_u8* lpbGenre,
drv_u8* Tag3Buffer, drv_u8* Sector_Buffer );
*/
extern SMC_MPX_ERROR SMC_MPX_DecoderInit( drv_u16 SMC_DrvNo, drv_u16* lpnHandle, drv_u16 nFileIndex,
drv_u16 nMode, drv_u32 dwBufferStart, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_MoveToDecoder( drv_u16 nHandle, drv_u32 dwMoveCount, drv_u16 nMode, drv_u32 dwBufferStart,
drv_u32 dwBufferEnd, drv_u16 bResetBuffer,
volatile drv_u32* lpdwWritePtr,volatile drv_u16* lpnReadCountPtr,
drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_ReadOnePage( drv_u16 nHandle, drv_u32 dwBufferStart, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_EncoderInit( drv_u16 SMC_DrvNo, drv_u8 lpszName[8], drv_u8 lpszExt[3],
drv_u16* lpnHandle, drv_u32 dwBufferStart, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_MoveFromEncoder( int nHandle, unsigned long dwMoveCount, int bSilent );
extern SMC_MPX_ERROR SMC_MPX_EncoderClose( int nHandle, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_GetEncodeFileNum( drv_u16 SMC_DrvNo, int* lpnFileNum, drv_u8* Sector_Buffer );
extern SMC_MPX_ERROR SMC_MPX_Format( drv_u16 SMC_DrvNo, drv_u16 Mode, drv_u8* Sector_Buffer );
//===============================================
//= Definition Function of FAT System
//===============================================
extern unsigned long SMC_FS_GetEntryCount( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ReadEntrySector( drv_u16 LogDrvNum, drv_u32 dwSectorIndex,
drv_u8* InfoBuffer, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_Format( drv_u16 LogDrvNum, drv_u16 Mode, drv_u8* Buffer512 );
extern SMC_FS_ERROR SMC_FS_InitIO( void );
extern SMC_FS_ERROR SMC_FS_Init( drv_u8* Sector_Buffer );
extern unsigned int SMC_FS_GetTotalOfPhyDrv( void );
extern unsigned int SMC_FS_GetTotalOfLogDrv( drv_u8* Sector_Buffer );
extern unsigned int SMC_FS_GetTotalOfLogDrvInPhyDrv( drv_u16 PhyDrvNum, drv_u8* Sector_Buffer );
extern unsigned int SMC_FS_GetPhyDrvNo( drv_u16 LogDrvNum );
extern unsigned int SMC_FS_GetPhyPartNo( drv_u16 LogDrvNum );
extern code unsigned char* SMC_FS_GetPhyDrvName( drv_u16 PhyDrvNum );
extern unsigned int SMC_FS_GetLogDrvNo( drv_u16 PhyDrvNum, drv_u16 PhyPartNum );
extern SMC_FS_ERROR SMC_FS_GetLogDrvInfo( drv_u16 LogDrvNum, struct DRV_INFO *sDrvInfo, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetTotalOfFileorDirInDirectory( drv_u16 LogDrvNum, drv_u32 DirClus, drv_u16* GetTotalSubDir, drv_u16* GetTotalFile, drv_u16 Max_FILEEXN,
drv_u8* Support_FILEEXN, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetInfoOfFileorDirInDirectory( drv_u16 LogDrvNum, drv_u32 DirClus, drv_u16 Get_Order, drv_u16 DirorFile, struct DIRFILE_INFO* Get_DirFile,
drv_u16 Max_FILEEXN, drv_u8* Support_FILEEXN, drv_u8* Sector_Buffer );
extern unsigned long SMC_FS_CreateDir( drv_u16 LogDrvNum, drv_u32 ParentClus, drv_u8* DirName, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_IsDirectoryCluster( drv_u16 LogDrvNum, drv_u32 DirClus, drv_u8* Sector_Buffer );
extern unsigned long SMC_FS_GetParentDirectoryCluster( drv_u16 LogDrvNum, drv_u32 CurrDirClus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_UpdateFileEntryInRoot( drv_u16 LogDrvNum, drv_u32 DirClus, struct DIRFILE_INFO* GetFileInfo, drv_u16 ModeType, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_DeleteEntry( drv_u16 LogDrvNum, drv_u32 Dir_Clus, drv_u32 Cur_Sector, drv_u16 Order, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetDirEntryWithDirClus( drv_u16 LogDrvNum, drv_u32 DirClus, struct DIRFILE_INFO* Get_DirFile, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetDirClusWithDirName( drv_u16 LogDrvNum, drv_u8* PathName, drv_u32 CurrDirClus, drv_u32* FindDirClus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFileInfoWithFileShortName( drv_u16 LogDrvNum, drv_u8* FileName, drv_u8* ExtName, drv_u32 CurrDirClus,
struct DIRFILE_INFO* GetFileInfo, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetPreviousDir( drv_u16 LogDrvNum, drv_u32 CurrDir_Clus, drv_u32* Prev_DirClus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetInfoOfDirFile( drv_u16 LogDrvNum, drv_u32 StartDir_Clus, drv_u32 Dir_Clus, drv_u32 Get_Sector, drv_u16 Order, struct DIRFILE_INFO* Get_DirFile, drv_u8* Sector_Buffer );
extern unsigned long SMC_FS_ReadFromFile( HFILE* pFile, drv_u8* Buffer, drv_u32 ReadSize );
extern unsigned long SMC_FS_WriteIntoFile( HFILE* pFile, drv_u8* Buffer, drv_u32 WriteSize );
extern SMC_FS_ERROR SMC_FS_DeleteFile( HFILE* pFile, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_FastSeekClusterOfFile( HFILE* pFile, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFastFindForwardCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Offset, drv_u32* Find_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFastFindBackwardCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Offset, drv_u32* Find_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFastFindForwardClusterInFATCache( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Offset, drv_u32* Find_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFastFindBackwardClusterInFATCache( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Offset, drv_u32* Find_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetPreviousDirCluster( drv_u16 LogDrvNum, drv_u32 ParentDir_Clus, drv_u32 Curr_Clus, drv_u32* Prev_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetNextCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32* Next_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetNextCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Next_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetEmptyCluster( drv_u16 LogDrvNum, drv_u32* Empty_Clus, drv_u16 SearchType, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetNextClusterInFATCache( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32* Next_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetNextClusterInFATCache( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Next_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetEmptyClusterInFATCache( drv_u16 LogDrvNum, drv_u32* Empty_Clus, drv_u16 SearchType, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ClearCluster( drv_u16 LogDrvNum, drv_u32 Clear_Clus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetFATInfo( struct DRV_INFO *sDrvInfo );
extern SMC_FS_ERROR SMC_FS_GetFATType( struct DRV_INFO *sDrvInfo );
extern SMC_FS_ERROR SMC_FS_CheckFAT1IsNormal( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetFAT1ForDefected( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetFAT1ForNormal( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_OpenFATCache( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_CloseFATCache( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ChangeFATCache( drv_u16 LogDrvNum, drv_u32 CurrClus, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_FlushFATCache( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetUsedStatusFATCacheForWriteFile( void );
extern SMC_FS_ERROR SMC_FS_SetUnUsedStatusFATCacheForWriteFile( void );
extern SMC_FS_ERROR SMC_FS_CopyFAT1toFAT2( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_CopyFAT2toFAT1( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_CompareFAT1withFAT2( drv_u16 LogDrvNum, drv_u8* Sector_Buffer1, drv_u8* Sector_Buffer2 );
extern SMC_FS_ERROR SMC_FS_GetFreeAndUsedSectorSize( drv_u16 LogDrvNum, drv_u32* FreeSize, drv_u32* UsedSize, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_GetTotalDriveorPartitionInfo( drv_u16 PHY_Drv, drv_u16* LOG_Total_Drv, struct PART_INFO* PartInfo,
drv_u16 Type, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ReadBootSector( drv_u16 PhyDrv, drv_u32 LBA_Addr, struct BS_INFO *BS, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ReadMBR( drv_u16 PHY_Drv, drv_u32 LBA_Addr, struct PART_INFO* MBR, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_MarkOfDoneEraseUnUsedBlockForSMCMedia( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_MarkOfNeedEraseUnUsedBlockForSMCMedia( drv_u16 LogDrvNum );
extern SMC_FS_ERROR SMC_FS_GetIsMarkOfDoneEraseUnUsedBlockForSMCMedia( drv_u16 LogDrvNum );
extern SMC_FS_ERROR SMC_FS_EraseUnUsedBlockForSMCMedia( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_ReadyVirtualFAT1ForSMCMedia( drv_u16 LogDrvNum, struct DIRFILE_INFO* GetFileInfo, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_EraseVirtualFAT1ForSMCMedia( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_WriteFATContentToVirtualFAT1ForSMCMedia( drv_u16 LogDrvNum, drv_u16 FATSector, drv_u8* FATData, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_CopyVirtualFAT1toFAT1ForSMCMedia( drv_u16 LogDrvNum, drv_u8* Sector_Buffer );
extern SMC_FS_ERROR SMC_FS_SetUsedStatusVirtualFAT1ForSMCMedia( void );
extern SMC_FS_ERROR SMC_FS_SetUnUsedStatusVirtualFAT1ForSMCMedia( void );
extern SMC_FS_ERROR SMC_FS_IsUsedStatusVirtualFAT1ForSMCMedia( void );
extern SMC_FS_ERROR SMC_FS_EnableVirtualLPTCacheForForSMCMedia( drv_u16 LogDrvNum );
extern SMC_FS_ERROR SMC_FS_DisableVirtualLPTCacheForForSMCMedia( drv_u16 LogDrvNum );
extern SMC_FS_ERROR SMC_FS_ReadSector( drv_u16 PhyDrvNo, drv_u32 LBA_Addr, drv_u8* ReadBuffer );
extern SMC_FS_ERROR SMC_FS_ReadMultiSectorStart( drv_u16 PhyDrvNo, drv_u32 LBA_Addr );
extern SMC_FS_ERROR SMC_FS_ReadMultiSector( drv_u16 PhyDrvNo, drv_u32 LBA_Addr, drv_u8* ReadBuffer );
extern SMC_FS_ERROR SMC_FS_ReadMultiSectorStop( drv_u16 PhyDrvNo );
extern SMC_FS_ERROR SMC_FS_WriteSector( drv_u16 PhyDrvNo, drv_u32 LBA_Addr, drv_u8* WriteBuffer );
extern SMC_FS_ERROR SMC_FS_WriteMultiSectorStart( drv_u16 PhyDrvNo, drv_u32 LBA_Addr, drv_u32 Size );
extern SMC_FS_ERROR SMC_FS_WriteMultiSector( drv_u16 PhyDrvNo, drv_u32 LBA_Addr, drv_u8* WriteBuffer );
extern SMC_FS_ERROR SMC_FS_WriteMultiSectorStop( drv_u16 PhyDrvNo );
extern SMC_FS_ERROR SMC_FS_GetIsExistOfPhyDrv( drv_u16 PhyDrvNo );
extern SMC_FS_ERROR SMC_FS_IsInited( drv_u16 PhyDrvNo );
extern SMC_FS_ERROR SMC_FS_InitDrive( drv_u16 PhyDrvNo, drv_u8* Sector_Buffer );
extern void SMC_FS_GetPatitionCapacityOfDisk( drv_u16 PhyDrvNo, drv_u32* BlockNum, drv_u16* BlockSize );
extern void SMC_FS_GetCapacityOfDisk( drv_u16 PhyDrvNo, drv_u32* BlockNum, drv_u16* BlockSize );
extern void SMC_FS_GetCHSOfDisk( drv_u16 PhyDrvNo, drv_u16* Cylinder, drv_u16* Head, drv_u16* SectorNum, drv_u16* SectorSize );
extern SMC_FS_ERROR SMC_FS_FormatSurfaceOfDisk( drv_u16 PhyDrvNo, drv_u16 Mode, drv_u8* Sector_Buffer );
extern unsigned int SMC_FS_GetMediaTypeOfDisk( drv_u16 PhyDrvNo );
extern void loc_GetFATOffsetOfCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32* Offset_Sector, drv_u16* Remain_point );
extern unsigned long loc_GetContentOfCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u16 Remain_point, drv_u8* FAT12_Temp, drv_u8* Sector_Buffer );
extern void loc_SetContentOfCluster( drv_u16 LogDrvNum, drv_u32 Curr_Clus, drv_u32 Next_Clus, drv_u16 Remain_point, drv_u8* Sector_Buffer );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -