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) |