PFREE_ADAPTER_OBJECT função de retorno de chamada (wdm.h)
O FreeAdapterObject libera o objeto do adaptador especificado após um driver concluir 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 mestre do barramento do driver ou o canal DMA do sistema. O chamador obteve esse ponteiro de uma chamada anterior para a rotina de 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.
Valor de retorno
Nenhum
Observações
FreeAdapterObject não é uma rotina do sistema que pode ser chamada diretamente pelo nome. Essa rotina só pode ser chamada por ponteiro do endereço retornado em uma estrutura de DMA_OPERATIONS. Os drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter com o Version membro 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 o AllocateAdapterChannelEx, GetScatterGatherListExe rotinas de 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 se registrar.
A rotina de 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 |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 8. |
da Plataforma de Destino | Área de trabalho |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |