VideoPortVerifyAccessRanges-Funktion (video.h)

Die VideoPortVerifyAccessRanges-Funktion überprüft die Registrierung, ob bereits ein anderer Treiber den Besitz der angegebenen busrelativen Zugriffsbereiche und aller anderen Hardwareressourcen beansprucht hat, die in der VIDEO_PORT_CONFIG_INFO-Struktur angegeben sind. Andernfalls beansprucht diese Funktion die angegebenen Ressourcen für den Aufrufer.

Syntax

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortVerifyAccessRanges(
                 PVOID               HwDeviceExtension,
                 ULONG               NumAccessRanges,
  [in, optional] PVIDEO_ACCESS_RANGE AccessRanges
);

Parameter

HwDeviceExtension

Zeiger auf die Geräteerweiterung des Miniporttreibers.

NumAccessRanges

Gibt die Anzahl der Elemente im AccessRanges-Array (Null) an.

[in, optional] AccessRanges

Zeiger auf das Zugriffsbereichsarray des Miniporttreibers ( NULL). Jedes VIDEO_ACCESS_RANGE-Type-Element in diesem Array gibt einen busrelativen Bereich von Gerätespeicher, E/A-Ports oder Registeradressen für den Adapter an.

Rückgabewert

VideoPortVerifyAccessRanges gibt einen der folgenden Werte zurück:

Rückgabecode Beschreibung
ERROR_INVALID_PARAMETER Ein Fehler ist aufgetreten oder ein Konflikt wurde gefunden. Das heißt, ein anderer Treiber hat bereits eine oder mehrere der angegebenen Hardwareressourcen für sein Gerät beansprucht.
NO_ERROR Die angegebenen AccessRanges sind gültig und wurden für die Verwendung durch den Aufrufer beansprucht.

Hinweise

Jeder Videominiporttreiber muss entweder VideoPortVerifyAccessRanges aufrufen oder von VideoPortGetAccessRanges zurückgegebene Zugriffsbereiche verwenden, bevor er versucht, während des Initialisierungsprozesses des Treibers (und des Systems) auf eine Grafikkarte zuzugreifen.

VideoPortVerifyAccessRanges kann nur von der HwVidFindAdapter-Funktion eines Miniporttreibers aufgerufen werden.

Jeder Video-Miniporttreiber muss die busrelativen Zugriffsbereiche für sein Gerät definieren, entweder als statisch zugeordneter Arbeitsspeicher in der Headerdatei oder im Code des Treibers oder im Stapel. Die meisten Miniporttreiber richten ihre Videozugriffsbereiche auf dem Stapel ein, mit Ausnahme derer, die PC-Standardadressbereiche für Den Videospeicher verwenden, z. B. VGA-kompatible SVGA-Miniporttreiber.

Die HwVidFindAdapter-Funktion sollte versuchen, Informationen zum busrelativen Zugriffsbereich abzurufen, indem Sie VideoPortGetAccessRanges aufrufen oder die Registrierung über Aufrufe von VideoPortGetDeviceData oder VideoPortGetRegistryParameters überprüfen. Wenn HwVidFindAdapter diese Informationen nicht abrufen kann, sollte der Miniporttreiber über einen Satz busrelativer Standardwerte für Zugriffsbereiche verfügen.

Wenn die Zugriffsbereiche eines Miniporttreibers extern konfigurierbar sind, richtet das Installationsprogramm Zugriffsbereiche für den Adapter in der Registrierung ein. Die HwVidFindAdapter-Funktion eines miniport-Treibers kann VideoPortGetRegistryParameters mit einer vom Miniporttreiber bereitgestellten HwVidQueryNamedValueCallback-Funktion aufrufen, die aus der Registrierung abgerufene Informationen verarbeitet.

HwVidFindAdapter darf keine Zugriffsbereichsadressen an VideoPortGetDeviceBase übergeben, es sei denn, es ruft zuerst VideoPortVerifyAccessRanges oder VideoPortGetAccessRanges auf, und die jeweilige Funktion gibt NO_ERROR zurück.

VideoPortVerifyAccessRanges kann erneut aufgerufen werden, wenn die anfängliche AccessRanges-Spezifikation oder der anfängliche Wert in der VIDEO_PORT_CONFIG_INFO, z. B. ein Interruptvektor, dazu führt, dass ein ERROR_XXX zurückgegeben wird, der angibt, dass ein anderer Treiber die Ressourcen bereits beansprucht hat.

Wenn VideoPortVerifyAccessRanges NO_ERROR zurückgibt, überschreibt ein späterer Aufruf desselben Adapters den Anspruch des Miniporttreibers auf Ressourcen für diesen Adapter in der Registrierung.

Beachten Sie, dass ein Miniporttreiber nicht mit seiner Grafikkarte kommunizieren kann, außer über zugeordnete Adressen, die von VideoPortGetDeviceBase mit den Xxx-Funktionen VideoPortRead/Write zurückgegeben werden.

Wenn die HwVidFindAdapter-Funktion busrelative Zugriffsbereiche und möglicherweise andere Hardwareressourcen für einen Adapter beansprucht, dann aber feststellt, dass der Adapter nicht unterstützt wird, muss der Miniporttreiber seine Ansprüche für Hardwareressourcen in der Registrierung aufgeben, indem VideoPortVerifyAccessRanges oder VideoPortGetAccessRanges aufgerufen wird, wobei NumAccessRanges auf Null und AccessRanges auf NULL festgelegt ist.

Gehen Sie wie folgt vor, um Ansprüche für eine Teilmenge der beanspruchten Zugriffsbereiche aufzugeben, die der Miniporttreiber nicht mehr verwendet:

  1. Ändern Sie die AccessRanges-Spezifikation für den Adapter, sodass für jedes Element, das einen zu veröffentlichenden Bereich beschreibt , RangeStart weiterhin auf die busrelative Basis eines beanspruchten Bereichs festgelegt ist, RangeLength jedoch auf 0 zurückgesetzt hat.
  2. Rufen Sie VideoPortVerifyAccessRanges mit diesem geänderten AccessRanges-Array auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 2000 und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile video.h (einschließen von Video.h)
Bibliothek Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

Weitere Informationen

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetAccessRanges

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortGetRegistryParameters