代码之家  ›  专栏  ›  技术社区  ›  Sadique

无法打开句柄

  •  0
  • Sadique  · 技术社区  · 14 年前

    请参见代码:

    int main(int argc,LPTSTR argv[])
    {
    HANDLE hinFile;
    BOOL check;
    PLARGE_INTEGER file_size;
    hinFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if(hinFile==INVALID_HANDLE_VALUE)
        {printf("INVALID_HANDLE_VALUE\nFile Does Not Exist");exit(0);}
    else{
        check=GetFileSizeEx(hinFile,file_size);
        printf("The Size of File is %d",file_size);
    }
    return 0;
    }
    

    请解释为什么会这样?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Gareth    14 年前

    我对你的代码做了一点修改。

    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    
    int _tmain(int argc, TCHAR *argv[])
    {
    HANDLE hinFile;
    BOOL check;
    LARGE_INTEGER li;
    PLARGE_INTEGER file_size;
    
    file_size=&li;
    
    hinFile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if(hinFile==INVALID_HANDLE_VALUE)
    {
        printf("INVALID_HANDLE_VALUE\nFile Does Not Exist");
    }
    else
    {
        check = GetFileSizeEx(hinFile,file_size);
        printf("The Size of File is %I64d",file_size->QuadPart);
    }
    return 0;
    }
    

    我用visualstudio2005(版本8.0)进行了测试。