在 windows8 上使用 C 读取引导扇区
read boot sector using C on windows8
我尝试使用这个程序读取引导扇区
int lire_secteur(int num_sect,unsigned char* buf)
{
int retCode = 0;
unsigned char secteur[512];
char disque[10] ;
char partition ;
FILE* device ;
do
{
disque[0]='[=11=]' ;
scanf("%c",&partition) ;
if (partition=='0')
{
strcpy(disque,"\\.\PHYSICALDRIVE0") ;
}
else
{
sprintf(disque,"\\.\%c:",partition) ;
}
device = fopen(disque, "rb+");
}
while (device == NULL) ;
fseek( device,num_sect*512 , SEEK_SET );
if (fread (secteur, 512,1, device) < 1)
{
printf("erreur\n");
return 1 ;
}
else
{
memcpy(buf,secteur, 512);
retCode=0;
}
return retCode;
}
我已经成功读取了硬盘驱动器中的所有扇区,但是当我想读取引导扇区时,我有这个:
是我的代码中的问题还是由于 windows8?
你得到了正确的结果,那就是引导扇区。
您可能希望以十六进制格式打印出来,而不仅仅是像那样的字符串,因为您将向屏幕输出随机控制字符。
(这是一个相对较旧的,但确实出现在搜索中)
看起来可能是正确的数据,但要理解它,您需要使用 NTFS header 布局来解析它。
参见:
https://www.codeproject.com/Articles/81456/An-NTFS-Parser-Lib
https://sourceforge.net/projects/ntfs-search/
我尝试使用这个程序读取引导扇区
int lire_secteur(int num_sect,unsigned char* buf)
{
int retCode = 0;
unsigned char secteur[512];
char disque[10] ;
char partition ;
FILE* device ;
do
{
disque[0]='[=11=]' ;
scanf("%c",&partition) ;
if (partition=='0')
{
strcpy(disque,"\\.\PHYSICALDRIVE0") ;
}
else
{
sprintf(disque,"\\.\%c:",partition) ;
}
device = fopen(disque, "rb+");
}
while (device == NULL) ;
fseek( device,num_sect*512 , SEEK_SET );
if (fread (secteur, 512,1, device) < 1)
{
printf("erreur\n");
return 1 ;
}
else
{
memcpy(buf,secteur, 512);
retCode=0;
}
return retCode;
}
我已经成功读取了硬盘驱动器中的所有扇区,但是当我想读取引导扇区时,我有这个:
是我的代码中的问题还是由于 windows8?
你得到了正确的结果,那就是引导扇区。 您可能希望以十六进制格式打印出来,而不仅仅是像那样的字符串,因为您将向屏幕输出随机控制字符。
(这是一个相对较旧的,但确实出现在搜索中)
看起来可能是正确的数据,但要理解它,您需要使用 NTFS header 布局来解析它。
参见: https://www.codeproject.com/Articles/81456/An-NTFS-Parser-Lib https://sourceforge.net/projects/ntfs-search/