gpt4 book ai didi

winapi - 如何写入使用 FILE_FLAG_NO_BUFFERING 打开的文件的结尾?

转载 作者:行者123 更新时间:2023-12-02 00:57:41 32 4
gpt4 key购买 nike

我正在使用VB6和Win32 API将数据写入文件,此功能用于导出数据,因此磁盘写入性能是我考虑的关键因素。因此,在调用 CreateFile 打开文件时,我使用 FILE_FLAG_NO_BUFFERINGFILE_FLAG_WRITE_THROUGH 选项。

FILE_FLAG_NO_BUFFERING 要求我使用自己的缓冲区并将数据以磁盘扇区大小的倍数写入文件,这通常没有问题,除了数据的最后一部分(如果是)扇区大小的精确倍数将包括文件中的字符零填充,一旦写入最后一个 block ,如何设置文件大小以不包括这些字符零?

我可以使用SetEndOfFile,但这需要我关闭文件并重新打开它,而不使用FILE_FLAG_NO_BUFFERING。我见过有人谈论 NtSetInformationFile 但我找不到如何在 VB6 中使用和声明它。 SetFileInformationByHandle 可以完全满足我的要求,但它仅在 Windows Vista 中可用,我的应用程序需要与以前版本的 Windows 兼容。

最佳答案

我相信 SetEndOfFile 是唯一的方法。

我同意 Mike G. 的观点,即无论是否使用 FILE_FLAG_NO_BUFFERING,都应该对代码进行测试。现代操作系统上的 Windows 文件缓冲非常有效。

关于winapi - 如何写入使用 FILE_FLAG_NO_BUFFERING 打开的文件的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/147996/

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