PFLUSH_ADAPTER_BUFFERS função de retorno de chamada (wdm.h)
A rotina FlushAdapterBuffers libera todos os dados restantes no cache interno do controlador de DMA do sistema ou em um cache interno do adaptador master de barramento no final de uma operação de transferência de DMA.
Sintaxe
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
Ponteiro para a estrutura DMA_ADAPTER retornada por IoGetDmaAdapter que representa o adaptador de master de barramento ou o controlador de DMA.
[in] Mdl
Ponteiro para o MDL que descreve o buffer passado anteriormente na chamada do driver para MapTransfer.
[in] MapRegisterBase
Especifica os registros de mapa alocados para a operação de AMD. O sistema passa esse valor para a rotina AdapterControl do driver.
[in] CurrentVa
Ponteiro para o endereço virtual atual no buffer, descrito pelo Mdl, em que a operação de E/S ocorreu. Esse valor deve ser o mesmo que o valor currentva inicial passado para MapTransfer.
[in] Length
Especifica o comprimento, em bytes, do buffer.
[in] WriteToDevice
Especifica a direção da operação de transferência de DMA: TRUE para uma transferência de um buffer na memória do sistema para o dispositivo do driver.
Retornar valor
FlushAdapterBuffers retornará TRUE se os dados restantes no cache interno do controlador de DMA ou do master de barramento tiverem sido liberados com êxito na memória do sistema ou no dispositivo.
Comentários
FlushAdapterBuffers não é uma rotina do sistema que pode ser chamada diretamente pelo nome. Essa rotina só pode ser chamada pelo ponteiro do endereço retornado em uma estrutura de DMA_OPERATIONS . Os drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter.
Para garantir que uma transferência de DMA seja concluída, cada driver que executa operações de DMA deve chamar FlushAdapterBuffers antes de concluir o IRP que solicitou a transferência de DMA e antes de liberar os registros de mapa.
Um driver pode obter o CurrentVa inicial para o início de uma transferência de DMA baseada em pacote chamando MmGetMdlVirtualAddress. No entanto, o valor retornado é um índice no Mdl, em vez de um endereço virtual válido. Se o driver precisar dividir uma solicitação de transferência grande em mais de uma operação de DMA, ele deverá atualizar CurrentVa e Length para cada operação de DMA.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |
Regras de conformidade da DDI | IrqlDispatch(wdm) |