📄 mmc_fs.h
字号:
#ifndef __MMCFS_H__
#define __MMCFS_H__
#include "fs_fat.h"
#include "genlib.h"
/////////////////////////////////////////////////////////////////////////////
// Partition IDs
#define PARTID_UNKNOWN 0x00
#define PARTID_FAT12 0x01
#define PARTID_XENIX_ROOT 0x02
#define PARTID_XENIX_USR 0x03
#define PARTID_FAT16_OLD 0x04 // up to 32MB
#define PARTID_EXTENDED 0x05
#define PARTID_FAT16 0x06
#define PARTID_HPFS 0x07
#define PARTID_NTFS 0x07
#define PARTID_ADVANCED_UNIX 0x07
#define PARTID_QNX2 0x07 // QNX2.x pre-1988
#define PARTID_OS2_OLD 0x08
#define PARTID_AIX_BOOT 0x08
#define PARTID_SPLIT 0x08
#define PARTID_COMMODORE_DOS 0x08
#define PARTID_DELL 0x08
#define PARTID_QNX_QNY 0x08 // QNX1.x and 2.x ("qny")
#define PARTID_AIX_DATA 0x09
#define PARTID_COHERENT 0x09
#define PARTID_QNX_QNZ 0x09 // QNX1.x and 2.x ("qnz")
#define PARTID_OS2_BOOT 0x0a
#define PARTID_FAT32 0x0b
#define PARTID_FAT32_LBA 0x0c
/////////////////////////////////////////////////////////////////////////////
#define MMC_FS_UNKNOWN 0
#define MMC_FS_FAT12 1
#define MMC_FS_FAT16 2
#define MMC_FS_FAT32 3
/////////////////////////////////////////////////////////////////////////////
enum TCC730_MMC_ERROR {
MMC_ERR_NOERROR = 0, // 0
MMC_ERR_UNKNOWN, // 1
MMC_ERR_INVALID_FILESYS, // 2
MMC_ERR_ILLEGAL_COMMAND, // 3
MMC_ERR_COMMAND_CRC, // 4
MMC_ERR_PARAM, // 5
MMC_ERR_DATA_CRC, // 6
MMC_ERR_PROTECT, // 7
MMC_ERR_INVALID_CARD, // 8
MMC_ERR_IO, // 9, Read/Write Error
MMC_ERR_HANDLE_EXHAUST, // 10
MMC_ERR_ENTRY_EXHAUST, // 11
MMC_ERR_PARAMETER, // 12
MMC_ERR_FILE_NOT_FOUND, // 13
MMC_ERR_FILE_ALREADY_EXIST, // 14
MMC_ERR_EOF, // 15, End of File
MMC_ERR_READONLY, // 16
MMC_ERR_UNSUPPORT, // 17
MMC_ERR_DISKFULL, // 18
MMC_ERR_OUTOF_RULE, // 19
MMC_ERR_FILE_ALREADY_OPEN, // 20
MMC_ERR_COUNT
};
/////////////////////////////////////////////////////////////////////////////
// Format Level, It can be compatible with previous TCC730 SSFDC definitions
#define MMC_LOW_FORMAT 1
#define MMC_FAST_FORMAT 0
#define MMC_QUICK_FORMAT 2
/////////////////////////////////////////////////////////////////////////////
//typedef struct __tag_MMC_DriveInfo MMC_DiskInfo;
//typedef unsigned long (*TCC730_MMC_GetNextClusterProc)(MMC_DiskInfo* lpInfo, unsigned long int dwCurCluster);
typedef struct __tag_MMC_DriveInfo{
unsigned int nCylinder; // Cylinder, Unused in TCC730_MMC_GetDiskInfo()
unsigned int nHead; // Head/Cylinder
unsigned int nSectorNum; // Sectors/Track
unsigned int nSectorSize; // Bytes/Sector
unsigned int nClusterSize; // Sectors/Cluster
unsigned int nFileSysType; // FileSys Type, Invalid in TCC730_MMC_GetDiskPhysicalInfo()
unsigned long int dwTotalSector; // Total sectors of this partition
unsigned long int dwBootSector;
unsigned long int dwFATStartSector;
unsigned long int dwRootStartSector;
unsigned long int dwDataStartSector;
unsigned long int dwClusterCount;
unsigned long int dwFATSectorCount;
unsigned int nRootEntryCount; // FAT12 & 16 only
unsigned int nFATCount;
unsigned long int dwRootCluster; // Root Cluster Number, Valid only in FAT32
unsigned long dwUsedClusterCount;
unsigned long dwFreeClusterCount;
} MMC_DISK_INFO;
/////////////////////////////////////////////////////////////////////////////
#define MMC_FILE_FLAG_READ 0x0000 // default
#define MMC_FILE_FLAG_WRITE 0x0001
#define MMC_FILE_FLAG_CREATE 0x0002
#define MMC_FILE_FLAG_TRUNCATE 0x0004
#define MMC_FILE_FLAG_CACHE 0x0008 // writing default
#define MMC_FILE_FLAG_USED 0x8000
#define MMC_FILE_FLAG_CREATED 0x4000
typedef struct MMC_FileHandleInfo
{
unsigned int nFlags;
unsigned long dwStartCluster;
unsigned long dwSectorCount;
unsigned long dwFileSize;
unsigned long dwCurCluster;
unsigned int nSectorInCluster;
unsigned long dwSectorPointer;
unsigned long _dwEntrySector;
unsigned int _nEntryIndexInSector;
unsigned long _dwEntryCluster;
unsigned int _nEntrySectorInCluster;
} MMC_FILE_HANDLE_INFO;
typedef struct MMC_FileInfo
{
// Entry Position at Parent Directory Entry
unsigned int _nIndexInSector;
unsigned long _dwSector;
unsigned int _nSectorInCluster;
unsigned long _dwCluster;
// file info
FAT_DIRECTORY_ENTRY entry;
} MMC_FILE_INFO;
typedef int (*TCC730_MMC_ENUM_ENTRY_PROC)(CONST_FAKE FAT_DIRECTORY_ENTRY* lpEntry,
unsigned nEntryIndex,
unsigned long dwSector,
unsigned nSectorInCluster,
unsigned long dwCluster,
void* lpParam);
/////////////////////////////////////////////////////////////////////////////
#define MMC_MAX_FILE_OPEN_NUM 2
#define MMC_FILE_BEGIN 0
#define MMC_FILE_CURRENT 1
#define MMC_FILE_END 2
#if defined(__cplusplus)
extern "C" {
#endif
void TCC730_AdjustParitionEntry (FAT_PARTITION_ENTRY* lpEntry);
void TCC730_AdjustMBR (FAT_MBR* lpMBR);
void TCC730_AdjustPBRCommon (FAT_PBR_HEAD* lpPBR);
void TCC730_AdjustPBR16 (FAT16_PBR* lpPBR);
void TCC730_AdjustPBR32 (FAT32_PBR* lpPBR);
int TCC730_MMC_GetDiskPhysicalInfo (MMC_DISK_INFO* lpInfo);
int TCC730_MMC_GetDiskInfo (MMC_DISK_INFO* lpInfo, void* lpBuffer);
unsigned TCC730_MMC_GetSectorSize (void);
unsigned long TCC730_GetClusterSize (void);
unsigned long TCC730_MMC_GetDiskSectors (void);
unsigned long TCC730_MMC_GetDiskUsedSectors(void* lpBuffer);
unsigned long TCC730_MMC_GetDiskFreeSectors(void* lpBuffer);
///////////////////////////////////////////////////////////////////////////////
// Functions for Enumerate Entries
int TCC730_MMC_EnumEntriesEx (unsigned long dwCurDirectory,
TCC730_MMC_ENUM_ENTRY_PROC lpProc,
void* lpParam, void* lpBuffer);
///////////////////////////////////////////////////////////////////////////////
// Functions for File Information
int TCC730_MMC_GetFileInfoEx (CONST_FAKE char* lpszPathName,
int nLen,
unsigned long dwCurDirectory,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfo (CONST_FAKE char* lpszPathName,
int nLen,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfoByCodeEx (code char* lpszPathName,
int nLen,
unsigned long dwCurDirectory,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfoByCode (code char* lpszPathName,
int nLen,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfoByIndexEx (unsigned long dwCurDirectory,
unsigned nFileIndex,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfoByIndex (unsigned nFileIndex,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
int TCC730_MMC_GetFileInfoByCluster (unsigned long dwCluster,
MMC_FILE_INFO* lpfi,
void* lpBuffer);
unsigned long TCC730_MMC_GetFileSize (CONST_FAKE char* lpszPathName, void* lpBuffer);
int TCC730_MMC_GetLongFileName (CONST_FAKE char* lpszShortName,
unsigned short* lpwszLFN,
int* lpnLen,
void* lpBuffer);
int TCC730_MMC_GetLongFileNameByIndex(int nIndex,
unsigned short* lpwszLFN,
int* lpnLen,
void* lpBuffer);
int TCC730_MMC_DeleteFile (CONST_FAKE char* lpszPathName, void* lpBuffer);
int TCC730_MMC_DeleteFileByIndex (int nIndex, void* lpBuffer);
int TCC730_MMC_DeleteOpenFile (int nHandle, void* lpBuffer);
///////////////////////////////////////////////////////////////////////////////
// Functions for File System Initializing and Directory
int TCC730_MMC_InitFileSystem (void* lpBuffer);
int TCC730_MMC_MakeDirectory (CONST_FAKE char* lpszPathName, unsigned long* lpdwNewDirectory, void* lpBuffer);
int TCC730_MMC_MakeDirectoryByCode (code char* lpszPathName, unsigned long* lpdwNewDirectory, void* lpBuffer);
int TCC730_MMC_SetCurrentDirectory (CONST_FAKE char* lpszPathName, void* lpBuffer);
int TCC730_MMC_SetCurrentDirectoryByCode(code char* lpszPathName, void* lpBuffer);
int TCC730_MMC_SetCurrentDirectoryByCluster(unsigned long dwCluster);
#define TCC730_MMC_ChangeDirectory(__lpszPathName, __lpBuffer) \
TCC730_MMC_SetCurrentDirectory(__lpszPathName, __lpBuffer)
#define TCC730_MMC_ChangeDirectoryByCode(__lpszPathName, __lpBuffer) \
TCC730_MMC_SetCurrentDirectoryByCode(__lpszPathName, __lpBuffer)
#define TCC730_MMC_ChangeDirectoryByCluster(__dwCluster) \
TCC730_MMC_SetCurrentDirectoryByCluster(__dwCluster)
unsigned long TCC730_MMC_GetCurrentDirectory(char* lpszDirName, unsigned nLen, void* lpBuffer);
///////////////////////////////////////////////////////////////////////////////
// Functions for Cache optimizing
void TCC730_MMC_OnIdleRead (void);
void TCC730_MMC_OnIdleWrite (void);
///////////////////////////////////////////////////////////////////////////////
// Finctions for Entry Information
unsigned long TCC730_MMC_GetTotalFileNumEx(unsigned long dwCurDirectory, void* lpBuffer);
unsigned long TCC730_MMC_GetTotalFileNum(void* lpBuffer);
unsigned long TCC730_MMC_GetFreeEntryEx (unsigned long dwCurDirectory, void* lpBuffer);
unsigned long TCC730_MMC_GetFreeEntry (void* lpBuffer);
int TCC730_MMC_AllocEntryEx (unsigned long dwCurDirectory,
CONST_FAKE char* lpszFileName,
int nAttrib,
MMC_FILE_INFO* lpfi,
void* lpBuffer,
int bDirectory);
unsigned long TCC730_MMC_GetEntryCountEx(unsigned dwDirectory, void* lpBuffer);
unsigned long TCC730_MMC_GetEntryCount (void* lpBuffer);
int TCC730_MMC_ReadEntrySectorEx (unsigned dwDirectory,
unsigned long dwSectorIndex,
void* lpBuffer);
int TCC730_MMC_ReadEntrySector (unsigned long dwSectorIndex, void* lpBuffer);
///////////////////////////////////////////////////////////////////////////////
// Functions for File I/O
int TCC730_MMC_OpenFile (CONST_FAKE char* lpszFileName,
int nFlags,
int nAttrib,
int* lpnHandle,
void* lpBuffer);
int TCC730_MMC_OpenFileByCode (code char* lpszFileName,
int nFlags,
int nAttrib,
int* lpnHandle,
void* lpBuffer);
int TCC730_MMC_OpenFileByIndex (int nFileIndex,
int nFlags,
int* lpnHandle,
void* lpBuffer);
int TCC730_MMC_CloseFile (int nHandle, void* lpBuffer);
int TCC730_MMC_GetOpenFile (CONST_FAKE char* lpszPathName, void* lpBuffer);
int TCC730_MMC_GetOpenFileByCode (code char* lpszPathName, void* lpBuffer);
int TCC730_MMC_GetOpenFileByIndex (int nIndex, void* lpBuffer);
int TCC730_MMC_GetOpenFileInfo (int nHandle, MMC_FILE_HANDLE_INFO* lpfhi);
int TCC730_MMC_ReadFileSector (int nHandle, void* lpBuffer);
int TCC730_MMC_WriteFileSector (int nHandle, void* lpDataBuffer, unsigned nLen);
///////////////////////////////////////////////////////////////////////////////
// Functions for File Pointer Moving
int TCC730_MMC_SetFileSectorPointer (int nHandle, long lMoveSector, int nMoveMethod, void* lpBuffer);
int TCC730_MMC_GetFileSectorPointer (int nHandle, unsigned long* lpdwSectorPointer);
///////////////////////////////////////////////////////////////////////////////
// Functions for FORMAT
typedef void (*MMC_FORMAT_PROGRESS_PROC)(unsigned long dwTotalWork, unsigned long dwProgWork);
int TCC730_MMC_Format (int nFormatLevel,
int nExpCluster,
MMC_FORMAT_PROGRESS_PROC lpProc,
void* lpBuffer);
#if defined(__cplusplus)
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -