怎样读取超大偏移量的字符
这个问题是在C++操作win下物理磁盘时发生的void analyze_extended_partition(unsigned int sector_pre){
cout << sector_pre << endl;
extended_partition_offset = sector_pre * BYTE_PER_SECTOR;
cout << extended_partition_offset << endl;
char buffer;
ifstream in("\\\\.\\PHYSICALDRIVE0",ios::binary|ios::in);
in.seekg(extended_partition_offset, ios::beg);
in.read(buffer,sizeof(buffer));
in.close();
partition_table_struct partitions;
if (analyze_partition_table(partitions, &buffer)){
cout << "有效分区表" << endl;
show_logic_partition(partitions);
if(partitions.partition_type_id != 0x00){
analyze_logic_partition(partitions.sector_pre);
}
}else{
cout << "无效分区表" << endl;
}
}我对扩展分区求物理偏移量(相对于0 Cylinder 0 Header 0 Sector),然后在偏移量处取512个Byte
逻辑分区的地址也是在该扩展分区的物理偏移量处累加,每次也是获取512个Byte
但是这个偏移量是非常大的,大概在10^11-10^12之间
而 in.seekg(extended_partition_offset, ios::beg);
的第一个参数是long型。
我用的unsigned long long int型表示的extended_partition_offset
但是这样传参后还是以long型运算的,结果是超出了...
有什么办法对超大便宜的文件进行读取?请各位指教。 多谢,哈哈,终于学会查看MSDN了,¥……%%……*英文
页:
[1]