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