我只能在设置位置时使用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
效果很好,但它比我想要的更麻烦。
这不是世界末日,而是发生了什么。
答案 0 :(得分:3)
你发现不可能做到这一点。你必须从一开始或当前寻求。使用DeviceIoControl查找设备的大小。