Função WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)

[Aplica-se somente ao KMDF]

O método WdfDmaEnablerWdmGetDmaAdapter retorna um ponteiro para uma estrutura de DMA_ADAPTER WDM associada a um objeto de habilitador de DMA.

Sintaxe

PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
  [in] WDFDMAENABLER     DmaEnabler,
  [in] WDF_DMA_DIRECTION DmaDirection
);

Parâmetros

[in] DmaEnabler

Um identificador para um objeto de habilitador de DMA que o driver obteve de uma chamada anterior para WdfDmaEnablerCreate.

[in] DmaDirection

Um valor de tipo WDF_DMA_DIRECTION que especifica a direção da operação de transferência de DMA. Para obter mais informações, consulte a seção Comentários a seguir.

Retornar valor

WdfDmaEnablerWdmGetDmaAdapter retornará um ponteiro para uma estrutura DMA_ADAPTER ou NULL se o valor do parâmetro DmaDirection for inválido.

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Quando o driver chama WdfDmaEnablerCreate, a estrutura cria um objeto de adaptador separado para cada direção se o driver especifica um perfil duplex e cria um único objeto de adaptador se o driver não especifica um perfil duplex.

Se o driver especificou um perfil duplex quando chamou WdfDmaEnablerCreate, o valor do parâmetro DmaDirection do método WdfDmaEnablerWdmGetDmaAdapter deve ser WdfDmaDirectionReadFromDevice para obter a estrutura DMA_ADAPTER para operações de leitura e WdfDmaDirectionWriteToDevice para obter a estrutura DMA_ADAPTER para operações de gravação. Se o driver não especificou um perfil duplex, o driver poderá especificar WdfDmaDirectionReadFromDevice ou WdfDmaDirectionWriteToDevice.

O ponteiro que WdfDmaEnablerWdmGetDmaAdapter retorna é válido até que o objeto habilitador de DMA seja excluído. Se o driver fornecer uma função EvtCleanupCallback para o objeto de habilitador de DMA, o ponteiro será válido até que a função de retorno de chamada retorne.

Exemplos

O exemplo de código a seguir cria um objeto de habilitador de DMA e, em seguida, obtém ponteiros para o WDM DMA_ADAPTER estruturas que a estrutura cria para operações de leitura e gravação.

NTSTATUS  status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG  dmaConfig;
WDFDMAENABLER  dmaEnabler;
PDMA_ADAPTER  readAdapter, writeAdapter;

WDF_DMA_ENABLER_CONFIG_INIT(
                            &dmaConfig,
                            WdfDmaProfileScatterGatherDuplex,
                            maxLength
                            );
status = WdfDmaEnablerCreate(
                             Device,
                             &dmaConfig,
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &dmaEnabler
                             );
if (!NT_SUCCESS (status)) {
    return status;
}

readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                            dmaEnabler,
                                            WdfDmaDirectionReadFromDevice
                                            );
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                             dmaEnabler,
                                             WdfDmaDirectionWriteToDevice
                                             );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.5
Cabeçalho wdfdmaenabler.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL <=DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate