如何确定Win32上的最佳磁盘IO块大小?

在Posix系统上,stat结构的st_blksize成员包含给定文件的IO的最佳块大小。 看起来stat(_stat和_stat64)的Win32实现不支持此字段。 什么是确定给定文件或文件系统的最佳IO块大小的Win32等效方法?

我不确定这是否总能返回最佳数字,但Win32调用GetDiskFreeSpace返回lpBytesPerSectorlpSectorsPerCluster ; 乘以那些来获得每个簇的字节,这可能是一个合理的值,用作缓冲区大小。

此调用不适用于文件,而是适用于文件系统,因此在使用文件之前,您必须确定该文件的根目录。