如何使用SetFilePointerEx转到物理磁盘的末尾?

时间:2011-01-01 23:43:10

标签: delphi winapi pascal

我只能在设置位置时使用SetFilePointerEx就好了。

SetFilePointerEx(PD, 512, @PositionVar, FILE_BEGIN);
SetFilePointerEx(PD, 0, @PositionVar, FILE_CURRENT);

两者都有效;我可以设置位置甚至检查我当前的位置。但是当我根据文档设置FILE_END时,无论第二个参数是什么以及我是否为第三个参数提供指针,它都会失败,即使在许多其他操作可以使用的有效句柄上也是如此失败。

例如:

SetFailed := SetFilePointerEx(PD, 0, @PositionVar, FILE_END);
SetFailed := SetFilePointerEx(PD, 0, nil, FILE_END);

无论我放什么,都失败了。我正在使用物理磁盘的句柄,它肯定有一个结束。 SetFilePointer效果很好,但它比我想要的更麻烦。

这不是世界末日,而是发生了什么。

1 个答案:

答案 0 :(得分:3)

你发现不可能做到这一点。你必须从一开始或当前寻求。使用DeviceIoControl查找设备的大小。