日期:2014-05-17  浏览次数:20739 次

请问有人知道如何读取大内存的数据呢?
我有个需求,想要读取backup gpt的内容,可是它存储在硬盘扇区的最后面几个扇区里。

我试了几个办法,一是想用SetFilePointer(DiskHandle, -(int)mylength, IntPtr.Zero, FILE_END)将指针指向文件末尾,可是这读取的却是第0个扇区的内容。
还有个笨方法,每次循环一个扇区,然后移动光标,可是这个方法不仅效率有问题,执行结果也有问题。

我听说对于这种大内存的数据,有什么高低位的算法可以解决,可就是不知道高地位怎么算?

我来举个例子,假设我要读取30869504个扇区的内容(每个扇区的内容是512个byte),我该怎么做呢?

------解决方案--------------------
SetFilePointer应该可以,问题是你的偏移地址不能是32bit的int,否则只能移动2GB。