?? struct.h
字號:
typedef struct
{
INT CylinderNum;
INT HeadNum;
INT SectorNum;
}CHS;
/*定義分區表項的結構*/
typedef struct
{
BYTE BootFlag; /*啟動標志*/
CHS StartCHS; /*分區開始的柱面、磁頭、扇區*/
BYTE SystemID; /*分區類型*/
CHS EndCHS; /*分區結束的柱面、磁頭、扇區*/
DWORD RelativeSectors; /*分區相對扇區數,指分區相對于記錄該分區的分區表的扇區位置之差*/
DWORD TotalSectors; /*分區總扇區數*/
}PartitionTable;
/*定義主引導扇區結構*/
typedef struct
{
CHAR bootcode[0x1be]; /*啟動代碼*/
PartitionTable PT[4]; /*分區表*/
WORD EndingFlag; /*結束標識*/
}MBR;
/*磁盤介質類型*/
enum MediaType
{
HardDisk = 0xf8, /*硬盤*/
RAMDisk = 0xfa /*RAM盤*/
};
/*
引導扇區是文件系統的第一個扇區,其中包含分區重要的數據信息——BPB(BIOS Paramenter
Block-磁盤參數表)。磁盤參數表中包含分區總大小、磁盤參數等重要信息。其C語言定義為:
*/
typedef struct
{
BYTE JMPCode[3]; /*引導跳轉代碼*/
CHAR System_ID[8]; /*廠商標志和版本號*/
WORD BytesPerSector; /*每扇區字節數*/
BYTE SectorsPerCluster; /*每簇扇區數*/
WORD ReservedSectors; /*保留扇區數*/
BYTE FatNum; /*FAT的個數*/
WORD RootEntry; /*根目錄項數*/
WORD TotalSectors; /*分區總扇區數(分區小于32M時)*/
MediaType Media; /*分區介質標識*/
WORD SectorsPerFAT; /*每個FAT占的扇區數*/
WORD SectorsPerTrack; /*每道扇區數*/
WORD Heads; /*磁頭數*/
DWORD HiddenSectorNum; /*隱含扇區數*/
DWORD BigTotalSectors; /*分區總扇區數(分區大于32M時)*//*end of 23 Bytes*/
BYTE Drive; /*驅動器號*/
BYTE Head; /*磁頭號*/
BYTE boot_rec_sig; /*含義未知*/
WORD Vol_Serial_NoH;
CHAR Label[11]; /*磁盤卷標號*/
CHAR FileSys_ID[8]; /*文件系統標識號*/
BYTE BootCode[450]; /*啟動代碼*/
}BPB_FAT;
/*定義驅動器參數塊,方便文件管理*/
typedef struct
{
BYTE DriveNo; /* 驅動器號,A = 1,B = 2,etc.*/
BYTE PhyDrive; /* 物理驅動器號*/
WORD BytePerSec; /*每扇區字節數*/
WORD SectorsPerTrack; /*每道扇區號*/
BYTE SecPerClu; /*每簇扇區數,以零為基數*/
WORD FirstFATSec; /*包含第一個FAT的扇區號*/
BYTE FATNum; /*FAT份數*/
WORD RootEntryNum; /*根目錄項數*/
WORD FirstDataSec; /*第一個數據扇區號*/
WORD LastClu; /*最后一個簇*/
WORD SecPreFAT; /*每FAT扇區數*/
WORD RootStartSec; /*根目錄起始扇區號*/
MediaType MediaID; /*介質描述字節*/
WORD FirstFreeClu; /*第一個自由的簇號,= -1 未知*/
WORD FreeClu; /*自由簇數*/
DWORD RelativeSectors; /*指BOOT扇區以前的扇區數*/
DWORD TotalSectors; /*本分區總的扇區數*/
} DPB;
/*目錄項中的時間和日期定義*/
typedef struct
{
WORD Sec;
WORD Min;
WORD Hour;
} FILEMIDTIME;
typedef struct
{
WORD Day;
WORD Mon;
WORD Year;
} FILEMIDDATE;
#define FILENAMELEN 9
#define FILEEXTNAMELEN 4
/*目錄表項的含義*/
typedef struct
{
CHAR FileName[FILENAMELEN]; /*主文件名*/
CHAR ExtName[FILEEXTNAMELEN]; /*擴展文件名*/
BYTE ReadOnly:1; /*文件屬性,只讀位*/
BYTE Hidden:1; /*隱含*/
BYTE System:1; /*系統*/
BYTE Volume:1; /*卷標*/
BYTE Directory:1; /*目錄*/
BYTE Archives:1; /*檔案*/
CHAR Reserved[11]; /*保留*/
FILEMIDTIME FileCreTime; /*文件創建時間*/
FILEMIDDATE FileCreDate; /*日期*/
WORD StartCluster; /*起始簇*/
DWORD FileLength; /*文件長度*/
}Directory_FAT;
/*目錄項首字節含義*/
enum DirFirstChar
{
DirUnUsed = 0x00, /*本表項沒有使用*/
DirCharE5 = 0x05, /*首字符為0xe5*/
DirisSubDir = 0x2e, /*是一個子目錄 .,..為父目錄*/
DirFileisDeleted = 0xe5 /*文件已刪除*/
};
/*文件結點*/
typedef struct
{
WORD UserCount; /*文件用戶數*/
WORD Mode; /*打開模式,讀,寫*/
struct
{
BOOL DirIsModified:1; /*目錄項是否已改變*/
BOOL DirIsNew:1; /*目錄項是新建的*/
BOOL DirIsFull:1; /*目錄是否已滿*/
} DirFlag;
Directory_FAT DirImg; /*本文件目錄映像*/
DWORD DirOffset; /*本目錄項偏移*/
DWORD DirStart; /*本目錄起始扇區*/
DPB *FileDPB; /*文件設備塊*/
DWORD ByteOffset; /*當前文件指針字節偏移*/
DWORD LargeOffset; /*文件最大偏移量*/
WORD BackClu; /*前一個簇*/
WORD CurrClu; /*當前簇*/
BYTE SectorInClu; /*簇中的扇區*/
WORD ByteInClu; /*在簇中的字節數*/
} FILENODE;
/*分區類型*/
enum PartionType
{
ParUNUsed = 0x00, /*分區沒有使用*/
FAT12 = 0x01,
XENIX = 0x02,
FAT16 = 0x04,
Extend = 0x05,
BigDOS = 0x06,
HPFS = 0x07,
SPLIT = 0x08,
FAT32 = 0x0b,
DM = 0x50,
GB = 0x56,
SPEED = 0x61,
ix386 = 0x63,
Novell286 = 0x64,
Novell386 = 0x65,
PCIX = 0x75,
CPM = 0xdb,
BBT = 0xff
};
/*FAT16 FAT表項的含義*/
enum FAT16TYPE
{
FATUnUsed = 0, /*尚未分配*/
FATReserved = 0xFFF0, /*保留*/
FATReserved1 = 0xFFF0,
FATReserved2 = 0xFFF1,
FATReserved3 = 0xFFF2,
FATReserved4 = 0xFFF3,
FATReserved5 = 0xFFF4,
FATReserved6 = 0xFFF6,
FATBADClu = 0xFFF7, /*表示壞簇,即該簇中磁盤有損壞;*/
FileEnd = 0xFFFF, /*文件結束標識*/
FileEnd1 = 0xFFF8,
FileEnd2 = 0xFFF9,
FileEnd3 = 0xFFFA,
FileEnd4 = 0xFFFB,
FileEnd5 = 0xFFFC,
FileEnd6 = 0xFFFD,
FileEnd7 = 0xFFFE,
FileEnd8 = 0xFFFF
};
/*硬盤緩存結構*/
#define BUFFERSIZE 512
typedef struct _BUFFER
{
struct _BUFFER *B_pNext; /* 指向下一個緩存塊 */
BYTE uc_DiskNo; /* 硬盤號 */
BYTE uc_Flag; /* 緩存標志,凈、不凈 */
DWORD ui_SectorNo; /* 緩存對應的邏輯扇區號 */
BYTE uc_Buffer [BUFFERSIZE]; /* 數據緩存BUFFERSIZE=512字節 */
} BUFFER;
typedef struct
{
DWORD Sector; /*當前扇區*/
WORD CluInSec; /*簇號在扇區中的偏移*/
}CLUINFAT;
typedef struct
{
DWORD ClusterNum; /*當前扇區*/
WORD DirOffset; /*目錄項在扇區中的偏移*/
}DIRINCLU;
typedef struct
{
DWORD SectorNum;
BYTE IsValid:1; /*指示數據有效性*/
BYTE Data[512];
}ABS_SEC_BUF;
typedef struct
{
DWORD SectorNum;
BYTE IsValid:1;
WORD Data[256];
}WORD_SEC_BUF;
typedef struct
{
DWORD SectorNum;
BYTE IsValid:1; /*指示數據有效性*/
DWORD Data[128];
}FAT_BUF;
typedef struct _PATHINFO
{
CByteArray ByteArray;
INT nLayer;
_PATHINFO* pNext;
}PATHINFO;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -