?? fatmountpartition.c
字號:
#ifndef _FAT_DEFINE
#include "FAT.c"
#endif
BYTE FATMountPartition(void);
BYTE FATMountPartition(void)
{
register BYTE i,j=0;
xdata DWORD MasterExtLBA,ExtLBA;
bit Master=1,Ext=1;
MasterExtLBA=0x00000000;
ExtLBA=0x00000000;
while(Ext)
{
if (StorageMedia.ReadSector(ExtLBA,DiskBuffer)) {printf("I/O error");return(0);} //讀MBR扇區
// IDEReadSector(ExtLBA,DiskBuffer);
Ext=0;
//檢查MBR扇區標記
if (DiskBuffer[510] != 0x55||DiskBuffer[511] != 0xaa)
{printf("55AA\n"); return(0);} //不正常的引導扇區標志
//加載分區表
for(i=0;i<4;i++)
{
DPT[i].LBABegin=MEMSwap32(DPT[i].LBABegin);
DPT[i].CntSec=MEMSwap32(DPT[i].CntSec);
if (DPT[i].TypeCode==0x01||
DPT[i].TypeCode==0x04||
DPT[i].TypeCode==0x06||
DPT[i].TypeCode==0x0b||
DPT[i].TypeCode==0x0c||
DPT[i].TypeCode==0x0e) //FAT 分區
{
sDPT[j].LBABegin = DPT[i].LBABegin + ExtLBA;
sDPT[j].CntSec = DPT[i].CntSec;
j++;
if (j==FAT_MAX_PARTITIONS) return(j);
}
else if (DPT[i].TypeCode==0x05||DPT[i].TypeCode==0x0f) //擴展分區
{
Ext=1;
if (Master)
{
ExtLBA=DPT[i].LBABegin;
MasterExtLBA=DPT[i].LBABegin;
Master=~Master;
}
else
{
ExtLBA=MasterExtLBA+DPT[i].LBABegin;
}
}
}
}
return(j);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -