请教关于FSCTL_GET_RETRIEVAL_POINTERS的问题,谢了!

StarsunYzL 2007-09-07 01:43:31
先看代码:

#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#include <iostream>
#include <windows.h>
#include <tchar.h>
#include <Winioctl.h>

int main()
{
HANDLE hFile;
DWORD dwRet = 0;
hFile = CreateFile(_T("C:\\2.txt"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, 0);
if (hFile != INVALID_HANDLE_VALUE)
{
STARTING_VCN_INPUT_BUFFER InBuf;
RETRIEVAL_POINTERS_BUFFER OutBuf;
DWORD dwBytesRet;
InBuf.StartingVcn.QuadPart = 0;
ZeroMemory(&OutBuf, sizeof(OutBuf));
DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, &InBuf, sizeof(InBuf), &OutBuf, sizeof(OutBuf), &dwBytesRet, NULL);
dwRet = GetLastError();
CloseHandle(hFile);
}
return dwRet;
}
当2.txt这个文件很小时,DeviceIoControl总是返回ERROR_HANDLE_EOF,但是当我增大2.txt到一定大小时,DeviceIoControl就成功了,而且再减小2.txt到原来的大小DeviceIoControl还是能执行成功,为什么呢???C盘为NTFS格式
...全文
541 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chen1992 2008-11-08
  • 打赏
  • 举报
回复
NTFS文件系统的MFT表,如果文件很小,可以直接存储在其中,系统就不会占用数据区了。
harker007 2008-05-24
  • 打赏
  • 举报
回复
不懂是什么意思
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
都是很好的建议! 值得学习
StarsunYzL 2007-10-02
  • 打赏
  • 举报
回复
硬件/系统 版人气不足啊!大家顶一下吧,我好把帖给结了……
StarsunYzL 2007-09-20
  • 打赏
  • 举报
回复
晕哦~~好久没来,我的帖子居然还在第一页……!……
StarsunYzL 2007-09-07
  • 打赏
  • 举报
回复
无人回答??算了,已经在驱网上得到答案了……

2,640

社区成员

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

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