Cómo hacer que CreateFile sea lo más rápido posible

Necesito leer el contenido de varios miles de archivos pequeños al inicio. En Linux, solo usar fopen y leer es muy rápido. En Windows, esto sucede muy lentamente.

He cambiado a usar E / S superpuestas (E / S asíncrona) usando ReadFileEx, donde Windows realiza una devolución de llamada cuando los datos están listos para leer.

Sin embargo, las miles de llamadas reales a CreateFile en sí mismas siguen siendo un cuello de botella. Tenga en cuenta que proporciono mis propios buffers, enciendo el indicador NO_BUFFERING, doy la sugerencia SERIAL, etc. Sin embargo, las llamadas a CreateFile tardan varios segundos, mientras que en Linux todo se hace mucho más rápido.

¿Hay algo que se pueda hacer para preparar estos archivos para leerlos más rápidamente?

La llamada a CreateFile es:

            hFile = CreateFile(szFullFileName,
                GENERIC_READ,
                FILE_SHARE_READ | FILE_SHARE_WRITE,
                NULL,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING | FILE_FLAG_SEQUENTIAL_SCAN,
                NULL);

Respuestas a la pregunta(2)

Su respuesta a la pregunta