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 Scatter/Gather-Liste, initialisiert die Systemressourcen und ruft die vom Video-Miniporttreiber bereitgestellte HwVidExecuteDma-Routine auf, um den DMA-Vorgang auszuführen.
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
Zeiger auf die Geräteerweiterung des Miniporttreibers.
[in] VpDmaAdapter
Zeiger auf die VP_DMA_ADAPTER-Struktur, die den Bus-master-Adapter darstellt. Diese Struktur wird von einem Aufruf von VideoPortGetDmaAdapter zurückgegeben.
[in] Mdl
Zeiger auf die MDL , die den Puffer beschreibt. Dieser Zeiger wird von einem Aufruf der VideoPortLockBuffer-Funktion des VideoPort-Treibers zurückgegeben.
[in] Offset
Gibt den Byteoffset im Puffer an, an dem der DMA-Vorgang beginnt. Der Mdl-Parameter beschreibt diesen Puffer.
[in, out] pLength
Zeiger auf eine Variable, die die angeforderte Übertragungsgröße in Byte angibt und die tatsächlich zu übertragende Größe empfängt. Die Variable wird aktualisiert, wenn eines der folgenden Ereignisse auftritt: VideoPortStartDma gibt zurück, oder HwVidExecuteDma wird aufgerufen. Daher ist es sicher, diese Variable innerhalb von HwVidExecuteDma zu lesen, noch bevor VideoPortStartDma zurückgegeben wird.
[in] ExecuteDmaRoutine
Zeiger auf eine vom Miniporttreiber bereitgestellte HwVidExecuteDma-Rückrufroutine . VideoPortStartDma ruft diese Routine auf, um die Hardwareregister zu programmieren und den eigentlichen 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 sich die Daten, auf die Context verweist, im Nicht-Auslagerspeicher befinden.
[in] WriteToDevice
Gibt die Richtung der DMA-Übertragung an. Der Wert TRUE gibt eine Übertragung vom Puffer zum Gerät an, und der Wert FALSE gibt eine Übertragung vom Gerät zum Puffer an.
Rückgabewert
VideoPortStartDma gibt einen der folgenden status-Codes zurück:
Rückgabecode | Beschreibung |
---|---|
NO_ERROR | Der Vorgang wurde erfolgreich ausgeführt. |
ERROR_NOT_ENOUGH_MEMORY | Es gibt nicht genügend Systemressourcen für diesen Vorgang. |
Hinweise
Um einen DMA-Übertragungsvorgang vorzubereiten, VideoPortStartDma:
- Leert den Arbeitsspeicherbereich in den Caches des Hostprozessors.
- Erstellt eine Punkt-/Gather-Liste.
- Ruft den HwVidExecuteDma-Rückruf des Video-Miniporttreibers auf.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows XP und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Desktop |
Kopfzeile | video.h (Video.h einschließen) |
Bibliothek | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | <=DISPATCH_LEVEL |