Compartir a través de


PFLUSH_ADAPTER_BUFFERS función de devolución de llamada (wdm.h)

El FlushAdapterBuffers rutina vacía los datos restantes en la caché interna del controlador DMA del sistema o en la caché interna de un adaptador de bus-master al final de una operación de transferencia DMA.

Sintaxis

PFLUSH_ADAPTER_BUFFERS PflushAdapterBuffers;

BOOLEAN PflushAdapterBuffers(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PMDL Mdl,
  [in] PVOID MapRegisterBase,
  [in] PVOID CurrentVa,
  [in] ULONG Length,
  [in] BOOLEAN WriteToDevice
)
{...}

Parámetros

[in] DmaAdapter

Puntero a la estructura DMA_ADAPTER devuelta por ioGetDmaAdapter que representa el adaptador de bus-master o el controlador DMA.

[in] Mdl

Puntero al MDL que describe el búfer pasado anteriormente en la llamada del controlador a MapTransfer.

[in] MapRegisterBase

Especifica los registros de asignación asignados para la operación DMA. El sistema pasa este valor a la rutina de AdapterControl del controlador.

[in] CurrentVa

Puntero a la dirección virtual actual del búfer, descrita por el mdl, donde se produjo la operación de E/S. Este valor debe ser el mismo que el valor inicial CurrentVa pasado a MapTransfer.

[in] Length

Especifica la longitud, en bytes, del búfer.

[in] WriteToDevice

Especifica la dirección de la operación de transferencia DMA: TRUE para una transferencia desde un búfer en la memoria del sistema al dispositivo del controlador.

Valor devuelto

FlushAdapterBuffers devuelve TRUE si los datos restantes en la memoria caché interna del adaptador del controlador DMA o del adaptador de bus-master se han vaciado correctamente en la memoria del sistema o fuera del dispositivo.

Observaciones

FlushAdapterBuffers no es una rutina del sistema a la que se puede llamar directamente por nombre. Esta rutina solo se puede llamar por puntero de la dirección devuelta en una estructura de DMA_OPERATIONS. Los controladores obtienen la dirección de esta rutina llamando a IoGetDmaAdapter.

Para asegurarse de que se complete una transferencia DMA, todos los controladores que realicen operaciones DMA deben llamar a FlushAdapterBuffers antes de completar el IRP que solicitó la transferencia DMA y antes de liberar los registros del mapa.

Un controlador puede obtener el inicial de CurrentVa para el inicio de una transferencia DMA basada en paquetes llamando a MmGetMdlVirtualAddress. Sin embargo, el valor devuelto es un índice en el mdl, en lugar de una dirección virtual válida. Si el controlador debe dividir una solicitud de transferencia grande en más de una operación DMA, debe actualizar currentVa y length para cada operación DMA.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL <= DISPATCH_LEVEL
reglas de cumplimiento de DDI irqlDispatch(wdm)

Consulte también

AllocateAdapterChannel

DMA_ADAPTER

DMA_OPERATIONS

IoGetDmaAdapter

KeFlushIoBuffers

mapTransfer

MmGetMdlVirtualAddress