Funzione WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)

[Si applica solo a KMDF]

Il metodo WdfDmaEnablerWdmGetDmaAdapter restituisce un puntatore a una struttura di DMA_ADAPTER WDM associata a un oggetto enabler DMA.

Sintassi

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

Parametri

[in] DmaEnabler

Handle a un oggetto abilitante DMA ottenuto dal driver da una chiamata precedente a WdfDmaEnablerCreate.

[in] DmaDirection

Valore WDF_DMA_DIRECTION tipizzato che specifica la direzione dell'operazione di trasferimento DMA. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Valore restituito

WdfDmaEnablerWdmGetDmaAdapter restituisce un puntatore a una struttura DMA_ADAPTER o NULL se il valore del parametro DmaDirection non è valido.

Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.

Commenti

Quando il driver chiama WdfDmaEnablerCreate, il framework crea un oggetto adapter separato per ogni direzione se il driver specifica un profilo duplex e crea un singolo oggetto adapter se il driver non specifica un profilo duplex.

Se il driver ha specificato un profilo duplex quando si chiama WdfDmaEnablerCreate, il metodo WdfDmaEnablerWdmGetDmaAdapter del parametro DmaDirection deve essere WdfDmaDirectionReadFromDevice per ottenere la struttura DMA_ADAPTER per le operazioni di lettura e WdfDmaDirectionWriteToDevice per ottenere la struttura di DMA_ADAPTER per le operazioni di scrittura. Se il driver non ha specificato un profilo duplex, il driver può specificare WdfDmaDirectionReadFromDevice o WdfDmaDirectionWriteToDevice.

Il puntatore restituito da WdfDmaEnablerWdmGetDmaAdapter è valido fino all'eliminazione dell'oggetto enabler DMA. Se il driver fornisce una funzione EvtCleanupCallback per l'oggetto enabler DMA, il puntatore è valido fino a quando la funzione di callback non viene restituita.

Esempio

Nell'esempio di codice seguente viene creato un oggetto abilitante DMA e quindi vengono ottenuti puntatori alle strutture wdM DMA_ADAPTER create dal framework per operazioni di lettura e scrittura.

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

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.5
Intestazione wdfdmaenabler.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Framework Library Versioning).
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedi anche

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate