D3DDDICB_LOCKFLAGS-Struktur (d3dukmdt.h)

Die D3DDDICB_LOCKFLAGS-Struktur gibt an, wie eine Zuordnung gesperrt wird.

Syntax

typedef struct _D3DDDICB_LOCKFLAGS {
  union {
    struct {
      UINT ReadOnly : 1;
      UINT WriteOnly : 1;
      UINT DonotWait : 1;
      UINT IgnoreSync : 1;
      UINT LockEntire : 1;
      UINT DonotEvict : 1;
      UINT AcquireAperture : 1;
      UINT Discard : 1;
      UINT NoExistingReference : 1;
      UINT UseAlternateVA : 1;
      UINT IgnoreReadSync : 1;
      UINT Reserved : 21;
    };
    UINT Value;
  };
} D3DDDICB_LOCKFLAGS;

Member

ReadOnly

Ein UINT-Wert, der angibt, ob die gesperrte Zuordnung nur ausgelesen werden kann. Das Festlegen dieses Elements entspricht dem Festlegen des ersten Bits des 32-Bit-Elements Wert (0x00000001).

WriteOnly

Ein UINT-Wert, der angibt, ob die gesperrte Zuordnung nur in geschrieben werden kann. Das Festlegen dieses Elements entspricht dem Festlegen des zweiten Bits des 32-Bit-Wertmembers (0x00000002).

DonotWait

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager warten soll, bis die Zuordnung gesperrt wird. Wenn dieser Member festgelegt ist, schlägt der Speicher-Manager den Aufruf von pfnLockCb mit D3DERR_WASSTILLDRAWING fehl, wenn die Grafikhardware die Zuordnung verwendet.

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

IgnoreSync

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager überprüfen soll, ob die Grafikhardware die Zuordnung verwendet. Wenn dieser Member festgelegt ist, sollte der Speicher-Manager dies nicht überprüfen.

IgnoreSync kann nur mit einer Zuordnung festgelegt werden, die in einem Blendensegment platziert werden kann. Sie kann nicht mit einer swizzled-Zuordnung oder mit einer zwischengespeicherten Zuordnung festgelegt werden, wenn die Cachekohärenz von der Grafikkarte nicht unterstützt wird.

Das Festlegen dieses Elements entspricht dem Festlegen des vierten Bits des 32-Bit-Wertmembers (0x00000008).

LockEntire

Ein UINT-Wert, der angibt, ob die gesamte Zuordnungsregion und nicht nur eine Unterregion gesperrt ist.

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

DonotEvict

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager die Zuordnung entfernen soll, damit die Sperre erfolgreich ist. Wenn dieser Member festgelegt ist, sollte der Speicher-Manager die Zuordnung nicht entfernen. Wenn die Zuordnung entfernt werden muss, um die Sperranforderung zu verarbeiten, schlägt der Speicher-Manager den Aufruf von pfnLockCb mit D3DERR_NOTAVAILABLE fehl. Eine Entfernung kann erforderlich sein, wenn alle entwizzenden Öffnungen erschöpft sind.

Das Festlegen dieses Elements entspricht dem Festlegen des sechsten Bits des 32-Bit-Wertelements (0x00000020).

AcquireAperture

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager die DxgkDdiAcquireSwizzlingRange-Funktion des Anzeigeminiporttreibers aufrufen soll, um eine Blende für die Zuordnung einzurichten.

Eine Zuordnung, die gesperrt wurde, ohne AcquireAperture festzulegen, kann nicht erneut gesperrt werden, wenn AcquireAperture festgelegt ist.

AcquireAperture kann nicht festgelegt werden, wenn sich die Zuordnung nur in einem Blendensegment befinden kann.

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

Discard

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager die Zuordnung umbenennen oder mehrfach puffern kann. Weitere Informationen zum Umbenennen von Zuordnungen finden Sie unter Anfordern der Umbenennung einer Zuordnung.

Verwerfen wird für angeheftete, primäre oder freigegebene Zuordnungen ignoriert.

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

NoExistingReference

Ein UINT-Wert, der angibt, ob der Benutzermodusanzeigetreiber derzeit keinen Verweis auf instance der gesperrten Zuordnung in der Warteschlange im Befehlspuffer hat. Der Treiber sollte das NoExistingReference-Element verwenden, nachdem der Videospeicher-Manager die Sperranforderung nur mithilfe des Verwerfen-Flags und nachdem der Treiber seinen aktuellen Befehlspuffer in den Kernel geleert hat. Der Treiber sollte NoExistingReference in Kombination mit Discard verwenden.

Das Festlegen dieses Elements entspricht dem Festlegen des neunten Bits des 32-Bit-Elements Wert (0x00000100).

UseAlternateVA

Ein UINT-Wert, der angibt, ob der Anzeige-Miniporttreiber eine Zuordnung an einer anderen physischen Adresse als dem aktuellen Segmentstandort der Zuordnung oder mit einem anderen Speicherbedarf als zuvor zugeordnet sperren kann. Wenn dieses Flag angegeben ist, kann der Anzeige-Miniporttreiber die Basisadresse und größe des physischen Adressbereichs aktualisieren, über den die Zuordnung über die CPU zugänglich ist (durch Aktualisieren der RangeSize - und CPUTranslatedAddress-Member der DXGKARG_ACQUIRESWIZZLINGRANGE-Struktur in einem Aufruf der DxgkDdiAcquireSwizzlingRange-Funktion ). Wenn dieses Flag angegeben ist, versucht der Videospeicher-Manager, eine neue virtuelle Adresse zuzuweisen, um die Sperranforderung zu verarbeiten, anstatt die virtuelle Adresse des Speichers für die Zuordnung zu verwenden. Wenn der Videospeicher-Manager die neue virtuelle Adresse jedoch nicht zuordnen kann, schlägt die Sperranforderung fehl.

Dieses Flag wird auch verwendet, um geschwommene oder gekachelte Zuordnungen zu sperren, die sich derzeit in einem Nicht-AGP-Blendensegment befinden. Bei dieser Art von Sperre ordnet der Videospeicher-Manager die alternative virtuelle Adresse einem physischen Adressbereich zu, der nicht zugeordnet oder ausgeführt werden kann, und leitet dann den Speicherzugriff auf die Systemspeicherseiten um.

Der Videospeicher-Manager erstellt die alternative virtuelle Adresse, wenn die Zuordnung zuerst mit UseAlternateVA gesperrt wird, und gibt die virtuelle Adresse in einem der folgenden Szenarien frei:

  • Die Zuordnung ist für die CPU nicht zugänglich, und der Schwenkbereich wird zur Wiederverwendung durch eine andere Zuordnung freigegeben.
  • Die Zuordnung ist für die CPU nicht zugänglich und wird entfernt.
  • Die Zuordnung wird zerstört.
  • Die Zuordnung wird ausgelagert, nachdem sie während der Sperre entfernt wurde.
Beachten Sie, dass UseAlternateVA nur für die primäre Zuordnung verwendet werden kann, wenn die primäre Zuordnung durch Angabe des UseAlternateVA-Bitfeldflags im Flags-Element der DXGK_ALLOCATIONINFO-Struktur in einem Aufruf der DxgkDdiCreateAllocation-Funktion des Anzeigeminiporttreibers erstellt wurde. Eine primäre Zuordnung, die auf diese Weise erstellt wird, kann nur mit dem Flag UseAlternateVA gesperrt werden.

UseAlternateVA kann nicht für eine freigegebene Zuordnung verwendet werden.

Eine Zuordnung, die mit dem UseAlternateVA-Satz gesperrt wurde, kann nicht erneut gesperrt werden.

Hinweis Wenn der Anzeigetreiber für den Benutzermodus useAlternateVA im Flags-Member der D3DDDICB_LOCKFLAGS-Struktur während eines Aufrufs der pfnLockCb-Funktion festgelegt hat, sollte der Display-Miniporttreiber die DxgkCbExcludeAdapterAccess-Funktion nicht aufrufen.
 
Das Festlegen dieses Elements entspricht dem Festlegen des zehnten Bits des 32-Bit-Elements Wert (0x00000200).

IgnoreReadSync

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager nur auf ausstehende GPU-Schreibvorgänge (Graphics Processing Unit) warten soll, um die Zuordnung abzuschließen. Wenn dieser Member festgelegt ist, muss der Speicher-Manager nicht warten, bis GPU-Lesevorgänge abgeschlossen sind. Das heißt, sobald der letzte GPU-Schreibvorgang abgeschlossen ist, kann die Sperre zurückgegeben werden, obwohl die GPU möglicherweise noch aus der Zuordnung liest.

IgnoreReadSync kann nur mit einer Zuordnung festgelegt werden, die in einem Blendensegment platziert werden kann. Sie kann nicht mit einer swizzled-Zuordnung oder mit einer zwischengespeicherten Zuordnung festgelegt werden, wenn die Cachekohärenz von der Grafikkarte nicht unterstützt wird.

Das Festlegen dieses Elements entspricht dem Festlegen des elften Bits des 32-Bit-Elements Wert (0x00000400).

Reserved

Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden. Das Festlegen dieses Elements auf 0 (null) entspricht dem Festlegen der verbleibenden 21 Bits (0xFFFFF800) des 32-Bit-Wertmembers auf Nullen.

Value

Ein Member in der Union, das in D3DDDICB_LOCKFLAGS enthalten ist, das einen 32-Bit-Wert enthalten kann, der angibt, wie eine Zuordnung gesperrt wird.

Hinweise

Wenn Sie eine D3DDDICB_LOCKFLAGS-Struktur verwenden, um anzugeben, wie eine Zuordnung gesperrt werden soll, müssen Sie die folgenden Regeln einhalten:

  • Die gleichzeitige Angabe der Elemente ReadOnly und WriteOnly ist ungültig.
  • Das IgnoreSync-Element hat keine Auswirkung, wenn es mit dem Verwerfen-Element angegeben wird.
  • Das DonotWait-Element hat keine Auswirkung, wenn es mit dem Verwerfen-Element angegeben wird.
  • Die gleichzeitige Angabe der IgnoreSync- und AcquireAperture-Member ist ungültig.
  • Da die Angabe des UseAlternateVA-Elements angibt, dass eine Blende abgerufen wird, muss auch der AcquireAperture-Member festgelegt werden.
  • Eingestellte oder angebotene Zuordnungen können nicht gesperrt werden. Weitere Informationen finden Sie unter Anfordern einer Umbenennung einer Zuordnung.
  • Eine Zuordnung kann nur gesperrt werden, wenn sie mit dem in der DXGK_ALLOCATIONINFOFLAGS-Struktur festgelegten CpuVisible-Member erstellt wurde.
  • Nur der Besitzer (Ersteller) einer freigegebenen Zuordnung kann sie sperren, es sei denn, es handelt sich um eine nicht verwaltete primäre GDI-Zuordnung.
  • Eine Zuordnung, die mit einem geschwommenen Bereich gesperrt ist, muss entsperrt werden, bevor sie wieder gesperrt werden kann.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Kopfzeile d3dukmdt.h (include D3dukmdt.h)

Weitere Informationen

D3DDDICB_LOCK

DXGK_ALLOCATIONINFOFLAGS

DxgkDdiAcquireSwizzlingRange

pfnLockCb