Freigeben über


D3DKMT_CREATEALLOCATIONFLAGS Struktur (d3dkmthk.h)

D3DKMT_CREATEALLOCATIONFLAGS ist eine Struktur von Bitfeldern, die angeben, wie eine Zuordnung in einem Aufruf der D3DKMTCreateAllocation- funktion erstellt wird.

Syntax

typedef struct _D3DKMT_CREATEALLOCATIONFLAGS {
  UINT CreateResource : 1;
  UINT CreateShared : 1;
  UINT NonSecure : 1;
  UINT CreateProtected : 1;
  UINT RestrictSharedAccess : 1;
  UINT ExistingSysMem : 1;
  UINT NtSecuritySharing : 1;
  UINT ReadOnly : 1;
  UINT CreateWriteCombined : 1;
  UINT CreateCached : 1;
  UINT SwapChainBackBuffer : 1;
  UINT CrossAdapter : 1;
  UINT OpenCrossAdapter : 1;
  UINT PartialSharedCreation : 1;
  UINT Zeroed : 1;
  UINT WriteWatch : 1;
  UINT StandardAllocation : 1;
  UINT ExistingSection : 1;
  UINT AllowNotZeroed : 1;
  UINT PhysicallyContiguous : 1;
  UINT NoKmdAccess : 1;
  UINT SharedDisplayable : 1;
  UINT NoImplicitSynchronization : 1;
#if ...
  UINT Reserved : 9;
#elif
  UINT Reserved : 10;
#elif
  UINT Reserved : 11;
#elif
  UINT Reserved : 13;
#elif
  UINT Reserved : 14;
#elif
  UINT Reserved : 16;
#elif
  UINT Reserved : 21;
#else
  UINT Reserved : 26;
#endif
} D3DKMT_CREATEALLOCATIONFLAGS;

Angehörige

CreateResource

Gibt an, ob eine gerätespezifische Ressource erstellt werden soll. Wenn Sie CreateShared-festlegen, müssen Sie auch CreateResource-festlegen.

CreateShared

Gibt an, ob eine Für alle Geräte freigegebene Ressource erstellt werden soll. Wenn Sie CreateShared-festlegen, müssen Sie auch CreateResource-festlegen. Weitere Informationen zur Verwendung von CreateSharedfinden Sie im Abschnitt "Hinweise".

NonSecure

Gibt an, ob eine Zuordnung erstellt werden soll, die von einem beliebigen Prozess geöffnet werden kann. Wenn Nicht unsichere festgelegt ist, können sichere und nicht sichere Prozesse die Zuordnung öffnen.

CreateProtected

Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 7 unterstützt.

RestrictSharedAccess

Gibt an, ob eine Ressource erstellt werden soll, die auf allen Geräten gemeinsam genutzt wird, jedoch mit einigen Einschränkungen. Wird ab Windows 7 unterstützt.

ExistingSysMem

Dieses Element ist reserviert und sollte auf Null festgelegt werden. Wird ab Windows 7 unterstützt. ExistingSysMemfolgen den Einschränkungen:

  • ExistingSystemMem und ExistingSection- können nicht beide für dieselbe Zuordnung festgelegt werden. ExistingSysMem festgelegt ist, muss auch StandardAllocation- festgelegt werden.

  • ExistingSysMem korrekt ausgerichtet sein muss. Der vorhandene Systemspeicherpuffer, den die D3D-Laufzeit dem Kernel zugibt, muss seitenbündig und ein Vielfaches von Seitengröße sein, andernfalls schlägt der Kernel den Aufruf von D3DKMTCreateAllocationfehl.

  • Wenn der Kernel einen D3DKMDT_STANDARDALLOCATION_GDISURFACE Typ der Standardzuordnung erstellt:

    • Die Laufzeit stellt die Größe des vorhandenen Systempuffers bereit. Mit dieser Größe erstellt der Kernel eine Standardzuordnung des GDISURFACE-Typs mit den folgenden Parametern, die KMDs richtig verstehen:

      D3DKMDT_GDISURFACEDATA::Width = Size of ExistingSysMem buffer
      D3DKMDT_GDISURFACEDATA::Height = 1
      D3DKMDT_GDISURFACEDATA::Format = D3DDDIFMT_UNKNOWN
      D3DKMDT_GDISURFACEDATA::Type = D3DKMDT_GDISURFACE_TEXTURE_CROSSADAPTER
      
  • Schutz vor ExistingSysMem-Zeigern, die auf eine DXGALLOCATION zeigen, die MemRotated ist

    Der Kernel muss vor dem Szenario schützen, in dem der Benutzermodus eine vorhandene DXGALLOCATION sperrt und den resultierenden CPU-Zeiger verwendet, um eine ExistingSysMem-Standardzuordnung zu erstellen. Dieser Fall ist ungültig, wenn die DXGALLOCATION VAD MEM_ROTATE ist, d. h. wenn sich die Zuordnung in VRAM befindet. Der Kernel führt die folgenden Schritte im Erstellen der Standardzuordnung mit dem ExistingSysMem-Aufruf durch:

    • MemSecure the ExistingSysMem pointer.
    • VirtualQuery den Speicher. Wenn Attribute MEM_ROTATE enthalten, schlagen Sie den Aufruf fehl.
    • MemSecure wird nur freigegeben, wenn diese Zuordnung freigegeben wird, um zu verhindern, dass der Speicher hinter dem Kernel zurück geändert wird.

NtSecuritySharing

Gibt an, ob die Zuordnung mit einem NT-Handle geteilt wird, d. h., es verfügt nicht über ein globales D3DKMT_HANDLE Kernelmodushandle für die Ressource.

Wenn NtSecuritySharing- auf 1 (TRUE) festgelegt ist:

  • Die Zuordnung wird mithilfe der D3DKMTShareObjects--Funktion gemeinsam verwendet, verfügt jedoch nicht über ein globales D3DKMT_HANDLE Handle für die Ressource.
  • CreateShared- muss auf 1 festgelegt sein.

Weitere Informationen zur Verwendung NtSecuritySharing-finden Sie im Abschnitt "Hinweise". Wird ab Windows 8 unterstützt.

ReadOnly

Gibt an, ob die Zuordnung nur gelesen werden kann. Wird ab Windows 8 unterstützt.

CreateWriteCombined

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

CreateCached

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

SwapChainBackBuffer

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

CrossAdapter

Wenn festgelegt, gibt an, dass es sich bei der Ressource um eine gemeinsam genutzte handelt.

OpenCrossAdapter

Wenn festgelegt, gibt an, dass die Ressource durch Öffnen einer Adapterressource erstellt wird. Kann nicht verwendet werden, wenn die Zuordnung aus dem Benutzermodus erstellt wird. Wird ab Windows 8.1 (WDDM 1.3) unterstützt.

PartialSharedCreation

Gibt an, ob die Zuordnung als teilverteilte Zuordnung erstellt wird. Wird ab Windows 8.1 (WDDM 1.3) unterstützt.

Zeroed

[out] Legen Sie fest, wann die Zuordnung mit Nullseiten erfüllt wurde. Wird ab Windows 8 (WDDM 1.3) unterstützt.

WriteWatch

[in] Gibt an, ob die Zuordnung mit aktivierter Schreibüberwachung erstellt werden soll. Wird ab Windows 8.1 (WDDM 1.3) unterstützt.

StandardAllocation

[in] Wenn festgelegt, weist Dxgkrnl- an, eine Standardzuordnung mithilfe pStandardAllocation- anstelle von pPrivateDriverData-zu erstellen. Entweder ExistingSysMem oder ExistingSection (aber nicht beide) müssen auch festgelegt werden, wenn StandardAllocation- festgelegt ist. Darüber hinaus müssen beim Erstellen eines StandardAllocation-auch die CreateShared- und CrossAdapter Flags festgelegt werden. Unterstützt ab Windows 10, Version 1709 (WDDM 2.3).

ExistingSection

[in] Wenn festgelegt, weist Dxgkrnl- an, das Abschnittshandle zu verwenden (hSection) anstelle des Systemspeicherzeigers (pSystemMem). ExistingSystemMem und ExistingSection- können nicht beide für dieselbe Zuordnung festgelegt werden. Wenn ExistingSection- festgelegt ist, muss auch StandardAllocation- festgelegt werden. Unterstützt ab Windows 10, Version 1709 (WDDM 2.3).

AllowNotZeroed

[in] Gibt an, dass die Zuordnung ohne Null der Seiten erstellt werden kann. Unterstützt ab Windows 10, Version 1903 (WDDM 2.6).

PhysicallyContiguous

[in] Gibt an, dass die Zuordnung physisch zusammenhängend sein muss. Unterstützt ab Windows 10, Version 2004 (WDDM 2.7).

NoKmdAccess

[in] Gibt an, dass der KMD nicht über die Zuordnung benachrichtigt wird. Unterstützt ab Windows 10, Version 2004 (WDDM 2.7).

SharedDisplayable

Gibt an, dass es sich bei der Zuordnung um eine freigegebene, angezeigte Ressource handelt. Wird ab Windows 11 (WDDM 3.0) unterstützt.

NoImplicitSynchronization

Reserved

Wird ab Windows 8 unterstützt.

Dieses Element ist reserviert und sollte auf Null festgelegt werden.

Bemerkungen

Objekte, die mithilfe der D3DKMTShareObjects--Funktion freigegeben werden sollen, müssen zuerst mit dem NtSecuritySharing Flagwertsatz erstellt werden. Dieser Kennzeichenwert ist in den Strukturen D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSund D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS verfügbar.

Treiber sollten die folgenden Richtlinien für D3DKMT_CREATEALLOCATIONFLAGS Freigabekennzeichnungen befolgen:

  • Wenn die Zuordnung nicht freigegeben ist, legen Sie sowohl CreateShared- als auch NtSecuritySharing- auf 0 fest.
  • Wenn die Zuordnung mit einem D3DKMT_HANDLE Datentyp geteilt wird, legen Sie CreateShared = 1 und NtSecuritySharing = 0 fest.
  • Wenn die Zuordnung mit einem NT-Handle für den Prozess geteilt wird (und ohne ein globales D3DKMT_HANDLE Kernelmodushandle für die Ressource), legen Sie CreateShared = 1 und NtSecuritySharing = 1 fest.

Anforderungen

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

Siehe auch

D3DKMTCreateAllocation

D3DKMT_CREATEALLOCATION