首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateFile()失败,GetLastError() =5

CreateFile()失败,GetLastError() =5
EN

Stack Overflow用户
提问于 2011-08-25 23:47:26
回答 3查看 27.3K关注 0票数 1

我已经编写了一个示例应用程序来从另一个文件中读取该文件。当我从虚拟机运行此应用程序时,访问被拒绝。下面是代码。

代码语言:javascript
复制
int _tmain(int argc, _TCHAR* argv[])
{
    WCHAR *wcsPath = L"\\\\150.160.130.22\\share\\123.XML";

    HANDLE hFile = CreateFileW(wcsPath,
                               GENERIC_READ,
                               FILE_SHARE_READ,
                               NULL,
                               OPEN_EXISTING,
                               0,
                               0);

    if (NULL == hFile)
    {
        printf("failed - %d", GetLastError());
    }

    return 0;
}

如果有什么变化,请告诉我。

EN

回答 3

Stack Overflow用户

发布于 2011-08-25 23:49:11

错误代码5代表“访问被拒绝”。您应该检查用户的访问权限。

票数 10
EN

Stack Overflow用户

发布于 2011-08-26 00:03:33

CreateFileW()的错误输出为INVALID_HANDLE_VALUE,而不是NULL。现在,对于文件句柄来说,NULL听起来肯定是一个错误的值,但仍然如此。

粘贴的代码片段到底是你程序的内容,还是复述?

编辑:我发现这里涉及到一个虚拟机。您可以在记事本中从程序运行和出错的虚拟机中打开文件吗

票数 1
EN

Stack Overflow用户

发布于 2011-08-26 00:32:33

我相信the documentation for CreateFile掌握着答案。

可能是您的dwShareMode导致了问题。在那里使用FILE_SHARE_READ表示“允许其他打开程序以读访问方式打开文件”。如果您不指定FILE_SHARE_WRITE`,则其他打开程序将无法打开该文件以进行写入-您的调用将阻止这种情况。

但是,我相信,当阴影会被先前的打开程序破坏时,CreateFile也会失败。如果这是真的,那么如果另一个应用程序已经打开了该文件以进行写访问,那么如果您指定dwShareMode = FILE_SHARE_READ,则对CreateFile的调用将失败。你看到了吗?您可能需要为该dwShareMode参数指定FILE_SHARE_WRITE | FILE_SHARE_READ

试试看。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7193348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档