Función WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)

[Solo se aplica a KMDF]

El método WdfDmaEnablerWdmGetDmaAdapter devuelve un puntero a una estructura de DMA_ADAPTER WDM asociada a un objeto enabler DMA.

Sintaxis

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

Parámetros

[in] DmaEnabler

Identificador de un objeto de habilitador DMA que el controlador obtuvo de una llamada anterior a WdfDmaEnablerCreate.

[in] DmaDirection

Valor WDF_DMA_DIRECTION con tipo que especifica la dirección de la operación de transferencia de DMA. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

WdfDmaEnablerWdmGetDmaAdapter devuelve un puntero a una estructura DMA_ADAPTER o NULL si el valor del parámetro DmaDirection no es válido.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Comentarios

Cuando el controlador llama a WdfDmaEnablerCreate, el marco crea un objeto de adaptador independiente para cada dirección si el controlador especifica un perfil dúplex y crea un único objeto de adaptador si el controlador no especifica un perfil dúplex.

Si el controlador especificó un perfil dúplex cuando llamó a WdfDmaEnablerCreate, el valor del parámetro DmaDirection del método WdfDmaAdapter debe ser WdfDmaDirectionReadFromDevice para obtener la estructura de DMA_ADAPTER para las operaciones de lectura y WdfDmaDirectionWriteToDevice para obtener la estructura de DMA_ADAPTER para las operaciones de escritura. Si el controlador no especificó un perfil dúplex, el controlador puede especificar WdfDmaDirectionReadFromDevice o WdfDmaDirectionWriteToDevice.

El puntero que devuelve WdfDmaEnablerWdmGetDmaAdapter es válido hasta que se elimina el objeto del habilitador DMA. Si el controlador proporciona una función EvtCleanupCallback para el objeto enabler DMA, el puntero es válido hasta que se devuelve la función de devolución de llamada.

Ejemplos

En el ejemplo de código siguiente se crea un objeto enabler DMA y, a continuación, se obtienen punteros a las estructuras de DMA_ADAPTER WDM que crea el marco para las operaciones de lectura y escritura.

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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.5
Encabezado wdfdmaenabler.h (incluya Wdf.h)
Library Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
IRQL <=DISPATCH_LEVEL
Reglas de cumplimiento de DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate