Невозможно открыть ручку - PullRequest
0 голосов
/ 04 августа 2010

Пожалуйста, посмотрите код:

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;
}

Теперь, в вышеуказанной программе, пытаюсь ли я открыть файл в каталоге исполняемого файла или я указываю путь в качестве аргументов командной строки, единственный выход, который я получаюis:

INVALID_HANDLE_VALUE \ nФайл не существует

Пожалуйста, объясните, почему это происходит?

1 Ответ

2 голосов
/ 04 августа 2010

Я немного изменил ваш код, чтобы он работал.

#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;
}

Я тестировал с Visual Studio 2005 (версия 8.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...