我想使用Windows C/C++ API创建一个任意大小的文件。我正在使用具有32位虚拟地址内存空间的Windows XP service pack 2。我对CreateFile很熟悉。
然而,CreateFile没有大小参数,我想要传递一个大小参数的原因是允许我创建允许用户访问预定大小的数据结构的内存映射文件。你能告诉我合适的Windows C/C++ API函数,它允许我创建一个任意预定大小的文件吗?谢谢
发布于 2011-01-21 05:37:04
要在UNIX上执行此操作,请查找(RequiredFileSize - 1),然后写入一个字节。字节的值可以是任何值,但最明显的选择是零。
发布于 2011-01-21 04:56:10
像往常一样CreateFile,SetFilePointerEx到所需的大小,然后调用SetEndOfFile。
发布于 2011-01-21 05:03:35
你不需要一个文件,你可以使用页面文件作为你的内存映射文件的备份,从MSDN CreateFileMapping函数页面:
如果hFile为INVALID_HANDLE_VALUE,则调用进程还必须在dwMaximumSizeHigh和dwMaximumSizeLow参数中指定文件映射对象的大小。在这种情况下,CreateFileMapping创建一个指定大小的文件映射对象,该对象由系统分页文件支持,而不是由文件系统中的文件支持。
您仍然可以使用DuplicateHandle共享映射对象。
https://stackoverflow.com/questions/4752457
复制相似问题