+ -
当前位置:首页 → 问答吧 → GetFileSize()是否无法获得自身文件大小?

GetFileSize()是否无法获得自身文件大小?

时间:2011-12-14

来源:互联网

C/C++ code

#include <stdio.h>
#include <windows.h>

void main(int argc, TCHAR *argv[])
{
    HANDLE hFile_self;
    DWORD size_self;

    hFile_self = CreateFile("E:/getsize/Debug/getsize.exe",
                        GENERIC_WRITE,                //open for writing
                        0,                                        //do not share
                        NULL,                                    //default security
                        CREATE_ALWAYS,
                        FILE_ATTRIBUTE_NORMAL,//normal file
                        NULL);                                //no attr. template

    size_self = GetFileSize(hFile_self,NULL);

    CloseHandle(hFile_self);
}



我的代码如上,这段代码编译后生成的是getsize.exe,我想要实现的功能是得到本身文件的大小(也就是getsize.exe文件的大小)。但是最后得到的size_self好像永远都是0xffffffff。

实际上getsize.exe的大小只有0x0002b030。

请问这是为什么?

作者: chenj_freedom   发布时间: 2011-12-14

你确认文件打开成功了吗?....

参考下面的
文件名改成\\分割
  GENERIC_READ, //open for writing
  FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,

作者: y_l_stone   发布时间: 2011-12-14

CreateFile("E:/getsize/Debug/getsize.exe",
  GENERIC_WRITE, //open for writing
  0, //do not share
  NULL, //default security
  CREATE_ALWAYS,
  FILE_ATTRIBUTE_NORMAL,//normal file
  NULL); 

我怀疑 hFile_self == 0xFFFFFFFF,
你仔细看一下。

作者: RobertBaker   发布时间: 2011-12-14

GENERIC_WRITE----〉GENERIC_READ

作者: Nowish   发布时间: 2011-12-14