我正在使用 VB6 和 Win32 API 将数据写入文件,此功能用于导出数据,因此写入磁盘的性能是我考虑的关键因素。因此,我在通过调用打开文件时使用FILE_FLAG_NO_BUFFERING
和选项。FILE_FLAG_WRITE_THROUGH
CreateFile
FILE_FLAG_NO_BUFFERING
要求我使用自己的缓冲区并将数据以磁盘扇区大小的倍数写入文件,这通常没有问题,除了数据的最后一部分,如果它不是扇区大小的精确倍数将包括字符零填充文件,一旦写入最后一个块以不包含这些字符零,如何设置文件大小?
我可以使用SetEndOfFile
,但这需要我关闭文件并重新打开它而不使用FILE_FLAG_NO_BUFFERING
. 我见过有人谈论NtSetInformationFile
但是我找不到如何在 VB6 中使用和声明它。SetFileInformationByHandle
可以做我想要的,但是它只在 Windows Vista 中可用,我的应用程序需要与以前版本的 Windows 兼容。