DXGK_SEGMENTDESCRIPTOR3 Struktur (d3dkmddi.h)
Die DXGK_SEGMENTDESCRIPTOR3-Struktur enthält Informationen zu einem vom Treiber unterstützten Segment, das aus sowohl BIOS-reserviertem Speicher (der während eines Übergangs zu einem Energiesparzustand gelöscht wird) als auch aus treibergeschütztem Speicher besteht.
Syntax
typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
[out] DXGK_SEGMENTFLAGS Flags;
[out] PHYSICAL_ADDRESS BaseAddress;
[out] PHYSICAL_ADDRESS CpuTranslatedAddress;
[out] SIZE_T Size;
[out] UINT NbOfBanks;
[out] SIZE_T *pBankRangeTable;
[out] SIZE_T CommitLimit;
SIZE_T SystemMemoryEndAddress;
SIZE_T Reserved;
} DXGK_SEGMENTDESCRIPTOR3;
Angehörige
[out] Flags
Eine DXGK_SEGMENTFLAGS Struktur, die Eigenschaften in Bitfeldkennzeichnungen für das Segment identifiziert.
Beachten Sie, dass der Treiber für ein AGP-Typ Blendensegment ausschließlich die Agp Mitglied der Struktur in der Vereinigung festlegen muss, die DXGK_SEGMENTFLAGS enthält. Obwohl das AGP-Typ Blendensegment eine Blende ist und für die CPU zugänglich ist, kann der Adapter nicht initialisiert werden, wenn andere Elemente festgelegt sind.
[out] BaseAddress
Die Basisadresse des Segments, wie durch die Grafikverarbeitungseinheit (GPU) bestimmt. Die physische Adresse einer Zuordnung, die der im Segment aufgetragene Videospeicher-Manager zugeordnet ist, wird eine GPU-Adresse zugewiesen, die von der Basisadresse versetzt wird, die BaseAddress- angibt.
Der Videospeicher-Manager ignoriert die Basisadresse von AGP-Typ Blendensegmenten (wobei die Agp Bitfeldflagge im Flags Member angegeben ist) und verwendet stattdessen die tatsächliche physische Adresse des Segments innerhalb der AGP-Blende, wie auf dem Bus bestimmt, in dem sich die GPU befindet. In diesem Fall kann der Treiber Adressen verwenden, die der Videospeicher-Manager für die Zuordnung direkt generiert hat, ohne dass eine Übersetzung erforderlich ist.
[out] CpuTranslatedAddress
Die Basisadresse des Segments, relativ zum Bus, auf dem die GPU angeschlossen ist. Wenn die GPU beispielsweise auf dem PCI-Bus verbunden ist, CpuTranslatedAddress die Basisadresse des verwendbaren Bereichs ist, der durch ein PCI-Basisadressenregister (BAR) angegeben wird. Der Treiber gibt diese Adresse nur an, wenn es ein CPU-zugängliches Segment angibt, indem das CpuVisible- Bitfeld-Flag im Flags Member festgelegt wird.
Dieses Element wird für Blendensegmente, einschließlich des AGP-Typ-Blendensegments, ignoriert. Die einzige Ausnahme tritt auf, wenn der Anzeigetreiber für den Benutzermodus keine alternative virtuelle Adresse für eine primäre Zuordnung eingerichtet hat (d. a., wenn der Treiber UseAlternateVA im Flags Member der D3DDDICB_LOCKFLAGS Struktur während eines Aufrufs der pfnLockCb-Funktion nicht festgelegt hat).
Bevor der Videospeicher-Manager eine virtuelle Adresse dem physischen Bereich zuordnet, übersetzt der Videospeicher-Manager diese physische Adresse basierend auf der CPU-Ansicht des Buss und informiert den Treiber über den Vorgang, damit der Treiber eine Blende einrichten kann, um auf den Inhalt des Segments an der angegebenen Position zuzugreifen.
[out] Size
Die Größe des Segments in Byte. Diese Größe muss ein Vielfaches der systemeigenen Hostseitengröße sein (z. B. 4 KB auf der x86-Architektur).
Für AGP-Typen-Blendensegmente (wobei die Agp Bitfeldflagge im Flags Member angegeben ist), weist der Videospeicher-Manager so viel Öffnungsraum wie möglich zu, sodass dieses Element ignoriert wird.
[out] NbOfBanks
Die Anzahl der Banken im Segment, wenn Bankwesen verwendet wird (d. r., wenn die UseBanking Bitfeldflagge im Flags Mitglied festgelegt ist).
[out] pBankRangeTable
Ein Array von Werten, das die Bereiche angibt, die jede Bank im Segment trennen. Der Treiber gibt dieses Array nur an, wenn es auch das UseBanking- Bitfeld-Flag im Flags Member festlegt.
Das Array gibt die Endadressen der ersten Bank über die NbOfBanksth Bank an (d. s. der Endversatz in das Segment für jede Bank). Beachten Sie Folgendes:
Banken sind zusammenhängend.
Die erste Bank beginnt bei Offset Null des Segments.
Die letzte Bank endet am Ende des Segments, sodass der Treiber nicht erforderlich ist, um die Endadresse der letzten Bank anzugeben.
[out] CommitLimit
Die maximale Anzahl von Bytes, die für das Segment zugesichert werden können. Bei einem Speichersegment ist der Commit-Grenzwert immer mit der Größe des Segments identisch, die im element Size angegeben wird. Bei einem Blendensegment kann der Treiber die Speichermenge begrenzen, die für das Segment auf Systemen mit geringen Mengen physischem Speicher zugesichert werden kann.
SystemMemoryEndAddress
Bei Segmenten, die teilweise aus Systemspeicher bestehen, werden alle Zuordnungen, die nach dieser Adresse beginnen, in einem Übergang zu einem Ruhezustand gelöscht. Zuordnungen, die vollständig im Systemspeicher vorhanden sind, wobei die Segmentadresse kleiner oder gleich SystemMemoryEndAddressist, werden in diesem Übergang nicht entfernt.
Der Miniporttreiber für die Anzeige sollte dieses Element auf einen Wert ohneNULL festlegen, wenn das Segment teilweise in einem Übergang zu einem Ruhezustand beibehalten wird. In diesem Fall sollte das PartiallyPreservedDuringHibernate Member in der DXGK_SEGMENTFLAGS Struktur festgelegt werden.
Der vom Treiber reservierte Speicher wird von Segmentadresse 0 bis SystemMemoryEndAddress(einschließlich) ausgeführt. BIOS-reservierter Speicher wird vom (SystemMemoryEndAddress+1) bis zum Ende des Segments ausgeführt.
Reserved
Dieses Element ist reserviert und sollte auf Null festgelegt werden.
Bemerkungen
Diese Struktur wird von einem WDDM 1.2- oder höher-Kernelmodus-Anzeigeminiporttreiber verwendet, um Informationen zu Speichersegmenten als Reaktion auf einen DxgkDdiQueryAdapterInfo Funktionsaufruf zurückzugeben, in dem das Grafiksubsystem den DXGKQAITYPE_QUERYSEGMENT3 Wert im Type Member der DXGKARG_QUERYADAPTERINFO Struktur angibt.
Auf diese Struktur wird durch den pSegmentDescriptor Member der DXGK_QUERYSEGMENTOUT3-Struktur verwiesen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8 |
mindestens unterstützte Server- | Windows Server 2012 |
Header- | d3dkmddi.h |