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)

Vedi anche

FlushAdapterBuffers