Función KeFlushIoBuffers (wdm.h)

La rutina KeFlushIoBuffers vacía la región de memoria descrita por una MDL de las memorias caché de todos los procesadores.

Sintaxis

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

Parámetros

[in] Mdl

Puntero a un MDL que describe el intervalo del búfer de E/S.

[in] ReadOperation

Especifica TRUE si el vaciado se realiza para una operación de lectura y FALSE para una operación de escritura. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

[in] DmaOperation

Especifica TRUE para una transferencia DMA, FALSE para PIO.

Valor devuelto

None

Observaciones

Los controladores llaman a KeFlushIoBuffers para mantener la integridad de los datos durante las operaciones de transferencia de dispositivos DMA o PIO. Llamar a esta rutina afecta a todos los procesadores de la máquina.

Si ReadOperation es TRUE, el controlador lee información del dispositivo a la memoria del sistema, por lo que es posible que los datos válidos todavía estén en las memorias caché de datos y instrucciones del procesador. KeFlushIoBuffers vacía los datos de todas las memorias caché del procesador en la memoria del sistema, incluido el procesador en el que se ejecuta el autor de la llamada.

Si ReadOperation es FALSE, el controlador escribe datos de la memoria del sistema en un dispositivo, por lo que los datos válidos podrían estar en la caché de datos del procesador, pero aún no se han transferido al dispositivo. KeFlushIoBuffers vacía todas las memorias caché de datos de los procesadores, incluida la del procesador en el que se ejecuta el autor de la llamada.

Como regla general, los controladores deben llamar a KeFlushIoBuffers justo antes de comenzar una operación de transferencia de DMA o inmediatamente después de cualquier operación de lectura de PIO.

KeFlushIoBuffers vacía solo la región de memoria que describe el MDL al que apunta el parámetro Mdl . Para vaciar todas las regiones de memoria descritas por una cadena MDL, se requiere una llamada KeFlushIoBuffers independiente para cada MDL de la cadena.

Para obtener más información, vea los temas siguientes:

Vaciado de datos almacenados en caché duranteel vaciado de datos almacenados en caché durante las operaciones de PIO

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
Reglas de cumplimiento de DDI MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf)

Consulte también

FlushAdapterBuffers