Freigeben über


WdfDmaTransactionGetCurrentDmaTransferLength-Funktion (wdfdmatransaction.h)

[Gilt nur für KMDF]

Die WdfDmaTransactionGetCurrentDmaTransferLength Methode gibt die Größe der aktuellen DMA-Übertragung zurück.

Syntax

size_t WdfDmaTransactionGetCurrentDmaTransferLength(
  [in] WDFDMATRANSACTION DmaTransaction
);

Die Parameter

[in] DmaTransaction

Ein Handle für ein DMA-Transaktionsobjekt, das der Treiber aus einem vorherigen Aufruf von WdfDmaTransactionCreateabgerufen hat.

Rückgabewert

WdfDmaTransactionGetCurrentDmaTransferLength gibt die Länge der aktuellen DMA-Übertragung zurück.

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Bemerkungen

Wenn ein Treiber WdfDmaTransactionGetCurrentDmaTransferLengthaufruft, muss er dies tun, bevor er eine der Übertragungsabschlussroutinen aufruft, z. B. WdfDmaTransactionDmaCompleted, um die aktuelle DMA-Übertragung abzuschließen. In der Regel rufen Treiber WdfDmaTransactionGetCurrentDmaTransferLength innerhalb eines EvtInterruptDpc Ereignisrückruffunktion auf.

In der Regel ruft ein Treiber WdfDmaTransactionGetCurrentDmaTransferLength- für Geräte auf, die restige DMA-Übertragungslängen melden (d. a. Byteanzahl der nicht übertragenen Daten). Durch Subtrahieren der Restübertragungslänge vom Wert, der WdfDmaTransactionGetCurrentDmaTransferLength zurückgegeben wird, kann der Treiber die tatsächliche Übertragungslänge bestimmen. Anschließend ruft der Treiber WdfDmaTransactionDmaCompletedWithLength- auf, um dem Framework mitzuteilen, wie viele Bytes das Gerät tatsächlich übertragen hat.

Weitere Informationen zu vollständigen DMA-Übertragungen finden Sie unter Abschließen einer DMA-Übertragung.

Beispiele

Ein Codebeispiel, das WdfDmaTransactionGetCurrentDmaTransferLengthverwendet, finden Sie unter WdfDmaTransactionDmaCompletedWithLength.

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.0
Kopfzeile wdfdmatransaction.h (include Wdf.h)
Bibliothek Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Siehe auch

EvtInterruptDpc

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted-

WdfDmaTransactionDmaCompletedWithLength