¿Cómo se determina el disco óptima IO tamaño de bloque en Win32?
Pregunta
En sistemas POSIX, el miembro st_blksize de la estructura stat contiene el tamaño de bloque óptima para IO para un archivo dado. Parece que las implementaciones Win32 de stat (_stat y _stat64) no son compatibles con este campo. ¿Cuál es la forma equivalente de Win32 para determinar la óptima IO tamaño de bloque de un archivo o sistema de ficheros dado?
Solución
No estoy seguro si esto siempre devolverá el número óptimo, pero la llamada Win32 GetDiskFreeSpace
devoluciones, entre otras cosas, lpBytesPerSector
y lpSectorsPerCluster
; multiplicar aquellos para obtener el bytes por cluster que es (quizás) un valor razonable para el uso como un tamaño de búfer.
Esta llamada no se aplica a los archivos, sino más bien los sistemas de archivos, por lo que tendría que averiguar qué raíz de las vidas de archivos antes de usarlo.