Condividi tramite


Funzione WdfDmaEnablerWdmGetDmaAdapter (wdfdmaenabler.h)

[Si applica solo a KMDF]

Il metodo WdfDmaEnablerWdmGetDmaAdapter restituisce un puntatore a una struttura 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 per un oggetto enabler DMA ottenuto dal driver da una chiamata precedente a WdfDmaEnablerCrea.

[in] DmaDirection

Valore WDF_DMA_DIRECTIONtipizzato che specifica la direzione dell'operazione di trasferimento DMA. Per altre informazioni, vedere la sezione Osservazioni seguente.

Valore restituito

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

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Osservazioni:

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

Se il driver ha specificato un profilo duplex quando viene chiamato WdfDmaEnablerCreate, il WdfDmaEnablerWdmGetDmaAdapter metodo DmaDirection Il valore del parametro deve essere WdfDmaDirectionReadFromDevice per ottenere la struttura DMA_ADAPTER per le operazioni di lettura e WdfDmaDirectionWriteToDevice per ottenere la struttura 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 che WdfDmaEnablerWdmGetDmaAdapter restituisce è 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 non viene restituita la funzione di callback.

Esempi

Nell'esempio di codice seguente viene creato un oggetto enabler DMA e quindi vengono ottenuti puntatori alle strutture wdm DMA_ADAPTER create dal framework per le 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 minima di KMDF 1,5
intestazione wdfdmaenabler.h (include Wdf.h)
Biblioteca Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL <=DISPATCH_LEVEL
regole di conformità DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Vedere anche

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreare