gpt4 book ai didi

delphi - 为什么 CreateFileMapping 返回 "file already exists"?

转载 作者:行者123 更新时间:2023-12-03 14:50:39 27 4
gpt4 key购买 nike

我有一个应用程序,它具有使用 CreateFileMapping 定义的共享内存区域,并且我正在尝试从另一个应用程序读取该内存。

我尝试过这个:

handle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE,
0,$3200, pchar('FileMappingZone'));

但我得到:

Cannot create a file when that file already exists

可能是什么问题?

最佳答案

并非所有将 GetLastError() 值设置为不成功的情况都是错误。首先通过函数的返回值区分错误非常重要,然后检查GetLastError()以获取有关发生的错误类型的更多信息。

对于已经存在的映射,CreateFileMapping 被记录为返回有效句柄GetLastError() 值设置为 ERROR_ALREADY_EXISTS 。在这种情况下,错误值是信息性的:如果您对打开映射之前是否存在感兴趣,检查它是有效的,但这不是错误。您可以通过测试返回值是否为 NULL 来检测失败。否则,您只需继续使用 handle 即可。

附注如果你想在打开之前确保该部分存在,你可以使用 OpenFileMapping对于不存在的部分,这将失败,而不是创建一个新的部分。

关于delphi - 为什么 CreateFileMapping 返回 "file already exists"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750511/

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