VideoPortSetTrappedEmulatorPorts-Funktion (video.h)
VGA-kompatible (SVGA)-Miniporttreiber rufen die VideoPortSetTrappedEmulatorPorts-Funktion auf, um die Liste der E/A-Ports dynamisch zu ändern, die eingeschlossen werden, wenn ein VDM (Videoanzeigemonitor) auf einem x86-basierten Computer im Vollbildmodus ausgeführt wird.
Syntax
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortSetTrappedEmulatorPorts(
PVOID HwDeviceExtension,
ULONG NumAccessRanges,
[in] PVIDEO_ACCESS_RANGE AccessRange
);
Parameter
HwDeviceExtension
Zeiger auf die Geräteerweiterung des Miniporttreibers.
NumAccessRanges
Gibt die Anzahl der Elemente im AccessRange-Array an.
[in] AccessRange
Zeiger auf ein Array von VIDEO_ACCESS_RANGE-Elementen . Jedes Element beschreibt einen ordnungsgemäßen Teilbereich der EmulatorAccessEntries , die der Miniporttreiber in VIDEO_PORT_CONFIG_INFO eingerichtet hat. Das Festlegen des RangeVisible-Elements eines AccessRange-Elements auf TRUE ermöglicht den direkten Zugriff auf den E/A-Portbereich durch die MS-DOS-Vollbildanwendung. Wenn Sie einen RangeVisible-Member auf FALSE festlegen, werden von der Anwendung ausgestellte INs, INSB/INSDs, OUTs und/oder OUTSB/OUTSW/OUTSDs an diesen Bereich erfasst und zur Überprüfung an die entsprechende Miniporttreiberfunktion SvgaHwIoPortXxx weitergeleitet.
Das an VideoPortSetTrappedEmulatorPorts übergebene AccessRange-Array muss eine ordnungsgemäße Teilmenge der E/A-Portbereiche sein, die die HwVidFindAdapter-Funktion im EmulatorAccessEntries-Array der VIDEO_PORT_CONFIG_INFO-Struktur eingerichtet hat. Alle E/A-Portbereiche im Zugriffsbereichsarray, die nicht im EmulatorAccessEntries-Array enthalten sind, werden erfasst und im Benutzermodus-VDD angezeigt.
Rückgabewert
VideoPortSetTrappedEmulatorPorts gibt NO_ERROR zurück, wenn die abgefangenen Ports erfolgreich geändert wurden. Andernfalls wird ERROR_INVALID_PARAMETER zurückgegeben.
Hinweise
Standardmäßig enthält accessRange von E/A-Ports, auf die Vollbild-MS-DOS-Anwendungen direkt zugreifen können, keine der Zugriffsbereichsarrayelemente, die E/A-Portbereiche beschreiben, die auch entsprechende Elemente im EmulatorAccessEntries-Array der VIDEO_PORT_CONFIG_INFO-Struktur enthalten. Das heißt, E/A-Portbereiche mit entsprechenden Emulatorzugriffseinträgen sind standardmäßig an die SvgaHwIoPortXxx-Funktionen des Miniporttreibers gebunden, sodass von der Anwendung ausgestellte Anweisungen zur Überprüfung an die Funktionen SvgaHwIoPortXxx weitergeleitet werden.
Ein VGA-kompatibler SVGA-Miniporttreiber kann E/A-Ports bei Bedarf mit Aufrufen von VideoPortSetTrappedEmulatorPorts aktivieren und deaktivieren. Durch aktivierte Portbereiche kann eine VOLLbild-MS-DOS-Anwendung direkt auf diese E/A-Ports zugreifen, ohne dass von der Anwendung ausgestellte Assemblyanweisungen erfasst und zur Überprüfung zuerst an die SvgaHwIoPortXxx-Funktionen des Miniporttreibers weitergeleitet werden. Der direkte E/A-Portzugriff für eine solche Anwendung bietet dem Benutzer schnellere Video-E/A-Antwortzeiten.
VideoPortSetTrappedEmulatorPorts überprüft das AccessRange-Parameterarray vom ersten bis zum letzten Element und aktiviert und deaktiviert E/A-Ports wie in jedem Element angegeben. Beachten Sie, dass ein Bereich von aktivierten Ports (das RangeVisible-Element auf TRUE festgelegt) im selben Aufruf wieder deaktiviert werden kann, wenn der Miniporttreiber eine doppelte Beschreibung desselben Bereichs enthält, wobei das RangeVisible-Element auf FALSE festgelegt ist. Beachten Sie auch, dass ein Miniporttreiber einen breiten Bereich von E/A-Ports im anfänglichen Element des AccessRange-Arrays aktivieren und Teilbereiche von Ports in nachfolgenden Arrayelementen selektiv deaktivieren kann, wenn VideoPortSetTrappedEmulatorPorts aufgerufen wird.
Alle Vollbild-MS-DOS-Anwendungen verwenden dieselbe IOPM-Zuordnung (E/A-Berechtigungszuordnung) auf x86-basierten Computern und daher denselben Satz aktivierter oder deaktivierter E/A-Ports. Bei jedem Wechsel zu einer solchen Vollbildanwendung wird die HwVidStartIO-Funktion des VGA-kompatiblen Miniporttreibers mit dem IOCTL_VIDEO_ENABLE_VDM VRP aufgerufen. Der Miniporttreiber sollte dann einen Standardsatz von direkt zugänglichen E/A-Ports erneut initialisieren, die alle Ports im EmulatorAccessEntries-Array enthalten können.
Während vollbildfähige MS-DOS-Anwendungen auf x86-basierten Computern direkten Zugriff auf die Videoports ermöglichen, werden anwendungsinitiierte Videovorgänge schneller, aber jeder VGA-kompatible SVGA-Miniporttreiber muss weiterhin eine Teilmenge kritischer E/A-Ports abfangen, um zu verhindern, dass eine solche Anwendung den Computer hängt. Insbesondere sollten solche Miniporttreiber immer Anwendungs-E/A an den VGA-kompatiblen Adaptersequenzer und verschiedene Ausgaberegister abfangen. Ein solcher Miniporttreiber sollte auch von der Anwendung ausgestellte direkte E/A abfangen und überprüfen, die dazu führen könnten, dass der Computer für zusätzliche adapterabhängige Teilmengen von E/A-Ports hängen bleibt.
Wenn VideoPortSetTrappedEmulatorPorts erneut aufgerufen und das RangeVisible-Element eines AccessRange-Elements auf FALSE zurückgesetzt wird, werden die von der Anwendung ausgestellten Anweisungen für diesen Bereich an die entsprechende SvgaHwIoPortXxx-Funktion des Miniporttreibers weitergeleitet.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform | Desktop |
Kopfzeile | video.h (Video.h einschließen) |
Bibliothek | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |