Compartilhar via


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

Confira também

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter