KeFlushIoBuffers-Funktion (wdm.h)

Die KeFlushIoBuffers-Routine leert den durch eine MDL beschriebenen Speicherbereich aus Caches aller Prozessoren.

Syntax

void KeFlushIoBuffers(
  [in] PMDL    Mdl,
  [in] BOOLEAN ReadOperation,
  [in] BOOLEAN DmaOperation
);

Parameter

[in] Mdl

Ein Zeiger auf eine MDL, der den Bereich für den E/A-Puffer beschreibt.

[in] ReadOperation

Gibt TRUE an, wenn die Leerung für einen Lesevorgang ausgeführt wird, und FALSE für einen Schreibvorgang. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

[in] DmaOperation

Gibt TRUE für eine DMA-Übertragung an, false für PIO.

Rückgabewert

Keine

Bemerkungen

Treiber rufen KeFlushIoBuffers auf, um die Datenintegrität während DMA- oder PIO-Geräteübertragungsvorgängen aufrechtzuerhalten. Das Aufrufen dieser Routine wirkt sich auf alle Prozessoren auf dem Computer aus.

Wenn ReadOperationauf TRUE festgelegt ist, liest der Treiber Informationen vom Gerät in den Systemspeicher, sodass gültige Daten möglicherweise weiterhin in der Prozessoranweisung und in den Datencaches enthalten sind. KeFlushIoBuffers leeren Daten aus den Caches aller Prozessoren in den Systemspeicher, einschließlich des Prozessors, auf dem der Aufrufer ausgeführt wird.

Wenn ReadOperationauf FALSE festgelegt ist, schreibt der Treiber Daten aus dem Systemspeicher auf ein Gerät, sodass sich gültige Daten möglicherweise im Datencache des Prozessors befinden, aber noch nicht auf das Gerät übertragen werden. KeFlushIoBuffers leert die Datencaches aller Prozessoren, einschließlich des Prozessors, auf dem der Aufrufer ausgeführt wird.

In der Regel sollten Treiber KeFlushIoBuffers kurz vor Beginn eines DMA-Übertragungsvorgangs oder unmittelbar nach einem PIO-Lesevorgang aufrufen.

KeFlushIoBuffers leert nur den Speicherbereich, der von der MDL beschrieben wird, auf die der Mdl-Parameter verweist. Zum Leeren aller Speicherbereiche, die von einer MDL-Kette beschrieben werden, ist ein separater KeFlushIoBuffers-Aufruf für jede MDL in der Kette erforderlich.

Weitere Informationen finden Sie in den folgenden Themen:

Leeren zwischengespeicherter Daten während DMA-VorgängenLeeren zwischengespeicherter Daten während PIO-Vorgängen

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

Weitere Informationen

FlushAdapterBuffers