【问题标题】:WinAPI GetLastError #5WinAPI GetLastError #5
【发布时间】:2014-06-25 10:48:34
【问题描述】:

我打算将此句柄用于 WriteFile 函数,但 GetLastError 给了我 #5 。我知道这是拒绝访问,但我不知道该怎么做。我检查了一段时间,我看到了它关于用户权限的信息,但我已经以管理员身份进入。

另一件事是:我在 VS2010 编码,当我执行代码时 GetLastError 给我 #5 但当我执行 exe(C://blah/blah/PROJECT_NAME/debug/PROJECT.exe) 它给了我#6。

我只是困惑。非常感谢您的帮助。

HANDLE hAndle = CreateFile("test.txt",
    GENERIC_READ,
    FILE_SHARE_READ,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL
    );
char msge[]="\nsomething\n";
DWORD gb;

if( WriteFile(hAndle,msge,strlen(msge),&gb,NULL) != TRUE )
    cout << GetLastError() << endl;

编辑:我是多么愚蠢。我用这个解决了这个问题: GENERIC_WRITE | GENERIC_READ

真的谢谢你...

【问题讨论】:

  • ERROR_ACCESS_DENIED 表示您没有足够的权限。毕竟,您正在尝试写入仅请求读取权限的句柄。 ERROR_INVALID_HANDLE 表示您的句柄无效。这是您在调用CreateFile 时未能检查错误的结果。

标签: winapi


【解决方案1】:

error codd 6 是:句柄无效。当您尝试在无效路径上使用 OPEN_EXISTING 执行 CreateFile 时,您将返回 INVALID_HANDLE_VALUE。如果将此值传递给 WriteFile,它将返回错误代码 6。

但是,您使用 GENERIC_READ 调用 CreateFile 并使用您获得的句柄,您正在尝试写入文件。这行不通。您必须使用 GENERIC_WRITE 和

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2019-07-31
    • 1970-01-01
    • 2017-12-29
    • 2017-12-21
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多