Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[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) |