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