hsly110
驱动牛犊
驱动牛犊
  • 注册日期2004-11-03
  • 最后登录2007-12-31
  • 粉丝1
  • 关注0
  • 积分378分
  • 威望40点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
阅读:1883回复:2

发什么IOCTL 码,可以获取文件所在的磁盘偏移地址?

楼主#
更多 发布于:2007-04-10 14:50
  发什么IOCTL 码,可以获取文件所在的磁盘偏移地址?
hsly110
驱动牛犊
驱动牛犊
  • 注册日期2004-11-03
  • 最后登录2007-12-31
  • 粉丝1
  • 关注0
  • 积分378分
  • 威望40点
  • 贡献值0点
  • 好评度36点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-11 15:32
谢谢 devia 大侠
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
板凳#
发布于:2007-04-11 08:25
FSCTL_GET_RETRIEVAL_POINTERS:

用此代码调用DeviceIoControl时,InputBuffer应该包含有 STARTING_VCN_INPUT_BUFFER结构体,这个结构体描述了文件cluster链的首元素,函数成功执行后,OutputBuffer 将装有RETRIEVAL_POINTERS_BUFFER结构体,这个结构体描述了分配图。

STARTING_VCN_INPUT_BUFFER结构很容易懂,我们只需要向StartingVcn.QuadPart传递0,而第二个结构体RETRIEVAL_POINTERS_BUFFER的格式需要好好研究一下。第一个域 (ExtentCount)包含着结构体中Extents元素的数目。StartingVcn文件第一个cluster链的链号。每一个Extents元 素都包含有一个NextVcn,其含有链中cluser的数目,而Lcn——其第一个cluster的cluster号。也就是说所返回的信息就是 cluster链的描述符,其中每一个链都包含有某些个cluster。
人总在矛盾中徘徊。。。
游客

返回顶部