Eu posso dizer logo de cara que você não conseguirá configurar o driver de armazenamento padrão da Microsoft com essa granularidade.
Esta é uma pergunta difícil, porque o Gerenciador de Memória e o Gerenciador de Cache e o sistema de disco no Windows estão em constante evolução. O conselho que você obtém para o Windows 2000 pode ser irrelevante para o Windows 2003, que pode ser irrelevante para o Windows 2008, etc. Além disso, você também tem aplicativos como o SQL Server com gerenciadores de cache abrangentes que podem ser totalmente afetados ou não. reagir de maneira imprevisível a qualquer alteração feita no cache do sistema de arquivos do sistema operacional. Além disso, esse é o tipo de funcionalidade que seria assumida por um driver de armazenamento de terceiros se você usasse um. Você pode supor que o fornecido pela Microsoft é mais genérico e, portanto, menos configurável do que um driver que você pode obter da Intel ou da HP, especializado em seu hardware. Muitos drivers de fornecedores exigem que o cache de gravação do Windows seja desativado para ativar seu próprio cache de gravação, etc.
Tudo o que disse, posso ajudá-lo. Desde que você não especificou qual versão do Windows, e como eu disse, coisas como caminhos de registro e valores e funções podem e mudam totalmente entre as versões do Windows, eu só vou assumir 2008R2 / Win7.
Deste artigo da MS :
By default, Windows caches file data that is read from disks and written to disks. This implies that read operations read file data from an area in system memory known as the system file cache, rather than from the physical disk. Correspondingly, write operations write file data to the system file cache rather than to the disk, and this type of cache is referred to as a write-back cache. Caching is managed per file object.
Caching occurs under the direction of the cache manager, which operates continuously while Windows is running.
Quando altero essas caixas de seleção no Gerenciador de dispositivos do Windows para "Ativar gravação em cache no dispositivo" e "Desativar liberação de buffer do cache de gravação do Windows", essas alterações são refletidas nos valores do registro em HKLM\SYSTEM\CurrentControlSet\Enum\<IDE>\<DiskName>\<Serial Number>\Device Parameters\Disk\CacheIsPowerProtected = 1
etc. valores colocados entre parênteses são variáveis.
Mas eu discordo. Você quer alterar o comportamento do cache de arquivos. Como fazer com que ele flush mais ou menos frequentemente.
Você disse que estava interessado em chamadas de API, o que é bom, porque acho que você está interessado em Serviço de Cache Dinâmico do Microsoft Windows . Acho que foi escrito por esse cara . O código fonte da amostra está incluído.
Uma advertência para o Win7 / 2008R2:
The memory management algorithms in Windows 7 and Windows Server 2008 R2 operating systems were updated to address many file caching problems found in previous versions of Windows. There are only certain unique situations when you need to implement this service on computers that are running Windows 7 or Windows Server 2008 R2.
Essencialmente, você usará a função de API do Win32 SetSystemFileCacheSize () . Confira isso:
MinimumFileCacheSize [in]
The minimum size of the file cache, in bytes. The virtual memory manager attempts to keep at least this much memory resident in the system file cache.
To flush the cache, specify (SIZE_T) -1.
Isso implica que você pode liberar o cache à vontade, em qualquer horário que lhe agrade.
Boa sorte!