Freigeben über


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 dem WaveCyclic- oder WavePci-Miniporttreiber verfügbar. Der Miniporttreiber ruft einen Verweis auf die Implementierung eines IDmaChannel-Objekts des Porttreibers ab, indem eine der NeuenXxx--DmaChannel-Methoden des Porttreibers aufgerufen wird:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

Ein Miniporttreiber kann auch eine eigene IDmaChannel Schnittstelle implementieren, wenn funktionen erforderlich sind, die sich nicht in der Standardimplementierung des Porttreibers befinden. Weitere Informationen hierzu finden Sie unter Wellenfilter. Wenn der Porttreiber die NewStream-Methode des Miniporttreibers aufruft (z. B. IMiniportWaveCyclic::NewStream), gibt die Methode das IDmaChannel Objekt des Miniporttreibers 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 IDmaChannel-Objekts auf. In diesem Fall besteht kein Risiko, dass zwei Methodenaufrufe gleichzeitig auf dieselben Daten zugreifen. Wenn jedoch 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 Channel Objects.

Anmerkung

Microsoft unterstützt eine vielfältige und inklusive Umgebung. Dieser Artikel enthält Verweise auf die Terminologie, die vom Microsoft-Stilleitfaden für die biasfreie Kommunikation als Ausschluss erkannt wird. Das Wort oder der Ausdruck wird in diesem Artikel zur Konsistenz verwendet, da es derzeit in der Software angezeigt wird. Wenn die Software aktualisiert wird, um die Sprache zu entfernen, wird dieser Artikel so aktualisiert, dass er in Übereinstimmung steht.

Erbschaft

Die IDmaChannel Schnittstelle erbt von der IUnknown-Schnittstelle.

Methodik

Die IDmaChannel Schnittstelle hat diese Methoden.

 
IDmaChannel::AllocateBuffer

Die AllocateBuffer-Methode weist einen allgemeinen Puffer zu, auf den über den Porttreiber und die DMA-Hardware zugegriffen werden kann.
IDmaChannel::AllocatedBufferSize

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

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

Die CopyFrom-Methode kopiert Beispieldaten aus dem allgemeinen 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 zugewiesen wurde.
IDmaChannel::GetAdapterObject

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

Die MaximumBufferSize-Methode gibt die Größe in Byte des größten Puffers zurück, 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 in Byte des Puffers zurück, der derzeit von einem untergeordneten DMA-Objekt übertragen wird.

Anforderungen

Anforderung Wert
Zielplattform- Fenster
Header- portcls.h