Funzione KeFlushIoBuffers (wdm.h)
La routine KeFlushIoBuffers scarica l'area di memoria descritta da un MDL dalle cache di tutti i processori.
Sintassi
void KeFlushIoBuffers(
[in] PMDL Mdl,
[in] BOOLEAN ReadOperation,
[in] BOOLEAN DmaOperation
);
Parametri
[in] Mdl
Puntatore a un MDL che descrive l'intervallo per il buffer di I/O.
[in] ReadOperation
Specifica TRUE se lo scaricamento viene eseguito per un'operazione di lettura e false per un'operazione di scrittura. Per altre informazioni, vedere la sezione Osservazioni seguente.
[in] DmaOperation
Specifica TRUE per un trasferimento DMA, false per PIO.
Valore restituito
Nessuno
Osservazioni
I driver chiamano KeFlushIoBuffers per mantenere l'integrità dei dati durante le operazioni di trasferimento dei dispositivi DMA o PIO. La chiamata a questa routine influisce su tutti i processori nel computer.
Se ReadOperation è TRUE, il driver legge le informazioni dal dispositivo alla memoria di sistema, quindi i dati validi potrebbero essere ancora presenti nell'istruzione del processore e nelle cache dei dati. KeFlushIoBuffers scarica i dati da tutte le cache dei processori alla memoria di sistema, incluso il processore in cui è in esecuzione il chiamante.
Se ReadOperation è FALSE, il driver scrive i dati dalla memoria di sistema a un dispositivo, quindi i dati validi potrebbero trovarsi nella cache dei dati del processore ma non ancora trasferiti al dispositivo. KeFlushIoBuffers scarica tutte le cache dei dati dei processori, incluso quello del processore in cui è in esecuzione il chiamante.
Come regola generale, i driver devono chiamare KeFlushIoBuffers appena prima di avviare un'operazione di trasferimento DMA o immediatamente dopo qualsiasi operazione di lettura PIO.
KeFlushIoBuffers scarica solo l'area di memoria descritta dal file MDL a cui punta il parametro Mdl. Per scaricare tutte le aree di memoria descritte da una catena MDL, è necessario un KeFlushIoBuffers separato chiamare per ogni MDL nella catena.
Per altre informazioni, vedere gli argomenti seguenti:
scaricamento dei dati memorizzati nella cache durante le operazioni DMAscaricamento dei dati memorizzati nella cache durante le operazioni PIO
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 2000. |
piattaforma di destinazione | Universale |
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
regole di conformità DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |