?? file.h
字號:
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龍源
//*************************************************************************
#define BYTE unsigned char
#define WORD unsigned short
#define DWORD unsigned long
#define UINT unsigned int
//****************************************************************************
//the definition of fat16 structure
//****************************************************************************
//Bios parameter blolc
typedef struct _BPB_BLOCK {
BYTE BS_jmpBoo[3];
BYTE BS_OEMName[8];
WORD BPB_BytesPerSec;
BYTE BPB_SecPerClus;
BYTE BPB_RsvdSecCn[2];
BYTE BPB_NumFATs;
WORD BPB_RootEntCnt;
WORD BPB_TotSec16;
BYTE BPB_Media;
WORD BPB_FATSz16;
WORD BPB_SecPerTrk;
WORD BPB_NumHeads;
DWORD BPB_HiddSec;
DWORD BPB_TotSec32;
BYTE BS_DrvNum;
BYTE BS_Reserved1;
BYTE BS_BootSig;
BYTE BS_VolID[4];
BYTE BS_VolLab[11];
BYTE BS_FilSysType[8];
BYTE ExecutableCode[448];
BYTE Marker[2];
} BPB_BLOCK,*PBPB_BLOCK;
//Simple BPB control block
struct _BPB {
BYTE NumFATs;
BYTE SecPerClus;
WORD BytsPerSec;
WORD RsvdSecCnt;
WORD RootEntCnt;
UINT TotSec;
UINT FATSz;
};
//FAT control parameter
typedef struct _FAT_PARAMETER {
DWORD RootDirSectors;
DWORD FirstDataSector;
DWORD FirstFatSecNum;
DWORD FirstRootDirSecNum;
}FAT_PARAMETER,*pFAT_PARAMETER;
// root dir information
struct _DIR
{
BYTE Name[11];
BYTE Attr;
BYTE NTRes;
BYTE CrtTimeTenth;
WORD CrtTime;
WORD CrtDate;
WORD LstAccDate;
WORD FstClusHI;
WORD WrtTime;
WORD WrtDate;
WORD FstClusLO;
DWORD FileSize;
};
// file attribute
#define ATTR_READ_ONLY 0x01
#define ATTR_HIDDEN 0x02
#define ATTR_SYSTEM 0x04
#define ATTR_VOLUME_ID 0x08
#define ATTR_DIRECTORY 0x10
#define ATTR_ARCHIVE 0x20
//file information
struct _FILE
{ unsigned valid; // 1 valid, 0 free.
BYTE isDir:1;
BYTE DirName[11];
DWORD DotDirSecNum;
DWORD Dot;
DWORD DirSectorNum;
WORD DirIndex;
DWORD StartSectorNum;
DWORD CurrentSectorNum;
DWORD SectorOffset;
struct _DIR dir;
DWORD offset;
};
//****************************************************************************
//Functions;
//****************************************************************************
//Converse Byte order
#define ConvTwoBytes(Addr) (*(BYTE*)Addr+0x100*(*(BYTE*)(Addr+1)))
#define ConvFourBytes(Addr) (*(BYTE*)Addr+0x100*(*(BYTE*)(Addr+1))+0x10000*(*(BYTE*)(Addr+2))+0x1000000*(*(BYTE*)(Addr+3)))
BYTE InitFsys();
DWORD SeekSector(DWORD Sector, const char dirname[11],struct _FILE *file);
WORD LinkClusterList(WORD Cluster);
WORD SeekEmptyCluster();
WORD GetListCluster(WORD Cluster);
DWORD ClusterToSec(WORD Cluster);
WORD SecToCluster(DWORD Sector);
BYTE CheckFileName(char * filename, const BYTE dirname[11]);
BYTE LocateDir(struct _DIR* new_dir, struct _FILE * fp);
DWORD LocateFile(const char *filename, struct _FILE *file);
//************************************************************************
//author:dragon
//web:8dragon.com
//2004.2.5完成于桃龍源
//*************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -