IDmaChannel-Schnittstelle (portcls.h)

Die IDmaChannel Schnittstelle stellt eine Abstraktion eines DMA-Kanals und der zugehörigen DMA-Puffer- und Verwendungsparameter bereit. Ein WaveCyclic- oder WavePci-Porttreiber implementiert diese Schnittstelle und macht sie für den WaveCyclic- oder WavePci-Miniporttreiber verfügbar. Der Miniporttreiber ruft einen Verweis auf die Implementierung eines -Objekts durch IDmaChannel den Porttreiber ab, indem er eine der neuenXxxDmaChannel-Methoden des Porttreibers aufruft:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Ein Miniporttreiber kann auch eine eigene IDmaChannel Schnittstelle implementieren, wenn er Funktionen benötigt, die nicht in der Standardimplementierung des Porttreibers enthalten sind. Weitere Informationen hierzu finden Sie unter Wellenfilter. Wenn der Porttreiber die NewStream-Methode des Miniporttreibers aufruft (z. B . IMiniportWaveCyclic::NewStream), gibt die Methode das Objekt des Miniporttreibers IDmaChannel an den Porttreiber aus. IDmaChannel erbt von der IUnknown-Schnittstelle .

Die aktuelle Implementierung der IDmaChannel Schnittstelle in Portcls.sys ist nicht multithreadsicher, da der Zugriff auf freigegebene Daten nicht intern synchronisiert wird. In der Regel ruft ein einzelner Treiberthread die Methoden eines -Objekts auf IDmaChannel . In diesem Fall besteht kein Risiko, dass zwei Methodenaufrufe gleichzeitig auf dieselben Daten zugreifen. Wenn jedoch möglicherweise mehrere Threads die Methoden eines IDmaChannel Objekts gleichzeitig aufrufen können, muss der Treiberschreiber die Methodenaufrufe synchronisieren, um interne Datenbeschädigungen zu verhindern.

Weitere Informationen finden Sie unter DMA-Kanalobjekte.

Hinweis

Microsoft unterstützt eine vielfältige und inklusive Umgebung. Dieser Artikel enthält Verweise auf Terminologie, die im Microsoft-Stilleitfaden für voreingenommene Kommunikation als ausschlussfrei erkannt wird. Das Wort oder der Ausdruck wird in diesem Artikel aus Gründen der Konsistenz verwendet, da es derzeit in der Software angezeigt wird. Wenn die Software aktualisiert wird, um die Sprache zu entfernen, wird dieser Artikel aktualisiert, um in Übereinstimmung zu sein.

Vererbung

Die IDmaChannel-Schnittstelle erbt von der IUnknown-Schnittstelle.

Methoden

Die IDmaChannel-Schnittstelle verfügt über diese Methoden.

 
IDmaChannel::AllocateBuffer

Die AllocateBuffer-Methode ordnet einen allgemeinen Puffer zu, auf den der Porttreiber und die DMA-Hardware zugreifen können.
IDmaChannel::AllocatedBufferSize

Die AllocatedBufferSize-Methode gibt die Größe des zugeordneten Puffers zurück.
IDmaChannel::BufferSize

Die BufferSize-Methode gibt die Größe des Datenpuffers des DMA-Kanals in Byte zurück.
IDmaChannel::CopyFrom

Die CopyFrom-Methode kopiert Beispieldaten aus dem gemeinsamen Puffer des DMA-Kanals in den angegebenen Zielpuffer.
IDmaChannel::CopyTo

Die CopyTo-Methode kopiert Beispieldaten aus dem angegebenen Quellpuffer in den allgemeinen Puffer des DMA-Kanals.
IDmaChannel::FreeBuffer

Die FreeBuffer-Methode gibt den Puffer frei, der durch den vorherigen Aufruf von IDmaChannel::AllocateBuffer zugeordnet wurde.
IDmaChannel::GetAdapterObject

Die GetAdapterObject-Methode gibt das Hardwareadapterobjekt des DMA-Kanals zurück.
IDmaChannel::MaximumBufferSize

Die MaximumBufferSize-Methode gibt die Größe des größten Puffers in Byte zurück, für den dieses DMA-Kanalobjekt für die Unterstützung konfiguriert ist.
IDmaChannel::P hysicalAddress

Die PhysicalAddress-Methode gibt die physische Adresse des zugeordneten Puffers zurück.
IDmaChannel::SetBufferSize

Die SetBufferSize-Methode legt die aktuelle Puffergröße des DMA-Kanals fest.
IDmaChannel::SystemAddress

Die SystemAddress-Methode gibt die Systemadresse des zugeordneten Puffers zurück.
IDmaChannel::TransferCount

Die TransferCount-Methode gibt die Größe des Puffers in Bytes zurück, der derzeit von einem untergeordneten DMA-Objekt übertragen wird.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile portcls.h