一个简单问题,在纯win32下,怎么样得到一个打开文件的当前偏移地址?

sonic123 2008-11-22 12:36:55

HANDLE hFile;
hFile = ::CreateFile(c_pathfile,GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);

比如这样打开文件,然后进行一些读写操作,怎么样得到当前的偏移地址?就好比CFile的 GetPosition()
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonic123 2008-11-22
  • 打赏
  • 举报
回复
看哪个api的说明?我现在就是不知道用哪个api.

我上面就是打个比方,我就是想问用CreateFile打开的文件,经过一些读写操作后,怎么得到当前文件的操作偏移量.

或者换个说法,与SetFilePointer相反的函数是什么?与CFile的 GetPosition() 作用相同的.
la_feng 2008-11-22
  • 打赏
  • 举报
回复
看看api的参数说明吧
Lnnu_lc 2008-11-22
  • 打赏
  • 举报
回复
帮顶
星羽 2008-11-22
  • 打赏
  • 举报
回复

ULONGLONG GetPosition(HANDLE hFile)
{
LARGE_INTEGER liPos;
liPos.QuadPart = 0;
liPos.LowPart = ::SetFilePointer(hFile, liPos.LowPart, &liPos.HighPart , FILE_CURRENT);
return liPos.QuadPart;
}

就呆在云上 2008-11-22
  • 打赏
  • 举报
回复
我觉得应该不行,不过就我所知,c语言里面的ftell可以:
#include <stdio.h>

FILE *stream;

int main( void )
{
long position;
char list[100];
if( fopen_s( &stream, "crt_ftell.c", "rb" ) == 0 )
{
// Move the pointer by reading data:
fread( list, sizeof( char ), 100, stream );
// Get position after read:
position = ftell( stream );
printf( "Position after trying to read 100 bytes: %ld\n",
position );
fclose( stream );
}
}
lsldd 2008-11-22
  • 打赏
  • 举报
回复
istream::tellg

Gets the value for the stream’s get pointer.

Return Value
A streampos type, corresponding to a long.

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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