方法一:使用WinHex
1、使用WinHex打开你的U盘:
Tools->Open Disk->Physical Media
注意:不要使用Logical Drive Letters打开U盘,因为逻辑方式无法访问第一物理扇区。

2、之后就可以复制自己的引导程序到U盘的第一扇区了。
注意:
1、第一扇区的1c6-1c9区域记录的是逻辑第一扇区对应的物理扇区的起始扇区。一般是3F(63)
2、似乎无法对U盘进行磁盘复位操作。
方法二:使用CreateFile
1、使用CreateFile打开物理磁盘,第一个参数:
const char *UDiskName = "\\\\.\\PHYSICALDRIVE1";//打开物理磁盘,一般来说0为硬盘,1为U盘
2、读取U盘第一个扇区的内容以便得到那个映射值(1c6-1c9)
ReadFile(hUpan,buf,512,&dReads,NULL);
MapValue = *((DWORD*)(buf+0x1c6));
3、重置指针
SetFilePointer(hUpan, 0, 0, FILE_BEGIN);
4、写入你的引导程序即可,记得把那个映射值写回U盘。
ReadFile(hBootFile,buf,512,&dReads,NULL);
*((DWORD*)(buf+0x1c6)) = MapValue;
//Write file boot.bin to my U disk
WriteFile(hUpan,buf,512,&dReads,NULL);
注意:在使用WriteFile的时候,写入粒度为扇区大小。即不可以只是写入100字节。
本文介绍了两种方法将操作系统写入U盘的FAT32引导扇区。方法一是通过WinHex软件,需注意避免以逻辑方式打开U盘;方法二是利用CreateFile函数,涉及读取、修改U盘扇区内容。每种方法都强调了对扇区映射值的处理和写入粒度的要求。
1206

被折叠的 条评论
为什么被折叠?



