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