Compartir a través de


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 enabler DMA que el controlador obtuvo de una llamada anterior a WdfDmaEnablerCreate.

[in] DmaDirection

Valor de tipo WDF_DMA_DIRECTIONque especifica la dirección de la operación de transferencia DMA. Para obtener más información, vea la siguiente sección Comentarios.

Valor devuelto

WdfDmaEnablerWdmGetDmaAdapter devuelve un puntero a una estructura de 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.

Observaciones

Cuando el controlador llama a WdfDmaEnablerCreate, el marco crea un objeto de adaptador de 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 al llamar a WdfDmaEnablerCreate, el parámetro WdfDmaEnablerWdmGetDmaAdapter del método DmaDirection El valor de debe ser WdfDmaDirectionReadFromDevice para obtener la estructura de DMA_ADAPTER para las operaciones de lectura y WdfDmaDirectionWriteToDevice para obtener la estructura 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 WdfDmaEnablerWdmGetDmaAdapter devuelve es válido hasta que se elimina el objeto del habilitador DMA. Si el controlador proporciona una función EvtCleanupCallback para el objeto del habilitador 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 WDM DMA_ADAPTER 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 Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.5
encabezado wdfdmaenabler.h (incluya Wdf.h)
Biblioteca 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

WdfDmaEnablerCrear