Freigeben über


KeFlushIoBuffers-Funktion (wdm.h)

Die KeFlushIoBuffers Routine löscht den von einer 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, die den Bereich für den E/A-Puffer beschreibt.

[in] ReadOperation

Gibt TRUE- an, wenn das Leeren 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

Nichts

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 ReadOperation-TRUEist, liest der Treiber Informationen vom Gerät in den Systemspeicher, sodass gültige Daten möglicherweise weiterhin in der Prozessoranweisung und datencaches enthalten sind. KeFlushIoBuffers Daten aus den Caches aller Prozessoren in den Systemspeicher leeren, einschließlich des Prozessors, auf dem der Aufrufer ausgeführt wird.

Wenn ReadOperation-FALSE-ist, schreibt der Treiber Daten aus dem Systemspeicher in ein Gerät, sodass gültige Daten möglicherweise im Datencache des Prozessors enthalten sind, aber noch nicht an das Gerät übertragen werden. KeFlushIoBuffers alle Datencaches aller Prozessoren leeren, einschließlich des Prozessors, auf dem der Aufrufer ausgeführt wird.

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

KeFlushIoBuffers nur den Speicherbereich leeren, der von der MDL beschrieben wird, auf die der Mdl Parameter verweist. Zum Leeren aller Speicherbereiche, die von einer MDL-Kette beschrieben werden, ist eine separate 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
mindestens unterstützte Client- Ab Windows 2000 verfügbar.
Zielplattform- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

Siehe auch

FlushAdapterBuffers