gpt4 book ai didi

winapi - C CreateFileMapping 错误 5 Access Denied ALWAYS

转载 作者:行者123 更新时间:2023-12-02 01:08:02 25 4
gpt4 key购买 nike

求助WINAPI函数CreateFileMapping(),一直返回NULL。在 GetLastError() 之后我得到 5 - “ERROR_ACCESS_DENIED 5 (0x5) 访问被拒绝”。该文件已在 CreateFile 之后创建,没有问题,但在 CreateFileMapping 之后从未成功。

int MapDestFile(LPCWSTR fPath)
{
hDestFile = CreateFile(
fPath,
GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hSourceFile == NULL)
{
printf("%d\n", GetLastError());
}

hDestMapFile = CreateFileMapping(
hDestFile,
NULL,
PAGE_READWRITE,
0,
10,
NULL
);
if (hDestMapFile == NULL)
{
// here always tell error number 5
printf("%d\n", GetLastError());
}
lpMapAddressDestFile = MapViewOfFile(
hDestMapFile,
FILE_MAP_WRITE,
0,
0,
0);

if (lpMapAddressDestFile == NULL)
{
printf("%d\n", GetLastError());
}

return 1;
}

如果有任何建议,我将不胜感激。

谢谢

最佳答案

您需要使用 GENERIC_WRITE | 创建文件GENERIC_READ 以匹配 PAGE_READWRITE

仔细想想,这似乎是不言而喻的。你怎么能有你可以从中读取的内存由你无法读取的文件支持? documentation在任何情况下都会明确指出这一点:

PAGE_READWRITE

The file handle that the hFile parameter specifies must be created with the GENERIC_READ and GENERIC_WRITE access rights.

除此之外,您对调用 CreateFile 的错误检查是错误的。再看看文档。错误由 INVALID_FILE_HANDLE 的返回值指示。

关于winapi - C CreateFileMapping 错误 5 Access Denied ALWAYS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com