请问如何读出guid partition table备份的资料?以及winio如何访问超2g以外内存?

一只大花猫 2013-10-31 02:10:43
我现在正在想办法读出GPT BACKUP PARTITION 的内容和试图通过winio来读取超过2G外的内存地址(比如0xd3102000,这是我电脑上achi base address的内存地址)

有两个问题想请求协助,非常感谢!

问题一,我用winhex读了一下我那块gpt分区 的U盘,备份的那部分分区内容是在30869470扇区(每扇区内容是512byte),一共是3069504块扇区。

自己想到的办法有三:

方法一.用readFile()从头开始读取,一来效率成问题,二来ReadFile()不支持将14G的内存载入呢。

方法二.循环遍历30869470个扇区,直到读到我想要的扇区为止。可是效率感觉成问题。

方法三,用setFilePointer()将指针指向文件末尾,再从文件的末尾往前偏移 34*512个byte,就可以读到我们想要的值了。只是我还没试成功。读出来的都是0.

问题二,如何通过winio来读取超过2G外的内存地址(比如0xd3102000,这是我电脑上achi base address的内存地址)?有谁有WINIO3.0改进版本可以读出2G以外内存信息的?麻烦告知我,谢谢!
之前有从csdn资源里下载了一个,里面包含一个win.lib和win.dll 不晓得和我这边winio3.0的版本不一样还是啥原因,也没用起来。

人人网上也有篇文章http://blog.renren.com/blog/268443266/456146590告诉我们如何改进的,只要改的那文件好像不在工程范围里面。也还没摸着头脑。万分感谢!
...全文
159 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一只大花猫 2013-11-15
  • 打赏
  • 举报
回复
唉 看来大家都这方面都不熟哇
一只大花猫 2013-11-04
  • 打赏
  • 举报
回复
没人回答啊 呼唤高手哇
一只大花猫 2013-10-31
  • 打赏
  • 举报
回复
补充上c#写的读取gpt的代码(是gpt,不是gpt backup) public static byte[] ReadDiskInfo(int driveIndex,uint mylength) { IntPtr DiskHandle = CreateFile(@"\\.\PhysicalDrive" + driveIndex, GENERIC_READ, CREATE_NEW | CREATE_ALWAYS, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero); if (DiskHandle == IntPtr.Zero) { throw new Exception("CreateFile faild."); } byte[] buffer = new byte[mylength]; uint length = 0; SetFilePointer(DiskHandle, 0, IntPtr.Zero, FILE_BEGIN); ReadFile(DiskHandle, buffer, mylength, ref length, IntPtr.Zero); CloseHandle(DiskHandle); return buffer; } public static byte[] ReadGPT(int driveIndex) { return ReadDiskInfo(driveIndex, 512 * 3); }

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧