WdfDmaEnablerWdmGetDmaAdapter-Funktion (wdfdmaenabler.h)
[Gilt nur für KMDF]
Die WdfDmaEnablerWdmGetDmaAdapter-Methode gibt einen Zeiger auf eine WDM-DMA_ADAPTER-Struktur zurück, die einem DMA-Enabler-Objekt zugeordnet ist.
Syntax
PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
[in] WDFDMAENABLER DmaEnabler,
[in] WDF_DMA_DIRECTION DmaDirection
);
Parameter
[in] DmaEnabler
Ein Handle für ein DMA-Enabler-Objekt, das der Treiber aus einem vorherigen Aufruf von WdfDmaEnablerCreate abgerufen hat.
[in] DmaDirection
Ein WDF_DMA_DIRECTION typisierter Wert, der die Richtung des DMA-Übertragungsvorgangs angibt. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".
Rückgabewert
WdfDmaEnablerWdmGetDmaAdapter gibt einen Zeiger auf eine DMA_ADAPTER-Struktur oder NULL zurück, wenn der Wert des DmaDirection-Parameters ungültig ist.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Wenn Der Treiber WdfDmaEnablerCreate aufruft, erstellt das Framework ein separates Adapterobjekt für jede Richtung, wenn der Treiber ein Duplexprofil angibt, und erstellt ein einzelnes Adapterobjekt, wenn der Treiber kein Duplexprofil angibt.
Wenn Ihr Treiber beim Aufrufen von WdfDmaEnablerCreate ein Duplexprofil angegeben hat, muss der Wert des DmaDirection-Parameters der WdfDmaDirection-MethodeWdfDmaDirectionReadFromDevice lauten, um die DMA_ADAPTER-Struktur für Lesevorgänge abzurufen, und WdfDmaDirectionWriteToDevice, um die DMA_ADAPTER-Struktur für Schreibvorgänge abzurufen. Wenn Ihr Treiber kein Duplexprofil angegeben hat, kann der Treiber entweder WdfDmaDirectionReadFromDevice oder WdfDmaDirectionWriteToDevice angeben.
Der Zeiger, den WdfDmaEnablerWdmGetDmaAdapter zurückgibt, ist gültig, bis das DMA-Enabler-Objekt gelöscht wird. Wenn der Treiber eine EvtCleanupCallback-Funktion für das DMA-Enabler-Objekt bereitstellt, ist der Zeiger gültig, bis die Rückruffunktion zurückgegeben wird.
Beispiele
Im folgenden Codebeispiel wird ein DMA-Enabler-Objekt erstellt und dann Zeiger auf die WDM-DMA_ADAPTER-Strukturen abgerufen, die das Framework für Lese- und Schreibvorgänge erstellt.
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
);
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.5 |
Kopfzeile | wdfdmaenabler.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (siehe Versionsverwaltung der Frameworkbibliothek).) |
IRQL | <=DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |