Lineare Blendenraumsegmente

Ein lineares Blendenraumsegment ähnelt einem linearen Speicherraumsegment. Das Blendenraumsegment ist jedoch nur ein Adressraum und kann keine Bits enthalten.

Um die Bits zu speichern, müssen Systemspeicherseiten zugewiesen werden, und der Adressbereich muss umgeleitet werden, um auf diese Seiten zu verweisen. Der Kernelmodus-Miniporttreiber (KMD) muss die DxgkDdiBuildPagingBuffer-Funktion für DXGK_OPERATION_MAP_APERTURE_SEGMENT- und DXGK_OPERATION_UNMAP_APERTURE_SEGMENT Vorgangstypen implementieren, um die Umleitung zu verarbeiten, und diese Funktion muss verfügbar gemacht werden, wie in DriverEntry des Display Miniport-Treibers beschrieben. Dxgkrnl ruft DxgkDdiBuildPagingBuffer mit dem Adressraumbereich auf, der umgeleitet werden soll, und die MDL, die auf die zugeordneten physischen Systemspeicherseiten verweist.

Die KMD führt in der Regel die Umleitung des Adressbereichs durch Programmieren einer Seitentabelle durch, die dem Videospeicher-Manager (VidMm) unbekannt ist.

Der Treiber muss die Blenden-Bitfeldflagge im Flags-Element der DXGK_SEGMENTDESCRIPTOR Struktur festlegen, um ein lineares Blendenraumsegment anzugeben. Der Treiber kann auch die folgenden Bitfeldkennzeichnungen festlegen, um andere Segmentunterstützung anzugeben:

  • CpuVisible , um anzugeben, dass das Segment CPU-zugänglich ist.

  • CacheCoherent , um anzugeben, dass das Segment die Cachekoherität mit der CPU für die Seiten verwaltet, an die das Segment umleitet.

Die folgende Abbildung zeigt eine visuelle Darstellung eines linearen Blendenraumsegments.

Diagramm, das ein lineares Blendenraumsegment veranschaulicht.