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:
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 |