DXGK_ALLOCATIONINFOFLAGS-Struktur (d3dkmddi.h)
Die DXGK_ALLOCATIONINFOFLAGS-Struktur identifiziert Eigenschaften für eine Zuordnung.
Syntax
typedef struct _DXGK_ALLOCATIONINFOFLAGS {
union {
struct {
UINT CpuVisible : 1;
UINT PermanentSysMem : 1;
UINT Cached : 1;
UINT Protected : 1;
UINT ExistingSysMem : 1;
UINT ExistingKernelSysMem : 1;
UINT FromEndOfSegment : 1;
UINT Swizzled : 1;
UINT Overlay : 1;
UINT Capture : 1;
UINT UseAlternateVA : 1;
UINT SynchronousPaging : 1;
UINT LinkMirrored : 1;
UINT LinkInstanced : 1;
UINT HistoryBuffer : 1;
UINT AccessedPhysically : 1;
UINT ExplicitResidencyNotification : 1;
UINT HardwareProtected : 1;
UINT CpuVisibleOnDemand : 1;
UINT Reserved : 4;
UINT DXGK_ALLOC_RESERVED16 : 1;
UINT DXGK_ALLOC_RESERVED15 : 1;
UINT DXGK_ALLOC_RESERVED14 : 1;
UINT DXGK_ALLOC_RESERVED13 : 1;
UINT DXGK_ALLOC_RESERVED12 : 1;
UINT DXGK_ALLOC_RESERVED11 : 1;
UINT DXGK_ALLOC_RESERVED10 : 1;
UINT DXGK_ALLOC_RESERVED9 : 1;
UINT DXGK_ALLOC_RESERVED4 : 1;
UINT DXGK_ALLOC_RESERVED3 : 1;
UINT DXGK_ALLOC_RESERVED2 : 1;
UINT DXGK_ALLOC_RESERVED1 : 1;
UINT DXGK_ALLOC_RESERVED0 : 1;
};
UINT Value;
};
} DXGK_ALLOCATIONINFOFLAGS;
Member
CpuVisible
[out] Ein UINT-Wert, der angibt, ob die CPU auf die Zuordnung direkt zugreifen kann. Der Anzeige-Miniporttreiber muss dieses Flag festlegen, damit der Anzeigetreiber im Benutzermodus die pfnLockCb-Funktion für die Zuordnung erfolgreich aufrufen kann. Wenn dieses Flag nicht für die Zuordnung festgelegt ist, gibt pfnLockCb einen Fehler zurück.
Beachten Sie, dass nur der Prozess, der eine freigegebene Zuordnung erstellt hat, diese Zuordnung sperren kann.
Das Festlegen dieses Elements entspricht dem Festlegen des ersten Bits des 32-Bit-Elements Wert (0x00000001).
PermanentSysMem
[out] Ein UINT-Wert, der angibt, ob eine Kopie der Zuordnung im Systemspeicher aufbewahrt werden soll, auch wenn sich der Inhalt in einem Speichersegment befindet. Standardmäßig geht ein Speicher zur Unterstützung des Surface-Systemspeichers verloren, wenn eine Zuordnung an ein Speichersegment übertragen wird. Wenn das PermanentSysMem-Flag angegeben und die Zuordnung aus einem Speichersegment entfernt wird, wird der Inhalt der Zuordnung verworfen und nicht ausgelagert, wenn die Zuordnung nicht modifiziert ist (d. h. die Zuordnung war nicht das Ziel eines Schreibvorgangs, da sie ausgelagert wurde).
Ein Aufruf von pfnLockCb für die Zuordnung gibt immer den Sicherungsspeicher des Systemspeichers für die Zuordnung zurück. Wenn sich die Zuordnung in einem Speichersegment befindet, wenn der Benutzermodusanzeigetreiber pfnUnlockCb aufruft, wird die Speichersegmentressource für die Zuordnung mit dem neuen Inhalt aktualisiert. Dieses Update wird für den Anzeige-Miniporttreiber als regulärer Pagingvorgang über die DxgkDdiBuildPagingBuffer-Funktion angezeigt. Beachten Sie, dass diese Anforderung in der gesperrten Region widergespiegelt werden sollte, wenn der Anzeigeminiporttreiber eine minimale Regionsgröße oder Ausrichtung für einen Pagingvorgang erfordert. Wenn der Treiber PermanentSysMem festlegt, muss der Treiber auch den CpuVisible-Member festlegen. Der Treiber darf PermanentSysMem nicht auf der primären Oberfläche festlegen.
Das Festlegen dieses Elements entspricht dem Festlegen des zweiten Bits des 32-Bit-Wertmembers (0x00000002).
Cached
[out] Ein UINT-Wert, der angibt, ob der Speicher für die Zuordnungssicherung als zwischengespeicherter Arbeitsspeicher zugeordnet werden soll; Standardmäßig wird der Speicher für die Zuordnungssicherung als kombinierter Schreibspeicher gespeichert. Wenn eine Zwischenspeicherbelegung in einem Segment verwendet wird, das nicht kohärent ist (z. B. ein Speichersegment oder AGP-Segment), stellt der Videospeicher-Manager die Kohärenz für den Inhalt der Zuordnung sicher, indem er ihn zum geeigneten Zeitpunkt aus dem Cache des Prozessors löscht.
Wenn der Treiber Cached und auch das ExistingSysMem - oder ExistingKernelSysMem-Element festlegt, gibt der Treiber dem Videospeicher-Manager an, dass der vorhandene Speicher zwischengespeichert wurde. Wenn der vorhandene Speicher zwischengespeichert werden kann, der Treiber aber nicht den zwischengespeicherten Member festlegen kann, kann der Videospeicher-Manager die Datenkohärenz nicht sicherstellen, und es tritt eine Beschädigung auf. Der Treiber sollte das Zwischengespeicherte Element für eine Zuordnung festlegen, die von der Anwendung oder dem Benutzermodusanzeigetreiber gelesen werden soll. Der Treiber sollte niemals das Zwischengespeicherte Element für eine schreibgeschützte Zuordnung festlegen.
Wenn der Treiber dieses Element festlegt, muss der Treiber auch das CpuVisible-Element festlegen. Der Treiber darf cached nicht auf der primären Oberfläche festlegen.
Das Festlegen dieses Elements entspricht dem Festlegen des dritten Bits des 32-Bit-Elements Wert (0x00000004).
Protected
[out] Ein UINT-Wert, der angibt, ob der Speicher zur Unterstützung der Zuordnung im Kernelspeicher anstelle des Benutzeradressraums zugeordnet werden soll, um die Zuordnung vor potenziellem direkten CPU-Zugriff durch eine Anwendung zu schützen. Der Treiber kann diesen Member nicht in Kombination mit den Membern PermanentSysMem, ExistingSysMem oder ExistingKernelSysMem festlegen. Der Treiber darf auf der primären Oberfläche nicht geschützt festlegen.
Das Festlegen dieses Elements entspricht dem Festlegen des vierten Bits des 32-Bit-Wertmembers (0x00000008).
ExistingSysMem
[out] Ein UINT-Wert, der angibt, ob der Videospeicher-Manager den vorhandenen Systemspeicherbereich als Sicherungsspeicher für die Zuordnung verwenden soll. Der Systemspeicherbereich muss eine gültige Benutzermodusadresse für den aktuellen Prozess für die Größe der Zuordnung sein. Der Systemspeicherbereich muss ebenfalls seitenbündig ausgerichtet sein und ein Mehrfaches der Seite haben.
Wenn der Systemspeicherbereich eine zwischenspeicherbare virtuelle Adresse ist, sollte der Treiber das Zwischengespeicherte Element so festlegen, dass der Videospeicher-Manager informiert wird, um die Cachekohärenz bei der Zuordnung sicherzustellen. Wenn der Zwischengespeicherte Member nicht angegeben ist, ermittelt der Videospeicher-Manager, dass der Systemspeicherbereich nicht zwischengespeichert, kombiniert geschrieben oder zwischengespeichert werden kann. In diesem Fall stellt der Treiber jedoch entweder die Cachekohärenz sicher oder bestimmt, dass die Cachekohärenz für die angegebene Verwendung kein Problem darstellt.
Beachten Sie, dass dieser Zuordnungstyp implizit dieselbe Sperrsemantik aufweist wie eine Zuordnung, in der der PermanentSysMem-Member festgelegt ist.
Der Treiber kann ExistingSysMem nicht in Kombination mit dem PermanentSysMem-, Protected- oder ExistingKernelSysMem-Element festlegen. Der Treiber darf ExistingSysMem nicht auf der primären Oberfläche festlegen.
Das Festlegen dieses Elements entspricht dem Festlegen des fünften Bits des 32-Bit-Elements Wert (0x00000010).
ExistingKernelSysMem
[out] Ein UINT-Wert, der angibt, ob der Videospeicher-Manager den vorhandenen Systemspeicherbereich als Sicherungsspeicher für die Zuordnung verwenden soll. Der Systemspeicherbereich muss eine gültige Kernelmodusadresse sein, die auf einer Seite ausgerichtet ist, und eine Seite, die um ein Vielfaches größer ist.
Wenn der Systemspeicherbereich eine zwischenspeicherbare virtuelle Adresse ist, sollte der Treiber das Zwischengespeicherte Element so festlegen, dass der Videospeicher-Manager informiert wird, um die Cachekohärenz bei der Zuordnung sicherzustellen. Wenn der Zwischengespeicherte Member nicht angegeben ist, ermittelt der Videospeicher-Manager, dass der Systemspeicherbereich nicht zwischengespeichert, kombiniert geschrieben oder zwischengespeichert werden kann. In diesem Fall stellt der Treiber jedoch entweder die Cachekohärenz sicher oder bestimmt, dass die Cachekohärenz für die angegebene Verwendung kein Problem darstellt.
Beachten Sie, dass dieser Zuordnungstyp implizit dieselbe Sperrsemantik aufweist wie eine Zuordnung, in der der PermanentSysMem-Member festgelegt ist.
Der Treiber kann ExistingKernelSysMem nicht in Kombination mit dem PermanentSysMem-, Protected- oder ExistingSysMem-Element festlegen. Der Treiber darf ExistingKernelSysMem nicht auf der primären Oberfläche festlegen.
Das Festlegen dieses Elements entspricht dem Festlegen des sechsten Bits des 32-Bit-Wertelements (0x00000020).
FromEndOfSegment
[out] Ein UINT-Wert, der angibt, ob die Zuordnung vom Ende eines Segments während des Pagings zugeordnet werden soll. Der Videospeicher-Manager scannt einen Segmentadressraum und sucht am Ende des Segments nach Raum für die Zuordnung, anstatt vom Anfang des Segments aus zu scannen (dies ist das Standardverhalten). Die angedeuteten und bevorzugten Segmentinformationen haben jedoch Vorrang vor diesem Flag.
Das Festlegen dieses Elements entspricht dem Festlegen des siebten Bits des 32-Bit-Elements Wert (0x00000040).
Swizzled
[out] Ein UINT-Wert, der angibt, ob die Zuordnung geschwenkt wird und besondere Unterstützung durch den Videospeicher-Manager erfordert, um die Zuordnung zu sperren. Weitere Informationen zu swizzled-Zuordnungen finden Sie unter Sperren von Swizzled-Zuordnungen.
Das Festlegen dieses Elements entspricht dem Festlegen des achten Bits des 32-Bit-Elements Wert (0x00000080).
Overlay
[out] Ein UINT-Wert, der angibt, ob die Zuordnung für einen Überlagerungsvorgang gilt. Overlayzuordnungen werden im Arbeitsspeicher angeheftet, und der Videospeicher-Manager kann sie nur entfernen, wenn der Timeouterkennungs- und Wiederherstellungsprozess (Timeout Detection and Recovery, TDR), Plug & Play (PnP) beendet oder die Synchronisierung der Ebene 3 erfolgt. Beachten Sie, dass Überlagerungen vor der Synchronisierung der Stufe drei in der Regel zerstört werden. Standardmäßig sind Overlayzuordnungen begrenzt und dürfen nicht mehr als die letzten 20 Prozent eines Segments belegen. Wenn eine Überlagerungszuordnung in einem Blendensegment zugeordnet ist, sollte der Display-Miniporttreiber die Größe jeder anderen Zuordnung, die dieses Blendensegment als Entfernungssegment verwendet, auf 80 Prozent der Segmentgröße beschränken. Der Anzeige-Miniporttreiber gibt an, dass eine Zuordnung ein Segment für die Entfernung verwenden kann, indem das entsprechende Bit für das Segment im EvictionSegmentSet-Element der DXGK_ALLOCATIONINFO-Struktur für die Zuordnung angegeben wird. Wenn der Anzeigeminiporttreiber die Größe einer anderen Zuordnung nicht einschränkt, kann der Videospeicher-Manager diese Zuordnung nicht über das Segment entfernen, da die angeheftete Zuordnung (d. h. die Überlagerungszuordnung) den bereich einnimmt, der für die Entfernung erforderlich ist. In diesem Fall geht der Inhalt der anderen Zuordnung, die entfernt wird, verloren, und die Anwendung, die die verlorene Zuordnung besitzt, kann nicht mehr mit dieser Zuordnung gerendert werden.
Das Festlegen dieses Elements entspricht dem Festlegen des neunten Bits des 32-Bit-Elements Wert (0x00000100).
Capture
[out] Ein UINT-Wert, der angibt, ob die Zuordnung für einen Erfassungsvorgang verwendet wird. Erfassungszuordnungen werden ähnlich wie Überlagerungszuordnungen im Arbeitsspeicher angeheftet. Daher gelten die Probleme, die für Überlagerungszuordnungen gelten, auch für Erfassungszuordnungen. Weitere Informationen zu diesen Problemen finden Sie in der Beschreibung des Overlay-Flags . Beachten Sie, dass Aufzeichnungen in der Regel beendet werden, bevor die Synchronisierung der Ebene 3 erfolgt.
Das Festlegen dieses Elements entspricht dem Festlegen des zehnten Bits des 32-Bit-Elements Wert (0x00000200).
UseAlternateVA
[out] Ein UINT-Wert, der angibt, ob die primäre Zuordnung gesperrt werden kann. UseAlternateVA ist nur für die primäre Zuordnung gültig. Wenn UseAlternateVA für eine andere Zuordnung angegeben ist, wird die Zuordnung nicht erstellt. Wenn eine primäre Zuordnung mithilfe von UseAlternateVA erstellt wird, wird beim Erstellen der Zuordnung ein Schwenkbereich für die primäre Zuordnung eingerichtet.
Das Festlegen dieses Elements entspricht dem Festlegen des elften Bits des 32-Bit-Elements Wert (0x00000400).
SynchronousPaging
[out] Ein UINT-Wert, der angibt, ob die Zuordnung synchron ausgelagert werden soll. Wenn der Anzeige-Miniporttreiber dieses Bit für eine Zuordnung festlegt, wartet der Videospeicher-Manager, bis die Zuordnung nicht mehr ausgelastet ist (d. h. der Videospeicher-Manager wartet, bis die Grafikverarbeitungseinheit (GPU) alle Zäune meldet, die auf die Zuordnung verweisen), bevor der Videospeicher-Manager einen Auslagerungspuffer übermittelt, der auf die Zuordnung verweist.
Ebenso wartet der Videospeicher-Manager auf den Abschluss eines Pagingvorgangs für eine synchrone Zuordnung, bevor der Videospeicher-Manager dem Treiber das Übermitteln eines DMA-Puffers (Direct Memory Access) zulässt, der nicht aus pagingt ist.
Das Festlegen dieses Elements entspricht dem Festlegen des zwölften Bits des 32-Bit-Wertelements (0x00000800).
LinkMirrored
[out] Ein UINT-Wert, der angibt, ob ein einzelner instance einer Zuordnung über alle physischen Adapter in einem logischen Adapter (d. s. eine Verknüpfung) repliziert werden soll. Der Videospeicher-Manager ruft den Treiber auf und entfernt die Zuordnung auf allen physischen Adaptern mit einem einzigen freigegebenen Sicherungsspeicher im Systemspeicher.
Das Festlegen dieses Elements entspricht dem Festlegen des dreizehnten Bits des 32-Bit-Elements Wert (0x00001000).
LinkInstanced
[out] Ein UINT-Wert, der angibt, ob verschiedene Instanzen einer Zuordnung ausgelagert und von allen physischen Adaptern in einem logischen Adapter entfernt werden (d. h. ein Link). Pro physischem Adapter in einem logischen Adapter ist ein Speicher zur Unterstützung des Systemspeichers vorhanden.
Das Festlegen dieses Elements entspricht dem Festlegen des vierzehnten Bits des 32-Bit-Wertmembers (0x00002000).
HistoryBuffer
[out] Ein UINT-Wert, der angibt, ob der Benutzermodusanzeigetreiber einen Verlaufspuffer zuordnet. Der Anzeige-Miniporttreiber muss dieses Flag festlegen, um anzugeben, dass der Benutzermodustreiber die Erstellung und Zerstörung von Verlaufspuffern verwalten kann.
Wenn der Anzeige-Miniporttreiber HistoryBuffer festlegt, muss er auch das Flag CpuVisible festlegen. Wenn der Treiber Cache-kohärente Blendensegmente unterstützt, muss er auch Cached festlegen, und alle anderen Member müssen auf 0 (null) festgelegt werden.
Das Festlegen dieses Elements entspricht dem Festlegen des fünfzehnten Bits des 32-Bit-Elements Wert (0x00004000).
Unterstützt ab Windows 8.1.
AccessedPhysically
Der Kernelmodustreiber legt das Flag für Zuordnungen fest, auf die über ihre physische Adresse zugegriffen wird. Diese Zuordnung wird zusammenhängend aus GPU-Speichersegmenten zugeordnet. Die Zuordnungen sind nicht zusammenhängend, wenn sie aus dem Systemspeicher zugeordnet werden.
Das Festlegen dieses Elements entspricht dem Festlegen des sechzehnten Bits des 32-Bit-Elements Wert (0x00008000).
Unterstützt ab Windows 10.
ExplicitResidencyNotification
Wenn diese Flags angegeben sind, erhält der Treiber einen NotifyResidency-Pagingpuffervorgang, wenn die Zuordnungsresidenz geändert wird (entfernt, committet). Das Flag kann nur festgelegt werden, wenn das Flag "AccessedPhysically " festgelegt ist.
Das Festlegen dieses Elements entspricht dem Festlegen des siebzehnten Bits des 32-Bit-Elements Wert (0x00010000).
Unterstützt ab Windows 10.
HardwareProtected
Wenn dieses Element festgelegt ist, enthält die Zuordnung Inhalte, die für die Verwaltung digitaler Rechte (DrM) für hardwarebasierte Rechte verwendet werden.
CpuVisibleOnDemand
Wenn dieses Element festgelegt ist, versucht der Videospeicher-Manager, die virtuelle Adresse für die Zuordnung zuzuordnen, wenn sie zugeordnet/gesperrt ist. Dies führt dazu, dass die Zuordnung nicht über eine permanente virtuelle Adresse verfügt, wodurch der verwendete virtuelle Adressraum reduziert wird. Es verhält sich ähnlich wie das CpuVisible-Flag , da es sich um eine Zuordnung handelt, auf die die CPU direkt zugreifen kann, aber es ruft nur die virtuelle Adresse "bei Bedarf" ab, anstatt dauerhaft zugewiesen zu werden.
Reserved
Ist für das System reserviert. Ab Windows 10 verfügbar.
DXGK_ALLOC_RESERVED16
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED15
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED14
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED13
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED12
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED11
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED10
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED9
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED4
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED3
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED2
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED1
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
DXGK_ALLOC_RESERVED0
[in] Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Unterstützt ab Windows 8.
Value
[out] Ein Member in der Union, das DXGK_ALLOCATIONINFOFLAGS enthält, das einen 32-Bit-Wert enthalten kann, der Eigenschaften der Zuordnung identifiziert.
Hinweise
Ein Anzeige-Miniporttreiber, der auf eine WDDM-Version vor WDDM 2.0 ausgerichtet ist, verwendet diese Struktur, um diese Flags für den Videospeicher-Manager anzugeben. Treiber für WDDM-Versionen >= WDDM 2.0 sollten DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 verwenden.
Sie können Eigenschaften einer Zuordnung angeben, indem Sie Bits im 32-Bit-Element Wert festlegen oder indem Sie einzelne Member der Struktur in der Union festlegen, die die DXGK_ALLOCATIONINFOFLAGS-Struktur enthält.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Kopfzeile | d3dkmddi.h (einschließlich D3dkmddi.h) |