2个驱动 2个分区?
大家好,
想对nf的驱动进行了修改, 这样可以每个分区对应每个驱动,不知道对否???
看了韦伯大哥的注册表分区想通过下面方法实现:
EBOOT 只有一个BINFS 分区, 分区由读取注册表来分区
过程如下: 2450 + CE5
1. 默认的 smflash.dll 在fmd.cpp里面 只修改 NUM_OF_BLOCKS 比如 smflash 只想识别第一个分区:32M,那么
NUM_OF_BLOCKS = 32M/BLOCK_SIZE
2. 第二个分区的 驱动: smflash2.dll 在fmd里面修改 NUM_OF_BLOCKS = 第二个分区的大小
同时在 FMD_WriteSector() 和 FMD_ReadSector()中 分别作偏移
FMD_LB_ReadSector(startSectorAddr + SECTOR_OFFSET.....)
FMD_SB_ReadSector(startSectorAddr + SECTOR_OFFSET.....)
FMD_SB_WriteSector(startSectorAddr+ SECTOR_OFFSET....)
FMD_LB_WriteSector(startSectorAddr+ SECTOR_OFFSET....)
SECTOR_OFFSET计算如下: (32M)/SECTOR_SIZE
注册表做相应修改如下:
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Folder"="flash"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH]
"Prefix"="DSK"
"Dll"="smflash.dll"
"Index"=dword:1
"Order"=dword:0
"Profile"="SMFLASH"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SMFLASH2]
"DefaultFileSystem"="FATFS"
"PartitionDriver"="mspart.dll"
"Folder"="flash2"
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"MountFlags"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SMFLASH2]
"Prefix"="DSK"
"Dll"="smflash2.dll"
"Index"=dword:2
"Order"=dword:0
"Profile"="SMFLASH2"
"IClass"="{A4E7EDDA-E575-4252-9D6B-4195D48BB865}"
这样在系统起来的时候通过读取注册表进行分区, 起来之后可以读取到 一个盘符, 可是重启之后MBR 表被冲掉了, 导致无法进入nk,
我感觉很奇怪, 我在计算偏移的时候, 已经特意往mbr起始sector后面偏移了 近10个block, 为什么还会被冲掉???