Compartilhar via


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

Consulte também

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter