PFREE_ADAPTER_OBJECT função de retorno de chamada (wdm.h)
A rotina FreeAdapterObject libera o objeto adaptador especificado depois que um driver conclui todas as operações de DMA.
Sintaxe
PFREE_ADAPTER_OBJECT PfreeAdapterObject;
void PfreeAdapterObject(
[in] PDMA_ADAPTER DmaAdapter,
[in] IO_ALLOCATION_ACTION AllocationAction
)
{...}
Parâmetros
[in] DmaAdapter
Um ponteiro para uma estrutura DMA_ADAPTER . Essa estrutura é o objeto do adaptador que deve ser liberado. Esse objeto representa o dispositivo DMA master barramento do driver ou o canal DMA do sistema. O chamador obteve esse ponteiro de uma chamada anterior para a rotina IoGetDmaAdapter .
[in] AllocationAction
O tipo de desalocação que o driver de chamada solicita. Defina esse parâmetro como um valor de enumeração IO_ALLOCATION_ACTION . Para obter mais informações, consulte a seção Comentários.
Retornar valor
Nenhum
Comentários
FreeAdapterObject 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 DMA_OPERATIONS . Os drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter com o membro Version do parâmetro DeviceDescription definido como DEVICE_DESCRIPTION_VERSION3. Se IoGetDmaAdapter retornar NULL, a rotina não estará disponível em sua plataforma.
Se AllocationAction = DeallocateObject, a chamada FreeAdapterObject liberará o objeto do adaptador e liberará todos os registros de mapa que possam ser alocados para esse objeto.
Se AllocationAction = DeallocateObjectKeepRegisters, a chamada FreeAdapterObject liberará o objeto do adaptador, mas não liberará nenhum registro de mapa. Nesse caso, o driver deve liberar explicitamente todos os registros de mapa alocados chamando a rotina FreeMapRegisters .
Se AllocationAction = KeepObject, a chamada FreeAdapterObject não terá efeito.
FreeAdapterObject pode ser usado para desalocar recursos de DMA alocados por chamadas para as rotinas AllocateAdapterChannelEx, GetScatterGatherListEx e BuildScatterGatherListEx . Se o driver chamar uma dessas rotinas de forma síncrona, o parâmetro ExecutionRoutine será opcional e poderá ser omitido. Nesse caso, o driver pode usar o objeto do adaptador e os registros de mapa alocados pela chamada. Depois que o driver inicia a transferência de DMA, o driver pode chamar FreeAdapterObject para desalocar o objeto do adaptador e, se necessário, o mapa é registrado.
A rotina FreeAdapterChannel é semelhante a FreeAdapterObject. FreeAdapterChannel sempre libera o objeto do adaptador e todos os registros de mapa alocados. Esse comportamento é semelhante ao de FreeAdapterObject se AllocationAction = DeallocateObject.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 8. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |