Freigeben über


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;

Angehörige

CpuVisible

[out] Ein UINT-Wert, der angibt, ob die Zuordnung direkt über die CPU zugänglich ist. Der Anzeigeminiporttreiber muss dieses Kennzeichen für den Benutzermodusanzeigetreiber festlegen, um die pfnLockCb Funktion für die Zuordnung erfolgreich aufzurufen. 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-Value Members (0x00000001).

PermanentSysMem

[out] Ein UINT-Wert, der angibt, ob eine Kopie der Zuordnung im Systemspeicher gespeichert werden soll, auch wenn sich der Inhalt in einem Speichersegment befindet. Standardmäßig geht beim Übertragen einer Zuordnung zu einem Speichersegment eine Speichersicherung des Surface-Systems verloren. Wenn das PermanentSysMem- Flag angegeben wird und die Zuordnung aus einem Speichersegment entfernt wird, wird der Inhalt der Zuordnung verworfen und nicht ausgelagert, wenn die Zuordnung nicht schmutzig 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 Systemspeicher für die Zuordnung zurück. Wenn sich die Zuordnung in einem Speichersegment befindet, wenn der Benutzermodustreiber pfnUnlockCbaufruft, wird die Speichersegmentressource für die Zuordnung mit dem neuen Inhalt aktualisiert. Dieses Update erscheint für den Anzeigeminiporttreiber als regulärer Auslagerungsvorgang durch die DxgkDdiBuildPagingBuffer--Funktion. Beachten Sie, dass diese Anforderung in der gesperrten Region widergespiegelt werden sollte, wenn der Miniporttreiber eine minimale Bereichsgröße oder Ausrichtung für einen Paging-Vorgang erfordert. Wenn der Treiber PermanentSysMemfestlegt, muss der Treiber auch den CpuVisible Member festlegen. Der Treiber darf nicht PermanentSysMem auf der Primäroberfläche festlegen.

Das Festlegen dieses Elements entspricht dem Festlegen des zweiten Bits des 32-Bit-Value Members (0x00000002).

Cached

[out] Ein UINT-Wert, der angibt, ob der Zuordnungssicherungsspeicher als zwischengespeicherter Speicher zugeordnet werden soll; Standardmäßig wird der Zuordnungssicherungsspeicher als schreibgeschützter Speicher gespeichert. Wenn eine zwischengespeicherte Speicherzuweisung in einem Segment verwendet wird, das nicht zwischengespeichert 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 zur entsprechenden Zeit aus dem Cache des Prozessors leeren kann.

Wenn der Treiber zwischengespeicherten festlegt und außerdem die ExistingSysMem oder ExistingKernelSysMem Member festlegt, gibt der Treiber an, dass der vorhandene Speicher zwischengespeichert werden kann. Wenn der vorhandene Speicher zwischengespeichert wurde, der Treiber jedoch den zwischengespeicherten Member nicht festlegen kann, kann der Videospeicher-Manager keine Datenkohärenz sicherstellen und Beschädigungen auftreten. Der Treiber sollte den zwischengespeicherten Member für eine Zuordnung festlegen, die von der Anwendung oder dem Anzeigetreiber für den Benutzermodus gelesen werden soll. Der Treiber sollte nie den zwischengespeicherten Member für eine schreibgeschützte Zuordnung festlegen.

Wenn der Treiber dieses Element festlegt, muss der Treiber auch den CpuVisible Member festlegen. Der Treiber darf nicht zwischengespeicherten auf der primären Oberfläche festlegen.

Das Festlegen dieses Elements entspricht dem Festlegen des dritten Bits des 32-Bit-Value Members (0x00000004).

Protected

[out] Ein UINT-Wert, der angibt, ob der Zuordnungssicherungsspeicher im Kernelspeicher anstelle des Benutzeradressraums zugewiesen werden soll, um die Zuordnung vor potenziellem direkten CPU-Zugriff durch eine Anwendung zu schützen. Der Treiber kann dieses Element nicht in Kombination mit dem PermanentSysMem, ExistingSysMemoder ExistingKernelSysMem Member festlegen. Der Treiber darf nicht Geschützte auf der primären Oberfläche festlegen.

Das Festlegen dieses Elements entspricht dem Festlegen des vierten Bits des 32-Bit-Value Members (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 auch seitenbündig ausgerichtet sein und muss eine Seite mit mehreren Größen sein.

Wenn der Systemspeicherbereich eine zwischenspeicherbare virtuelle Adresse ist, sollte der Treiber die zwischengespeicherten Mitglied festlegen, um den Videospeicher-Manager zu informieren, um die Cachekohärenz für die Zuordnung sicherzustellen. Wenn das zwischengespeicherten Mitglied nicht angegeben ist, bestimmt der Videospeicher-Manager, dass der Systemspeicherbereich nicht zwischengespeichert, kombiniert oder zwischengespeichert werden kann; In diesem Fall stellt der Treiber jedoch entweder die Cachekohärenz sicher oder bestimmt, dass die Cachekoherenz kein Problem für die angegebene Verwendung ist.

Beachten Sie, dass diese Art von Zuordnung implizit dieselbe Sperrsemantik wie eine Zuordnung aufweist, in der das PermanentSysMem Member festgelegt ist.

Der Treiber kann ExistingSysMem- nicht in Kombination mit dem PermanentSysMem, Protectedoder ExistingKernelSysMem Member festlegen. Der Treiber darf nicht ExistingSysMem- auf der primären Oberfläche festlegen.

Das Festlegen dieses Elements entspricht dem Festlegen des fünften Bits des 32-Bit-Value Members (0x00000010).

ExistingKernelSysMem

[out] Ein UINT-Wert, der angibt, ob der Videospeicher-Manager den vorhandenen Systemspeicherbereich als Sicherungsspeicher für die Zuordnung verwenden soll. Der Speicherbereich des Systems muss eine gültige Kernelmodusadresse sein, die auf einer Seite und einer Seite mit mehreren Größen ausgerichtet ist.

Wenn der Systemspeicherbereich eine zwischenspeicherbare virtuelle Adresse ist, sollte der Treiber die zwischengespeicherten Mitglied festlegen, um den Videospeicher-Manager zu informieren, um die Cachekohärenz für die Zuordnung sicherzustellen. Wenn das zwischengespeicherten Mitglied nicht angegeben ist, bestimmt der Videospeicher-Manager, dass der Systemspeicherbereich nicht zwischengespeichert, kombiniert oder zwischengespeichert werden kann; In diesem Fall stellt der Treiber jedoch entweder die Cachekohärenz sicher oder bestimmt, dass die Cachekoherenz kein Problem für die angegebene Verwendung ist.

Beachten Sie, dass diese Art von Zuordnung implizit dieselbe Sperrsemantik wie eine Zuordnung aufweist, in der das PermanentSysMem Member festgelegt ist.

Der Treiber kann ExistingKernelSysMem nicht in Kombination mit dem PermanentSysMem, Protectedoder ExistingSysMem Member festlegen. Der Treiber darf nicht ExistingKernelSysMem auf der primären Oberfläche festlegen.

Das Festlegen dieses Elements entspricht dem Festlegen des sechsten Bits des 32-Bit-Value Members (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 nach Raum für die Zuordnung vom Ende des Abschnitts, anstatt ab dem Anfang des Segments zu scannen (was das Standardverhalten ist). Die angedeuteten und bevorzugten Segmentinformationen haben jedoch Vorrang vor dieser Kennzeichnung.

Das Festlegen dieses Elements entspricht dem Festlegen des siebten Bits des 32-Bit-Value Members (0x00000040).

Swizzled

[out] Ein UINT-Wert, der angibt, ob die Zuordnung geschwenkt wird und eine spezielle Unterstützung durch den Videospeicher-Manager erfordert, um die Zuordnung zu sperren. Weitere Informationen zu geschwommenen Zuordnungen finden Sie unter Locking Swizzled Allocations.

Das Festlegen dieses Elements entspricht dem Festlegen des achten Bits des 32-Bit-Value Members (0x00000080).

Overlay

[out] Ein UINT-Wert, der angibt, ob die Zuordnung für einen Überlagerungsvorgang gilt. Überlagerungszuweisungen werden im Arbeitsspeicher angeheftet, und der Videospeicher-Manager kann sie nicht entfernen, es sei denn, der Timeout-Erkennungs- und Wiederherstellungsprozess (TDR), Plug and Play (PnP)-Stopp oder Ebene 3 Synchronisierung. Beachten Sie, dass Vor der dreistufigen Synchronisierung Überlagerungen in der Regel zerstört werden. Überlagerungszuordnungen sind standardmäßig begrenzt und dürfen nicht mehr als die letzten 20 Prozent eines Segments belegen. Wenn eine Überlagerungszuordnung in einem Blendensegment zugewiesen wird, sollte der Display-Miniporttreiber die Größe aller anderen Zuordnungen beschränken, die dieses Blendensegment als Ausweisungssegment auf 80 Prozent der Segmentgröße verwenden. Der Miniporttreiber für die Anzeige 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 Anzeige-Miniporttreiber die Größe einer anderen Zuordnung nicht begrenzt, kann der Videospeicher-Manager diese Zuordnung nicht über das Segment ausweiten, da die angeheftete Zuordnung (d. h. die Überlagerungszuordnung) den Bereich belegt, der für die Entfernung erforderlich ist. In diesem Fall geht der Inhalt der anderen Zuweisung, 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-Value Members (0x00000100).

Capture

[out] Ein UINT-Wert, der angibt, ob die Zuordnung für einen Erfassungsvorgang verwendet wird. Erfassungszuordnungen werden im Arbeitsspeicher ähnlich wie Überlagerungszuordnungen angeheftet. Daher gelten auch die Probleme, die für Überlagerungszuweisungen gelten, für die Erfassung von Zuordnungen. Weitere Informationen zu diesen Problemen finden Sie in der Beschreibung des flags Overlay. Beachten Sie, dass aufzeichnungen normalerweise beendet werden, bevor Ebene 3 Synchronisierung erfolgt.

Das Festlegen dieses Elements entspricht dem Festlegen des zehnten Bits des 32-Bit-Value Members (0x00000200).

UseAlternateVA

[out] Ein UINT-Wert, der angibt, ob die primäre Zuordnung gesperrt werden kann. UseAlternateVA- gilt nur für die primäre Zuordnung. Wenn UseAlternateVA- für eine andere Zuordnung angegeben wird, wird die Zuordnung nicht erstellt. Wenn eine primäre Zuordnung mithilfe von UseAlternateVAerstellt wird, wird beim Erstellen der Zuordnung ein Schwarmbereich für die primäre Zuordnung eingerichtet.

Das Festlegen dieses Elements entspricht dem Festlegen des elften Bits des 32-Bit-Value Members (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 sendet, der auf die Zuordnung verweist.

Ebenso wartet der Videospeicher-Manager auf einen Auslagerungsvorgang für eine synchrone Zuordnung, bevor der Videospeicher-Manager dem Treiber ermöglicht, einen nicht ausgelagerten direkten Speicherzugriffspuffer (Direct Memory Access, DMA) zu übermitteln.

Das Festlegen dieses Elements entspricht dem Festlegen des zwölften Bits des 32-Bit-Value Members (0x00000800).

LinkMirrored

[out] Ein UINT-Wert, der angibt, ob eine einzelne Instanz einer Zuordnung über alle physischen Adapter in einem logischen Adapter repliziert werden soll (d. a. eine Verbindung). Der Videospeicher-Manager ruft den Treiber zur Seite auf und entfernt die Zuordnung für alle physischen Adapter mit einem einzigen freigegebenen Sicherungsspeicher im Systemspeicher.

Das Festlegen dieses Elements entspricht dem Festlegen des dreizehnten Bits des 32-Bit-Value Members (0x00001000).

LinkInstanced

[out] Ein UINT-Wert, der angibt, ob verschiedene Instanzen einer Zuordnung ausgelagert und von allen physischen Adaptern in einem logischen Adapter (d. h. eine Verknüpfung) entfernt werden. Ein Speicher zur Systemspeichersicherung ist pro physischem Adapter in einem logischen Adapter vorhanden.

Das Festlegen dieses Elements entspricht dem Festlegen des vierzehnten Bits des 32-Bit-Value Members (0x00002000).

HistoryBuffer

[out] Ein UINT-Wert, der angibt, ob der Anzeigetreiber für den Benutzermodus einen Verlaufspuffer zuweist. Der Miniporttreiber für die Anzeige muss dieses Kennzeichen festlegen, um anzugeben, dass der Benutzermodustreiber die Erstellung und Zerstörung von Verlaufspuffern verwalten kann.

Wenn der Miniport-Anzeigetreiber HistoryBuffer-festlegt, muss er auch das CpuVisible Flag festlegen. Wenn der Treiber Cache-kohärente Blendensegmente unterstützt, muss er auch zwischengespeichertenfestlegen, und alle anderen Member müssen auf Null festgelegt werden.

Das Festlegen dieses Elements entspricht dem Festlegen des fünfzehnten Bits des 32-Bit-Value Members (0x00004000).

Wird ab Windows 8.1 unterstützt.

AccessedPhysically

Der Kernelmodustreiber legt die Kennzeichnung für Zuordnungen fest, auf die über ihre physische Adresse zugegriffen wird. Diese Zuordnung wird zusammenhängend aus GPU-Speichersegmenten zugewiesen. Die Zuordnungen sind nicht zusammenhängend, wenn sie aus dem Systemspeicher zugewiesen werden.

Das Festlegen dieses Elements entspricht dem Festlegen des sechzehnten Bits des 32-Bit-Value Members (0x00008000).

Wird ab Windows 10 unterstützt.

ExplicitResidencyNotification

Wenn diese Kennzeichnungen angegeben werden, empfängt der Treiber einen NotifyResidency- Pagingpuffervorgang, wenn die Zuordnungsaufbewahrung geändert wird (zugewiesen, zugesichert). Das Flag kann nur festgelegt werden, wenn das flag AccessedPhysically festgelegt ist.

Das Festlegen dieses Elements entspricht dem Festlegen des 17. Bits des 32-Bit-Value Members (0x00010000).

Wird ab Windows 10 unterstützt.

HardwareProtected

Wenn dieses Mitglied festgelegt ist, enthält die Zuordnung Inhalte, die für die Verwaltung digitaler Rechte (Hardware Digital Rights Management, DRM) verwendet werden.

CpuVisibleOnDemand

Wenn dieses Mitglied festgelegt ist, versucht der Videospeicher-Manager, die virtuelle Adresse für die Zuordnung zuzuweisen, wenn es zugeordnet/gesperrt ist. Dies führt dazu, dass die Zuordnung keine permanente virtuelle Adresse aufweist, wodurch die Menge des verwendeten virtuellen Adressraums reduziert wird. Es verhält sich ähnlich wie die CpuVisible Flag darin, dass es sich um eine Zuordnung handelt, auf die direkt von der CPU zugegriffen werden kann, sondern nur die virtuelle Adresse für sie "bei Bedarf" erhält, anstatt dauerhaft zugewiesen zu werden.

Reserved

Reserviert für die Systemverwendung. Verfügbar ab Windows 10.

DXGK_ALLOC_RESERVED16

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED15

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED14

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED13

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED12

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED11

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED10

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED9

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED4

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED3

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED2

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED1

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

DXGK_ALLOC_RESERVED0

[in] Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 8 unterstützt.

Value

[out] Ein Mitglied in der Union, das DXGK_ALLOCATIONINFOFLAGS enthält, das einen 32-Bit-Wert enthalten kann, der Die Eigenschaften der Zuordnung identifiziert.

Bemerkungen

Ein Anzeige-Miniporttreiber, der auf eine frühere WDDM-Version als 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_0verwenden.

Sie können Eigenschaften einer Zuordnung angeben, indem Sie Bits in der 32-Bit-Value Member festlegen oder einzelne Member der Struktur in der Union festlegen, die die DXGK_ALLOCATIONINFOFLAGS Struktur enthält.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Header- d3dkmddi.h (einschließlich D3dkmddi.h)

Siehe auch

DXGK_ALLOCATIONINFO

DXGK_ALLOCATIONINFOFLAGS_WDDM2_0

DxgkDdiBuildPagingBuffer-

pfnLockCb

pfnUnlockCb