首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Win7上 C语言如何实现读写扇区

2013-03-14 
Win7下 C语言怎么实现读写扇区?本帖最后由 xtjatqsse 于 2013-02-24 03:35:52 编辑如题,我使用 CreateFile

Win7下 C语言怎么实现读写扇区?
本帖最后由 xtjatqsse 于 2013-02-24 03:35:52 编辑 如题,我使用 CreateFile/ReadFile/WriteFile 写U盘的引导区,但是写完后U盘分区表丢失,且不能启动,通过WinHex查看已经把内容写了进去,就是启动不了,我的代码如下:

char *buffer ;
DWORD actual_read , actual_write ;
if( !( buffer = (char *)malloc(sizeof(char) * ibs) ) )
{
printf( "%s: create buffer error.",progname );
return 0 ;
}
// read 
if( !ReadFile( input_file , buffer, ibs , &actual_read , NULL) && ( actual_read > 0) )
{
printf( "%s: read in put files error.", progname );
return 0 ;
}
// write
SetFilePointer(output_file, 512 * 0, 0, FILE_BEGIN);
if( !WriteFile( output_file , buffer, actual_read , &actual_write, NULL) )
{
printf( "%s: write in out files error.", progname );
return 0 ;
}

if( buffer )
free(buffer);

[解决办法]
不能启动有很多可能性,比如你的格式对么?U盘主要有三种引导方式USB_FDD、USB_ZIP、USB_HDD,每种格式对磁盘的引导分区布局都有不同要求。而且如果你写的引导区格式和U盘已经格式化的格式不兼容也引导不了,比如明明是32K簇的FAT16,你写了FAT32什么的。再说那三种格式,不同的U盘和主板都不一定都支持。你可以用usboot制作的格式好好研究。
[解决办法]
http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=25653
里面找“FDump - Dumping File Sectors Directly from Disk using Logical Offsets”

热点排行