Freigeben über


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)

Weitere Informationen

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerErstellen