在Delphi 7中,我使用CreateFileMapping打开一个文件,然后使用MapViewOfFile获取指针。
如何扩展内存并在内存中添加一些字符并将其保存到该文件中?
我已经用适当的模式打开了文件(fmOpenReadWrite,PAGE_READWRITE), 如果我覆盖了字符,它会被保存到文件中,但我需要在文件中间添加额外的值。
答案 0 :(得分:8)
如果文件映射由实际文件而不是内存块支持,那么您可以通过以下两种方式之一调整文件大小:
1)调用CreateFileMapping()
,其大小超过当前文件大小。该文件将调整大小以匹配新映射。
2)使用SetFilePointer()
和SetEndOfFile()
直接调整文件大小,然后使用新尺寸调用CreateFileMapping()
。
CreateFileMapping()
的文档中描述了这两个条件。
答案 1 :(得分:3)
当CreateFileMapping
已创建时,您无法调整使用{{1}}创建的文件映射。请参阅前面关于该主题的讨论:Windows: Resize shared memory。