0

我正在调试一些 WinAPI 应用程序。
在调用该函数之前CreateFileMappingA,文件的大小为0Kb。调用该函数后,文件立即达到200Kb左右。我尝试浏览在线 Windows API 文档,但没有找到任何内容(或者可能不明白)在函数调用之后是否会发生文件写入。参数的flProtect值为PAGE_READWRITE
我真的很想知道该函数的真正作用,尤其是为什么要写入文件。

4

1 回答 1

1

经过一番研究,我发现函数 CreateFileMappingA 是这样调用的:
CreateFileMappingA(fh, NULL, PAGE_READWRITE, 0, 0x336BC, "kll");
根据文档,如果文件大小低于映射目标的长度,则文件将被扩展以适应大小。
因此,就我而言,该文件刚刚创建。

fh = CreateFileA("file2.dat", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE,
        NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);


因此,首先,将使用写入权限创建文件“file2.dat”。它将是 0Kb。然后,在上面调用 CreateFileMappingA 之后,文件大小将是 0x336BC 字节,或 206Kb。

于 2013-02-18T18:09:37.883 回答