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 ulteriori informazioni, vedere la sezione Osservazioni successiva.
[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 comunque trovarsi nella cache dei dati e delle istruzioni del processore. KeFlushIoBuffers scarica i dati dalle cache di tutti i 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 del processore, incluso quello del processore in cui è in esecuzione il chiamante.
Come regola generale, i driver devono chiamare KeFlushIoBuffers appena prima di iniziare un'operazione di trasferimento DMA o immediatamente dopo qualsiasi operazione di lettura PIO.
KeFlushIoBuffers scarica solo l'area di memoria descritta dall'MDL a cui punta il parametro Mdl . Per scaricare tutte le aree di memoria descritte da una catena MDL, è necessaria una chiamata KeFlushIoBuffers separata per ogni MDL nella catena.
Per altre informazioni, vedere gli argomenti seguenti:
Scaricamento dei dati memorizzati nella cache durante operazioni DMA che scaricano dati memorizzatinella cache durante operazioni PIO
Requisiti
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) |