FileStream.Seek vs. Lectura en búfer

Motivado poresta respuesta Me preguntaba qué sucede debajo de la cortina si uno usa muchosFileStream.Seek(-1).

Para mayor claridad, volveré a publicar la respuesta:

using (var fs = File.OpenRead(filePath))
{
    fs.Seek(0, SeekOrigin.End);

    int newLines = 0;
    while (newLines < 3)
    {
        fs.Seek(-1, SeekOrigin.Current);
        newLines += fs.ReadByte() == 13 ? 1 : 0; // look for \r
        fs.Seek(-1, SeekOrigin.Current);
    }

    byte[] data = new byte[fs.Length - fs.Position];
    fs.Read(data, 0, data.Length);
}

Personalmente, habría leído como 2048 bytes en un búfer y buscado ese búfer para el char.

Usando Reflector descubrí que internamente el método está usandoSetFilePointer.

¿Existe alguna documentación sobre el almacenamiento en caché de Windows y la lectura de un archivo al revés? ¿El búfer de Windows "retrocede" y consulta el búfer cuando se usa consecutivamenteSeek(-1) ¿O leerá a partir de la posición actual?

Es interesante que, por un lado, la mayoría de la gente esté de acuerdo con que Windows haga un buen almacenamiento en caché, pero por otro lado, cada respuesta a "leer el archivo al revés" implica leer fragmentos de bytes y operar en ese fragmento.

Respuestas a la pregunta(2)

Su respuesta a la pregunta