是否没有GetFilePointer(Ex)Windows API函数
Is there no GetFilePointer(Ex) Windows API function?
我正在调试一个操作文件的程序。例如,我将文件指针设置为偏移量4(使用基数0),但它似乎是从偏移量5开始的。
为了弄清楚发生了什么,我想放一行打印出当前的文件指针(我没有为这个小项目使用IDE,只是使用Notepad2和命令行)。遗憾的是,似乎没有一个Windows API函数来检索当前文件指针,只有一个函数来设置它
我记得在Pascal(在DOS中)中可以找到当前的文件指针,但在Windows中的C++中如何确定当前文件指针?
与大多数同时提供getter和setter(在读写意义上)的函数不同,实际上没有GetFilePointer
或GetFilePointerEx
。
但是,可以通过调用SetFilePointer
(Ex)
来检索值。两个SetFilePointer
函数返回SetFilePointer
的返回/输出,但必须确保指定0
、和FILE_CURRENT
的偏移量作为模式。这样,它从原来的位置移动0个字节,然后返回(我不能保证它是否浪费了CPU周期和RAM来执行零移动,但我认为他们已经优化为不这样做)。
是的,它是不一致的和令人困惑的(而且是冗余的和糟糕的设计),但你可以将它封装在你自己的GetFilePointer(Ex)
函数中:
DWORD GetFilePointer (HANDLE hFile) {
return SetFilePointer(hFile, 0, NULL, FILE_CURRENT);
}
LONGLONG GetFilePointerEx (HANDLE hFile) {
LARGE_INTEGER liOfs={0};
LARGE_INTEGER liNew={0};
SetFilePointerEx(hFile, liOfs, &liNew, FILE_CURRENT);
return liNew.QuadPart;
}
相关文章:
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- C++Windows API MOUSEEVENTF_XDOWN,MOUSEEVENTF_XUP不起作用
- 如何在 Windows API 中更改系统范围的多个游标
- 为什么我在 Windows API 中得到对 TextOut() 函数的未定义引用?
- 谁拥有作为指向 Windows API 函数的指针传递的值?
- 使用 Windows API c++ 的键盘输入
- 程序在对mouse_event的 Windows API 调用中冻结
- 等效的Windows API与Power shell get-physicaldisk命令
- 需要更好地了解使用 Windows API 的智能指针
- 如何检查 CNG Windows API 是否返回符合 FIPS 的算法实现
- Windows API SIZE_T在内存和控制台中不显示相同的值
- 如何在 Windows API 中检测带有虚拟代码的非字母?
- c ++ 是否有任何用于列出 Windows 驱动程序管理器控制台中显示的设备驱动程序的 Windows API?
- Windows API "CreateWindowEx" 在 Python (3.6.8) 64 位使用的 DLL 中工作吗?
- 如何将CString转换为使用WCHAR的Windows API和自定义函数?
- 如何通过Windows API获取所有(未禁用)用户SID?
- 有什么方法可以用本机C 代码替换Windows API计时器(settimer)
- 检查任务栏中的当前应用程序吗?(C ,Windows API)
- 为什么我的 Windows API 回调函数不运行?
- 如何在应用程序正在运行的系统上查看所需的Windows API函数