⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtfiles.h

📁 最新MTK手机软件源码
💻 H
📖 第 1 页 / 共 4 页
字号:

typedef ONE_BYTE_ALIGN_ADS struct {
   BYTE NearJump[3];
   RTFBIOSParameter BP;
   BYTE BootCode[512-3-sizeof(RTFBIOSParameter)-sizeof(WORD)];
   WORD Signature;
} RTFBootRecord; /* ! Must SYNC ! */

#if defined(WIN32)
#pragma pack()
#endif

// API functions

// General File I/O

RTTDLL RTFHANDLE RTFAPI RTFOpenFile(const WCHAR * FileName, DWORD Flags, RTFHANDLE handle, RTFDirLocation * DSR_Hint);
RTTDLL RTFHANDLE RTFAPI RTFOpen(const WCHAR * FileName, DWORD Flags);
RTTDLL RTFHANDLE RTFAPI RTFReopen(const WCHAR * FileName, DWORD Flags, RTFHANDLE handle);
RTTDLL RTFHANDLE RTFAPI RTFOpenHint(const WCHAR * FileName, DWORD Flags, RTFDirLocation * DSR_Hint);

RTTDLL int       RTFAPI RTFCloseFile(RTFHANDLE File, BYTE freeSlot);
#define RTFKEEPSLOT 0
#define RTFFREESLOT 1
RTTDLL int       RTFAPI RTFClose(RTFHANDLE File);
#define RTFSoftClose(File) RTFCloseFile(File, RTFKEEPSLOT)

RTTDLL int       RTFAPI RTFRead(RTFHANDLE File, void * DataPtr, UINT Length, UINT * Read);
RTTDLL int       RTFAPI RTFWrite(RTFHANDLE File, void * DataPtr, UINT Length, UINT * Written);
RTTDLL int      RTFAPI RTFSeek(RTFHANDLE File, int Offset, int Whence);
RTTDLL int       RTFAPI RTFExtend(RTFHANDLE File, DWORD Length);
RTTDLL int       RTFAPI RTFCommit(RTFHANDLE File);
RTTDLL int       RTFAPI RTFTruncate(RTFHANDLE File);

// Information about Files

RTTDLL int       RTFAPI RTFGetFileInfo(RTFHANDLE File, RTFFileInfo * FileInfo);
RTTDLL int       RTFAPI RTFGetFileSize(RTFHANDLE File, DWORD * Size);
RTTDLL int       RTFAPI RTFSetFileTime(RTFHANDLE File, const RTFDOSDateTime * Time);

// File Attributes

RTTDLL int       RTFAPI RTFGetAttributes(const WCHAR * FileName);
RTTDLL int       RTFAPI RTFSetAttributes(const WCHAR * FileName, BYTE Attributes);

// Directories

RTTDLL int       RTFAPI RTFGetCurrentDir(WCHAR * DirName, UINT MaxLength);
RTTDLL int       RTFAPI RTFSetCurrentDir(const WCHAR * DirName);
RTTDLL int       RTFAPI RTFCreateDir(const WCHAR * DirName);
RTTDLL int       RTFAPI RTFRemoveDir(const WCHAR * DirName);
RTTDLL int       RTFAPI RTFCompactDir(const WCHAR * DirName, DWORD Flags);

// Finding Files

RTTDLL RTFHANDLE RTFAPI RTFFindFirstEx  (const WCHAR * NamePattern, BYTE Attr, BYTE AttrMask, RTFDOSDirEntry * FileInfo, WCHAR * FileName, UINT MaxLength);
RTTDLL int       RTFAPI RTFFindNextEx   (RTFHANDLE File, RTFDOSDirEntry * FileInfo, WCHAR * FileName, UINT MaxLength);
RTTDLL int       RTFAPI RTFFindClose(RTFHANDLE File);
RTTDLL int       RTFAPI RTFGetDiskInfoEx(const WCHAR * DriveName, RTFDiskInfo * DiskInfo, int Flags);

// File Name Operations

RTTDLL int       RTFAPI RTFRename(const WCHAR * FileName, const WCHAR * NewName);
RTTDLL int       RTFAPI RTFDelete(const WCHAR * FileName);
RTTDLL int       RTFAPI RTFMakeTempFileName(const WCHAR * DirName, WCHAR * FileName, UINT MaxLength);
RTTDLL int       RTFAPI RTFMakeFileName(const RTFDOSDirEntry * FileInfo, WCHAR * FileName);
RTTDLL int       RTFAPI RTFExpandName(WCHAR * FileName, UINT MaxLength);

// Disk and Volume Management

RTTDLL int       RTFAPI RTFResetDisk(const WCHAR * DriveName);
RTTDLL int       RTFAPI RTFGetDiskInfoEx(const WCHAR * DriveName, RTFDiskInfo * DiskInfo, int Flags);
RTTDLL int       RTFAPI RTFGetPartitionInfo(const WCHAR * DriveName, RTFPartitionInfo * PartitionInfo);
RTTDLL int       RTFAPI RTFSetVolumeLabel(const WCHAR * DriveName, const WCHAR * Label);
RTTDLL int       RTFAPI RTFFormat(const WCHAR * DriveName, UINT MinSectorsPerCluster, RTFFormatCallback Progress, DWORD Flags);
RTTDLL int       RTFAPI RTFCheckDiskBufferSize(const WCHAR * DriveName);
RTTDLL int       RTFAPI RTFCheckDisk(const WCHAR * DriveName, void * Buffer, UINT BufferSize, RTFCheckDiskCallback ErrorHandler, DWORD Flags);

RTTDLL int       RTFAPI RTFSanityCheck(void);
RTTDLL int       RTFAPI RTFClearDiskFlag(void);
RTTDLL int       RTFAPI RTFSetDiskFlag(void);

// Miscellaneous File Functions

RTTDLL int       RTFAPI RTFCommitAll(const WCHAR * DriveName);
RTTDLL int       RTFAPI RTFCloseAll(void);
RTTDLL int       RTFAPI RTFUnlockAll(void);
RTTDLL void      RTFAPI RTFShutDown(void);
RTTDLL RTFErrorAction RTFAPI RTFDefaultCriticalErrorHandler(WCHAR Drive, DWORD SerialNumber, int ErrorCode);
RTTDLL int       RTFAPI RTFCreateMasterBootRecord(void * SectorBuffer, const RTFPartitionRecord * DiskGeometry);
RTTDLL int       RTFAPI RTFSplitPartition(void * MasterBootRecord, RTFSector Sectors);
RTTDLL int       RTFAPI RTFCreateBootSector(void * BootSector, const RTFPartitionRecord * Partition, BYTE MediaDescriptor, UINT MinSectorsPerCluster, DWORD Flags);

// Raw I/O functions
RTTDLL int       RTFAPI RTFRawLowLevelFormat(int DeviceIndex, const WCHAR * DeviceName, RTFFormatCallback Progress, DWORD Flags);

// Functions for Debugging

RTTDLL void      RTFAPI RTFBufferInfo(RTFBufferStatistic * BufferInfo);

// Obsolete functions

RTTDLL RTFHANDLE RTFAPI RTFFindFirst(const WCHAR * NamePattern, BYTE Attr1, BYTE Attr2, RTFDOSDirEntry * FileInfo, WCHAR * FileName);
RTTDLL int       RTFAPI RTFFindNext (RTFHANDLE File, RTFDOSDirEntry * FileInfo, WCHAR * FileName);
RTTDLL int       RTFAPI RTFGetDiskInfo(const WCHAR * DriveName, RTFDiskInfo * DiskInfo);

#ifdef RTF_32_BIT
#ifdef RTT32_VER
#if RTT32_VER >= 202
RTTDDL RTFileSystemHandlers RTFilesFileSystem;
#endif
#endif
#endif

/* MTK Enhancement, Karen Hsu, ADD START */
/*************************************************/
/*------------- Internal EXTERN -------------*/
#define ParseFileName(FileName) ParseFileName1((const char *)FileName, (RTFHANDLE) NULL)

typedef enum { NotMounted, Initialized, Mounted, Accessible, HasFileSystem } MountStates;

typedef enum {NeverUsed, Available, Lfn, InUse} DirEntry;

typedef enum { NormalFile, FileMapFile, Volume, PhysicalDisk } FileKind;

#define SEARCH_FILES  0
#define SEARCH_LABEL  1
#define SEARCH_PARENT 2

#define RTF_BAD_CLUSTER       0x0FFFFFF7L
#define RTF_INVALID_CLUSTER   0xFFFFFFFFL
#define RTF_CLUSTER_CHAIN_END 0x0FFFFFF8L  // also 0x0FFFFFF9..0x0FFFFFFF, test for >=, write RTF_CHAIN_END_MARK
#define RTF_ROOT_DIR          0xFFFFFFFFL  // pseudo cluster for the root directory (not for FAT-32)

#define FIRST_FILE_CLUSTER(Dir)               (((RTFCluster)((Dir).FirstClusterHi) << 16) + (Dir).FirstCluster)
#define SET_FIRST_FILE_CLUSTER(Dir, Cluster)  (Dir).FirstCluster = (Cluster), (Dir).FirstClusterHi = (Cluster) >> 16
#define CLUSTER_BIT(ClusterMap, C)  ((ClusterMap[C / 8] & (1 << (C % 8))) != 0)
#define SET_CLUSTER_BIT(ClusterMap, C)    ClusterMap[C / 8] |= 1 << (C % 8)
#define CLEAR_CLUSTER_BIT(ClusterMap, C)    ClusterMap[C / 8] &= ~(1 << (C % 8))

#if defined(WIN32)
#pragma pack(1)
#endif
typedef ONE_BYTE_ALIGN_ADS struct {
   BYTE Ord;          // sequency number (backwards, 0x40 set if last record)
   WORD Name1[5];     // name chars 1..5
   BYTE Attributes;   // magic value
   BYTE Type;         // must be zero
   BYTE CheckSum;     // checksum of the short name
   WORD Name2[6];     // name chars 6..11
   WORD FirstCluster; // zero
   WORD Name3[2];     // name chars 12..13
} LFNDirEntry;
#if defined(WIN32)
#pragma pack()
#endif

RTTDDL RTFTables  gFS_Data; /* Move to custom, Karen Hsu, 2004/08/30 */
//RTTDDL RTFTables  RTFData;
RTTDDL const WCHAR dchar_dot[]; /* . */
RTTDDL const WCHAR dchar_dot_dot[]; /* .. */
RTTDDL const WCHAR dchar_start_dot_star[];
RTTDDL RTFMutex * RTFLock;

RTTDDL RTFMutex *MTFMLock;

RTTDDL RTFMutex *MTXLock;

#ifdef __FS_MOVE_SUPPORT__
RTTDDL RTFMutex *MTMoveLock;
#endif

RTTDDL RTFMutex *MTXdelLock;

#ifdef __FS_SORT_SUPPORT__
RTTDDL RTFMutex *MTSortLock;
#endif

#ifdef __FS_TRACE_SUPPORT__
RTTDDL RTFMutex *MTTraceLock;
#endif

RTTDDL int DrvMappingOld;
RTTDDL int DrvMappingNew;

RTTDLL int        RTFAPI SearchFile(RTFile * f, UINT Flags, const char * FileName, RTFDirLocation * DSR_Hint);
RTTDLL RTFile *   RTFAPI ParseFileName1(const char * FileName, RTFHANDLE File);
RTTDLL void       RTFAPI RTFInit(void);
RTTDLL void       RTFAPI DiscardAllBuffers(RTFDevice * Dev);
RTTDLL void       RTFAPI MountLogicalDrive(RTFDrive * Drive, MountStates State);
RTTDLL void       RTFAPI FlushAllBuffers(RTFDevice * Dev);
RTTDLL void       RTFAPI FreeFTSlot(RTFile * f);
RTTDLL RTFile *   RTFAPI ParseFileHandle(RTFHANDLE File);
RTTDLL int        RTFAPI WFNamesMatch(const char * N1, const char * N2);
RTTDLL RTFDOSDirEntry * RTFAPI GetDir(RTFDrive * Drive, const RTFDirLocation * Pos);
RTTDLL DirEntry   RTFAPI EntryType(const RTFDOSDirEntry * D);
RTTDLL int        RTFAPI LFNCharCount(const LFNDirEntry * LD);
RTTDLL void       RTFAPI CopyLFN(char * Name, const LFNDirEntry * LD);
RTTDLL RTFDOSDirEntry * RTFAPI NextDir(RTFDrive * Drive, RTFDirLocation * DSR);
RTTDLL int        RTFAPI MakeShortFileName(const RTFDOSDirEntry * FileInfo, char * FileName, UINT MaxLength);
RTTDLL void       RTFAPI FileNameExtendToWCHAR(char *filename);
RTTDLL WCHAR      RTFAPI wchartoupper(WCHAR c);
RTTDLL void       RTFAPI MakePseudoRootDirEntry(RTFDrive * Drive, RTFDirEntry * DirEntry);
RTTDLL void       RTFAPI InitFilePointer(RTFile * f);
RTTDLL RTFHANDLE  RTFAPI MakeNewFileHandle(RTFile * f);
RTTDLL void       RTFAPI FreeFTSlotAndDevice(RTFile * f);
RTTDLL void       RTFAPI UnlockDevice(RTFDevice * Dev);
RTTDLL BYTE       RTFAPI ShortNameCheckSum(const BYTE * Name);
RTTDLL int        RTFAPI FileNamesMatch(const WCHAR * p, const WCHAR * n);
RTTDLL void       RTFAPI DeleteDirEntry(RTFile * f);
RTTDLL void       RTFAPI UpdateDirEntry(RTFile * f);
RTTDLL void       RTFAPI ExtendFile(RTFile * f, DWORD Bytes);
RTTDLL void       RTFAPI CommitBuffer(RTFDevice * Dev);
RTTDLL RTFCluster RTFAPI GetClusterValue(RTFDrive * Drive, RTFCluster Cluster);
RTTDLL void       RTFAPI SetClusterValue(RTFDrive * Drive, RTFCluster Cluster, RTFCluster Value);

RTTDLL int        RTFAPI SafeLock(DWORD Lock, RTFDevice * Dev, UINT Timeout);
RTTDLL int        RTFAPI SafeUnlock(DWORD Lock);
RTTDLL void       RTFAPI CheckNotOpen(RTFile * File);
RTTDLL int        RTFAPI UpdateClusterWatermark(RTFDrive * Drive, RTFCluster Watermark, int DeltaFreeClusters);
RTTDLL int        RTFAPI RTFCheckDiskFlag(void);
RTTDLL void       RTFAPI CheckSharing(RTFile * File);
RTTDLL RTFCluster RTFAPI SafeGetClusterValue(RTFDrive * Drive, RTFCluster Cluster);
RTTDLL void       RTFAPI DelDirEntry(RTFDrive * Drive, RTFDirLocation * LongPos, const RTFDirLocation * Pos);
RTTDLL int        RTFAPI IsValidLongNameChar(WCHAR c);
RTTDLL RTFCluster RTFAPI FATDelete(RTFDrive * Drive, RTFCluster Cluster, RTFile * f);
RTTDLL int        RTFAPI FileNameInvalid(const char * Name);

/*------------- Internal Use -------------*/
typedef enum{
   MT_ENUM_FH_INVALID,
   MT_ENUM_FH_VALID,
   MT_ENUM_FH_MEDIACHANGED,
   MT_ENUM_FH_ABORTED,
   MT_ENUM_FH_EXPORTED
}MT_FH_ENUM;

//Device Flag (lower 16 bit only; higher 16 bit for driver)
#define MT_DEVICE_NOR_FLASH      0x0040
#define MT_DEVICE_NAND_FLASH     0x0080
#define MT_DEVICE_WRITE_PROTECT  0x0100
#define MT_DEVICE_NO_EXPORT      0x0200
#define MT_DEVICE_EXPORTING      0x0400
#define MT_DEVICE_EXTERNAL       0x0800

//Special for function
#define MT_LOCK_ALL              0x00000001           //SafeUnlockDevice
#define MT_LOCK_RTF              0x00000002           //SafeUnlockDevice
#define MT_LOCK_DEV              0x00000004           //SafeUnlockDevice
#define MT_LOCK_FMT              0x00000008           //SafeUnlockDevice
#define MT_LOCK_EXT              0x00000010           //SafeUnlockDevice
#define MT_LOCK_MOVE             0x00000020           //SafeUnlockDevice
#define MT_LOCK_XDEL             0x00000040           //SafeUnlockDevice
#define MT_LOCK_SORT             0x00000080           //SafeUnlockDevice
#define MT_LOCK_TRACE            0x00000100           //SafeUnlockDevice

//drive letter
#define MT_BASE_DRIVE_LETTER     'C'
#define MT_BASE_DRIVE_INDEX      0

//for sanity check
#define MT_CHECKDISK_MAX_DEPTH   10

/*------------- External Use -------------*/
#ifdef __FS_TRACE_SUPPORT__
#define MAX_TRACE_STR_LEN        128
#define MT_TRACE_TMP_LEN         1536
extern DWORD      g_TraceFlag;
extern char       TraceTmpBuf[MT_TRACE_TMP_LEN];
#endif

//Error Code Number
#define MT_SYSTEM_CRASH                -43            //for NAND Bad Block
#define MT_FAIL_GET_MEM                -44            //for get system memory failure
#define MT_READ_ONLY_ERROR             -45            //for access on read only error
#define MT_DEVICE_BUSY                 -46            //for look up device status
#define MT_ABORTED_ERROR               -47            //for abort copy
#define MT_QUOTA_OVER_DISK_SPACE       -48            //for quota management configure check
#define MT_PATH_OVER_LEN_ERROR         -49            //for longh path over 260
#define MT_APP_QUOTA_FULL              -50            //for quota management
#define MT_VF_MAP_ERROR                -51            //for virtual file feature
#define MT_DEVICE_EXPORTED_ERROR       -52            //for usb access in normal mode
#define MT_DISK_FRAGMENT               -53            //for RTF_Extend() user
#define MT_DIRCACHE_EXPIRED            -54            //for dir cache feature
#define MT_QUOTA_USAGE_WARNING         -55            //for quota management run time usage check

// Error codes that related to device driver feature or system/kernel adadption layer
#define MT_MSDC_MOUNT_ERROR            -100           //for MSDC only
#define MT_MSDC_READ_SECTOR_ERROR      -101           //for MSDC only
#define MT_MSDC_WRITE_SECTOR_ERROR     -102           //for MSDC only
#define MT_MSDC_DISCARD_SECTOR_ERROR   -103           //for MSDC only
#define MT_MSDC_PRESNET_NOT_READY      -104           //for MSDC only
#define MT_MSDC_NOT_PRESENT            -105           //for MSDC only

#define MT_EXTERNAL_DEVICE_NOT_PRESENT -106           //for USB OTG only

#define MT_FLASH_MOUNT_ERROR           -120           //for flash driver
#define MT_FLASH_ERASE_BUSY            -121           //for flash driver
#define MT_NAND_DEVICE_NOT_SUPPORTED   -122           //for flash driver

#define MT_LOCK_MUTEX_FAIL             -141
#define MT_NO_NONBLOCKMODE             -142
#define MT_NO_PROTECTIONMODE           -143

//Trace Code Number
#define MT_TRACE_QM_OK                 -500           //for Quota Feature only
#define MT_TRACE_QM_ERR                -501           //for Quota Feature only

//New API
RTTDLL int  RTFAPI MTGetDrive(DWORD Type, DWORD Serial, DWORD AltMask);
RTTDLL int  RTFAPI MTMappingDrive(DWORD UpperOldDrv, DWORD UpperNewDrv);
RTTDLL void RTFAPI MTSetTrace(DWORD Flag, DWORD Timeout);
RTTDLL void RTFAPI MTTraceFS(DWORD TaskId, DWORD FileCode, DWORD Line, int Code, RTFile * f, BYTE * TraceStr);
RTTDLL void * RTFAPI MTProxyGetBuffer (RTFDevice * Dev, RTFSector Sector);
RTTDLL int  RTFAPI MTCopyFileByClusterChain(RTFHANDLE FileDst, RTFCluster *ClustersArray, UINT ClusterNum);
RTTDLL UINT RTFAPI GetFirstSector(WCHAR * FileName, void * SectorContent, UINT *Sector1, UINT *Sector2);
RTTDLL int  RTFAPI SetCopyrightEntry(RTFDirLocation *lFS_CopyrightLongPos, RTFDirLocation *lFS_CopyrightShortPos, RTFDOSDirEntry *lFS_CopyrightDir);
RTTDLL void RTFAPI AdjustBuffer(void);
RTTDLL int  RTFAPI BatchCountFreeClusters(RTFDrive * Drive);
RTTDLL void RTFAPI MTGetDirCacheValue(RTFDrive * Drive, RTFCluster DirCluster, UINT *CurrValue);
RTTDLL void RTFAPI MTSetDirCacheValue(RTFDrive * Drive, RTFCluster DirCluster, UINT NewValue);
RTTDLL void RTFAPI MTExpireDirCacheValue(RTFDrive * Drive, RTFCluster DirCluster);
RTTDLL int  RTFAPI CleanUpDataSectors(RTFDrive * Drive, RTFCluster *Start, int MaxClusters);
RTTDLL void RTFAPI MTCheckSharingWithSpecialKindFh(RTFile * File);

//MTGetDrive Parameter
#define MT_NO_ALT_DRIVE       0x00000001
#define MT_ONLY_ALT_SERIAL    0x00000002
#define MT_DRIVE_I_SYSTEM     0x00000004
#define MT_DRIVE_V_NORMAL     0x00000008
#define MT_DRIVE_V_REMOVABLE  0x00000010
#define MT_DRIVE_V_EXTERNAL   0x00000020

//NTReserved for Find series
typedef enum{
   MT_ENUM_FIND_NONE,
   MT_ENUM_FIND_LFN,
   MT_ENUM_FIND_SFN
}MT_FIND_ENUM;

//MTSetTrace Parameter
#define MT_TRACE_API          0x00000001
#define MT_TRACE_ERROR        0x00000002
#define MT_TRACE_DISABLE      0x00000004
#define MT_TRACE_ALL_TASK     0x00000008

#ifdef __FS_QM_SUPPORT__

typedef struct __QuotaStruct
{
   BYTE        Path[RTF_MAX_PATH/2];
   UINT        Priority;
   UINT        Qmin;
   UINT        Qmax;
   UINT        Uint;
}QuotaStruct;

typedef struct __InternQuotaStruct
{
   UINT        Qmin;
   UINT        Qmax;
   UINT        Qnow;
}InternQuotaStruct;

typedef enum
{
   MT_QP_HIG_ENUM,
   MT_QP_MID_ENUM,
   MT_QP_LOW_ENUM,
   MT_QP_DEL_ENUM
}MT_QP_ENUM;

extern const QuotaStruct gFS_ExtQuotaSet[];
extern InternQuotaStruct gFS_IntQuotaSet[];
extern const UINT    FS_MAX_QSET;
extern WCHAR NvramName[6];

#endif

extern const UINT    FS_MAX_DRIVES;
extern const UINT    FS_MAX_FILES;
extern const UINT    FS_MAX_BUFFERS;
extern const UINT    FS_MAX_THREAD;
extern kal_taskid    gFS_TaskList[];

extern const int     gFS_DeviceNumOfSYSDRV;
extern const UINT    FS_MAX_CHECK_BUFFER;
extern BYTE          gFS_SanityCheckBuffer[];

extern int SysLockFAT; //for USB mode

extern int SysBlockFAT; //for single bank

extern kal_bool COPYRIGHT_USB_ON;

/*************************************************/
/* MTK Enhancement, Karen Hsu, ADD END */

#ifdef  __cplusplus
}
#endif

#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -