Compartilhar via


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 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 WDF_DMA_DIRECTIONdigitado 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.

Valor de retorno

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

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

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

Se o driver especificou um perfil duplex quando ele chamou WdfDmaEnablerCreate, o parâmetro WdfDmaEnablerWdmGetDmaAdapterDmaDirection do método''. s value must be WdfDmaDirectionReadFromDevice to obtain the DMA_ADAPTER structure for read operations and WdfDmaDirectionWriteToDevice to obtain the DMA_ADAPTER structure for write operations. 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 do habilitador de DMA seja excluído. Se o driver fornecer uma função EvtCleanupCallback para o objeto do 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
da Plataforma de Destino Universal
versão mínima do KMDF 1.5
cabeçalho wdfdmaenabler.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (consulte o Controle de Versão da Biblioteca da Estrutura.)
IRQL <=DISPATCH_LEVEL
regras de conformidade de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte também

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate