c++ - CreateFile() 返回地址为 FFFFFF 的无效指针

标签 c++ windows msdn createfile

我只想使用函数 CreateFile 读取文件,如下所示:

#include <iostream>
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv)
{
    PIMAGE_DOS_HEADER pImageDosHeader;
    HANDLE hFile = NULL;
    HANDLE hMapObject;
    PUCHAR uFileMap;
    if (argc < 2)
        return (-1);
    std::cout << "hFile=" << hFile << std::endl;
    if (!(hFile = CreateFile((LPCWSTR)argv[1], GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,
        NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)))
    {
        return (-1);
    } else {
        std::cout << argv[1] << std::endl;
        std::cout << "hFile=" << hFile << std::endl;
        getchar();
    }
    return (0);
}

问题是输出如下:

hFile=000000 (the pointer is initialized to NULL -> OK)

hFile=FFFFFF (invalid pointer)

请问有人能帮帮我吗? 预先感谢您的帮助。

最佳答案

以下内容:

if (!(hFile = CreateFile(...)))

不是检查错误的方式。

来自documentation :

If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.

INVALID_HANDLE_VALUE-1,或十六进制的 0xFFFFFFFFF。您需要调用 GetLastError() 来查明发生了什么。

关于c++ - CreateFile() 返回地址为 FFFFFF 的无效指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15273270/

相关文章:

c++ - 为什么我的代码中会出现 strcpy 运行时错误?

c++ - 使用 RapidXML 解析

c++ - 实现队列类,段错误?

windows - 嵌套批处理 for 循环

c# - 在 PC 中使用网络摄像头作为环境光传感器

c++ - _getch 似乎暂停了我的程序

c++ - C++ 中的 "template <typename From, typename Tag> struct Alias;"是什么?

windows - Windows 中的新文件创建事件

c++ - 终止 DebugActiveProcess 或其他调试例程

windows - "TCHAR cFileName[MAX_PATH];"- MSDN 库中的错误?