Freigeben über


VideoPortStartDma-Funktion (video.h)

Die VideoPortStartDma--Funktion bereitet das System auf einen DMA-Vorgang vor. Sobald die entsprechende Ressource verfügbar ist, erstellt VideoPortStartDma eine Punkt-/Erfassungsliste, initialisiert die Systemressourcen und ruft die videominiport-Treiber an, die HwVidExecuteDma Routine zum Ausführen des DMA-Vorgangs bereitgestellt wird.

Syntax

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

Parameter

[in] HwDeviceExtension

Zeigen Sie auf die Geräteerweiterung des Miniporttreibers.

[in] VpDmaAdapter

Zeigen Sie auf die VP_DMA_ADAPTER Struktur, die den Busmasteradapter darstellt. Diese Struktur wird von einem Aufruf an VideoPortGetDmaAdapterzurückgegeben.

[in] Mdl

Zeigen Sie auf die MDL-, die den Puffer beschreibt. Dieser Zeiger wird von einem Aufruf an die VideoPortLockBuffer-Funktion des Videoporttreibers zurückgegeben.

[in] Offset

Gibt den Byteoffset im Puffer an, bei dem der DMA-Vorgang beginnt. Der Mdl Parameter beschreibt diesen Puffer.

[in, out] pLength

Zeigen Sie auf eine Variable, die die angeforderte Übertragungsgröße in Byte angibt und die die tatsächliche zu übertragende Größe erhält. Die Variable wird aktualisiert, wenn eines der folgenden Ereignisse auftritt: VideoPortStartDma- wird zurückgegeben oder HwVidExecuteDma- aufgerufen. Daher ist es sicher, diese Variable aus HwVidExecuteDma- zu lesen, auch bevor VideoPortStartDma zurückgegeben wird.

[in] ExecuteDmaRoutine

Zeiger auf einen vom Miniporttreiber bereitgestellten HwVidExecuteDma Rückrufroutine. VideoPortStartDma ruft diese Routine auf, um die Hardwareregister zu programmieren und den tatsächlichen DMA-Vorgang zu starten.

[in] Context

Zeiger auf den vom Treiber bestimmten Kontext, der an die HwVidExecuteDma Rückrufroutine des Miniporttreibers übergeben werden soll. Da die HwVidExecuteDma- Rückrufroutine bei DISPATCH_LEVEL ausgeführt wird, sollten die Daten, auf die Context verweist, im nicht seitenseitigen Speicher enthalten sein.

[in] WriteToDevice

Gibt die Richtung der DMA-Übertragung an. Ein Wert von TRUE eine Übertragung vom Puffer auf das Gerät und ein Wert von FALSE eine Übertragung vom Gerät zum Puffer angibt.

Rückgabewert

VideoPortStartDma gibt einen der folgenden Statuscodes zurück:

Rückgabecode Beschreibung
NO_ERROR Der Vorgang wurde erfolgreich durchgeführt.
ERROR_NOT_ENOUGH_MEMORY Für diesen Vorgang sind nicht genügend Systemressourcen vorhanden.

Bemerkungen

Um sich auf einen DMA-Übertragungsvorgang vorzubereiten, VideoPortStartDma:

  • Löscht den Speicherbereich im Cache des Hostprozessors.
  • Erstellt eine Punkt-/Sammelliste.
  • Ruft den HwVidExecuteDma Rückruf des Videominiporttreibers auf.
Es ist möglich, dass nicht alle angeforderten Daten übertragen wurden, da die tatsächliche Menge des übertragenen Speichers durch die Anzahl der kartenregister begrenzt wird, die dem Treiber zur Verfügung stehen. Aufrufer dieser Funktion sollten die tatsächliche Übertragungsgröße prüfen, die bei pLength- zurückgegeben wird, um festzustellen, ob weitere Daten übertragen werden sollen. Wenn ja, sollte der Miniporttreiber VideoPortStartDma- (und anschließend VideoPortCompleteDma-) so oft wie nötig aufrufen, um die gesamte Übertragungsanforderung zu erfüllen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows XP und höheren Versionen von Windows-Betriebssystemen.
Zielplattform- Desktop
Header- video.h (video.h einschließen)
Library Videoprt.lib
DLL- Videoprt.sys
IRQL- <=DISPATCH_LEVEL

Siehe auch

HwVidExecuteDma-

VP_DMA_ADAPTER

VideoPortCompleteDma-

VideoPortGetDmaAdapter-