VideoPortGetDeviceBase-Funktion (video.h)
Die VideoPortGetDeviceBase--Funktion ordnet eine Reihe von busrelativen Gerätespeicher- oder E/A-Adressen dem Systembereich zu.
Syntax
VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS IoAddress,
ULONG NumberOfUchars,
UCHAR InIoSpace
);
Parameter
HwDeviceExtension
Zeigen Sie auf die Geräteerweiterung des Miniporttreibers.
IoAddress
Die physische Basisadresse des bereichs, der zugeordnet werden soll. Sie erhalten diesen busrelativen Wert, indem Sie VideoPortGetDeviceData, VideoPortGetRegistryParametersoder VideoPortGetAccessRangesaufrufen. Andernfalls handelt es sich bei diesem Wert um eine vom Treiber bereitgestellte Standardbasisadresse für den Gerätespeicher oder E/A-Ports.
Sie müssen den von IoAddress beschriebenen Bereich erfolgreich beansprucht haben und NumberOfUchars in der Registrierung über einen vorherigen Aufruf von VideoPortVerifyAccessRanges oder VideoPortGetAccessRanges.
NumberOfUchars
Die Anzahl der Bytes, beginnend bei IoAddress, zuzuordnen.
InIoSpace
Die Position des IoAddress Bereichs. Dieser Parameter kann eine der folgenden Flags oder eine kompatible Kombination dieser Flags sein.
Kennzeichnung | Bedeutung |
---|---|
VIDEO_MEMORY_SPACE_DENSE | Obsolet. |
VIDEO_MEMORY_SPACE_IO | Der Adressbereich befindet sich im E/A-Bereich, nicht im Arbeitsspeicher. |
VIDEO_MEMORY_SPACE_MEMORY | Der Adressbereich befindet sich im Arbeitsspeicher, nicht im E/A-Bereich. |
VIDEO_MEMORY_SPACE_P6CACHE | Der Prozessor aggregiert eine Abfolge von Schreibvorgängen, sendet sie an eine Cachezeile und löscht den Cache später. Dieses Kennzeichen ist nur dann sinnvoll, wenn VIDEO_MEMORY_SPACE_IO nicht festgelegt ist. Legt den Videospeicher als "write-combined" (WC) fest. Informationen zur WC-Zwischenspeicherung finden Sie im Artikel zum Write-Combining Speicher in Video-Miniporttreibern Websiteartikel. |
Rückgabewert
Bei erfolgreicher Ausführung gibt VideoPortGetDeviceBase die virtuelle Basisadresse der Zuordnung zurück. Wenn der angegebene busrelative Bereich nicht zugeordnet werden kann, gibt VideoPortGetDeviceBase-NULL-zurück.
Bemerkungen
Sie können die zugeordneten virtuellen Adressen an die VideoPortReadXxx, VideoPortWriteXxxund VideoPortXxxMemory Funktionen übergeben, mit Ausnahme von VideoPortMapMemory und VideoPortUnmapMemory.
Sie müssen VideoPortGetDeviceBase- aus dem HwVidFindAdapter-des Miniporttreibers , HwVidQueryDeviceCallback-oder HwVidQueryNamedValueCallback-Funktion aufrufen.
Bevor HwVidFindAdapter Steuerelement zurückgibt, sollten Sie sowohl die zugeordnete Basisadresse speichern, die von VideoPortGetDeviceBase zurückgegeben wird, als auch die Länge des zugeordneten Zugriffsbereichs in der Geräteerweiterung des Adapters (verweist auf HwDeviceExtension) zur späteren Verwendung.
Der Zugriff auf den zugeordneten Adressraum muss den folgenden Regeln entsprechen:
- Wenn InIoSpace VIDEO_MEMORY_SPACE_IO ist, gibt an, dass sich die Adresse im E/A-Bereich befindet, die virtuelle Adresse, die diese Funktion zurückgibt, an die VideoPortReadPortXxx, VideoPortWritePortXxx, VideoPortReadPortBufferXxxund VideoPortWritePortBufferXxx Funktionen, wobei Xxx-Uchar-, Ushort-oder Ulong-ist.
- Wenn InIoSpace- VIDEO_MEMORY_SPACE_MEMORY ist, was angibt, dass sich die Adresse nicht im E/A-Bereich, sondern im Arbeitsspeicher befindet, die virtuelle Adresse, die diese Funktion zurückgibt, sollte an die VideoPortReadRegisterXxx, VideoPortWriteRegisterXxx, VideoPortReadRegisterBufferXxxund VideoPortWriteRegisterBufferXxx Funktionen übergeben werden, wobei Xxx-Uchar-, Ushort-oder Ulong-ist.
- Der Treiber darf nicht auf Adressen zugreifen, die sich außerhalb des Bereichs befinden, der durch NumberOfUchars-getrennt ist.
Jedes UMA-Anzeigegerät (Universal Memory Architecture) verwendet einen Framepuffer, der sich im Hauptspeicher und nicht auf einem PCI-Bus befindet. Rufen Sie in diesem Fall nicht VideoPortMapMemory- auf, um den Framepuffer zuzuordnen. Rufen Sie MmMapIoSpaceauf, um einen UMA-Framepuffer in Systemraum zuzuordnen.
Wenn ein Miniporttreiber keinen Adapter unterstützt, für den er einen logischen Bereich zugeordnet hat, es muss zwei Schritte ausführen, bevor es die Steuerung an die DriverEntry--Funktion zurückgibt: Rufen Sie VideoPortFreeDeviceBase- auf, um die Zuordnung des zuvor zugeordneten Bereichs vom Systembereich aufzuheben, und rufen Sie VideoPortGetAccessRanges oder VideoPortVerifyAccessRanges auf, um ihre Ansprüche für den Bereich in der Registrierung freizugeben.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows 2000 und höheren Versionen von Windows-Betriebssystemen. |
Zielplattform- | Desktop |
Header- | video.h (video.h einschließen) |
Library | Videoprt.lib |
DLL- | Videoprt.sys |
IRQL- | PASSIVE_LEVEL |