zy_sunshine 发表于 2010-2-16 01:11:41

怎样读取超大偏移量的字符

这个问题是在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型运算的,结果是超出了...

有什么办法对超大便宜的文件进行读取?请各位指教。

whistler_wmz 发表于 2010-2-16 12:48:56

zy_sunshine 发表于 2010-2-17 11:16:08

多谢,哈哈,终于学会查看MSDN了,¥……%%……*英文
页: [1]
查看完整版本: 怎样读取超大偏移量的字符