Freigeben über


D3DDDICB_LOCKFLAGS Struktur (d3dukmdt.h)

Die D3DDDICB_LOCKFLAGS-Struktur identifiziert, 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;

Angehörige

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-Value Members (0x00000001).

WriteOnly

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

DonotWait

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager warten soll, um die Zuordnung zu sperren. Wenn dieses Mitglied 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-Value Members (0x00000004).

IgnoreSync

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

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

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

LockEntire

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

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

DonotEvict

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager die Zuordnung aufheben soll, damit die Sperre erfolgreich ausgeführt werden kann. Wenn dieses Mitglied festgelegt ist, sollte der Speichermanager die Zuordnung nicht löschen. Wenn die Zuordnung für die Verarbeitung der Sperranforderung aufgehoben werden muss, schlägt der Speichermanager den Aufruf von pfnLockCb mit D3DERR_NOTAVAILABLE fehl. Eviction kann notwendig sein, wenn alle Verzweiflungsöffnungen erschöpft sind.

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

AcquireAperture

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

Eine Zuordnung, die gesperrt wurde, ohne AcquireAperture festzulegen, kann nicht erneut mit AcquireAperture- festgelegt werden.

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-Value Members (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, eine Zuordnungumzubenennen.

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

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

NoExistingReference

Ein UINT-Wert, der angibt, ob der Anzeigetreiber für den Benutzermodus derzeit in seinem Befehlspuffer keinen Verweis auf eine Instanz der gesperrten Zuordnung in die Warteschlange gestellt hat. Der Treiber sollte den NoExistingReference- Member verwenden, nachdem der Videospeicher-Manager die Sperranforderung nicht mehr verwendet, indem nur die Verwerfen Flag verwendet wird, und nachdem der Treiber den aktuellen Befehlspuffer auf den Kernel gelebt hat. Der Treiber sollte NoExistingReference- in Kombination mit Verwerfenverwenden.

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

UseAlternateVA

Ein UINT-Wert, der angibt, ob der Anzeige-Miniporttreiber eine Zuordnung an einer anderen physischen Adresse sperren kann als der aktuelle Segmentspeicherort der Zuordnung oder mit einem anderen Speicherbedarf als zuvor zugewiesen. Wenn dieses Flag angegeben wird, kann der Miniporttreiber die Basisadresse und die Größe des physischen Adressbereichs aktualisieren, über den die Zuordnung 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 für die Verarbeitung der Sperranforderung zuzuweisen, anstatt die virtuelle Adresse des Zuweisungsspeichers zu verwenden. Wenn der Videospeicher-Manager die neue virtuelle Adresse jedoch nicht zuordnen kann, schlägt die Sperranforderung fehl.

Diese Kennzeichnung wird auch verwendet, um geschwommene oder nebeneinander angeordnete Zuordnungen zu sperren, die sich derzeit in einem Nicht-AGP-Blendensegment befinden. In dieser Art von Sperre ordnet der Videospeicher-Manager die alternative virtuelle Adresse einem physischen Adressbereich zu, der nicht verworfen werden kann, oder bis es im Fluge ist, und leitet dann den Speicherzugriff auf die Systemspeicherseiten um.

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

  • Die Zuordnung kann nicht auf die CPU zugegriffen werden, und der Schwarmbereich wird für die Wiederverwendung durch eine andere Zuordnung freigegeben.
  • Die Zuordnung ist für die CPU nicht zugänglich und wird ausgeräumt.
  • Die Zuteilung wird zerstört.
  • Die Zuordnung wird eingeteilt, nachdem sie unter Sperre entfernt wurde.
Beachten Sie, dass UseAlternateVA- nur für die primäre Zuordnung verwendet werden kann, wenn die primäre Zuordnung durch Angeben der UseAlternateVA Bitfeldkennzeichnung im Flags Member der DXGK_ALLOCATIONINFO-Struktur in einem Aufruf der DxgkDdiCreateAllocation-Funktion des Anzeigeminiporttreibers erstellt wurde. Eine primäre Zuordnung, die so erstellt wird, kann nur mit dem UseAlternateVA Flag gesperrt werden.

UseAlternateVA- kann nicht für eine gemeinsame Zuordnung verwendet werden.

Eine Zuordnung, die mit UseAlternateVA set gesperrt wurde, kann nicht erneut gesperrt werden.

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

IgnoreReadSync

Ein UINT-Wert, der angibt, ob der Videospeicher-Manager nur auf ausstehende Gpu-Schreibvorgänge (Graphics Processing Unit) warten soll, bis die Zuordnung abgeschlossen ist. Wenn dieses Mitglied 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 gelesen wird.

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

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

Reserved

Dieses Element ist reserviert und sollte auf Null festgelegt werden. Das Festlegen dieses Elements auf Null entspricht dem Festlegen der verbleibenden 21 Bits (0xFFFFF800) des 32-Bit-Werts Members auf Nullen.

Value

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

Bemerkungen

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

  • Gleichzeitiges Angeben der ReadOnly und WriteOnly Member ist ungültig.
  • Das IgnoreSync Member hat keine Auswirkung, wenn mit dem Element "Verwerfen" angegeben ist.
  • Das DonotWait Member hat keine Auswirkung, wenn mit dem Element "Verwerfen" angegeben ist.
  • Gleichzeitiges Angeben der IgnoreSync- und AcquireAperture Member ist ungültig.
  • Da das UseAlternateVA Member angibt, dass eine Blende erworben wird, muss auch das AcquireAperture Member festgelegt werden.
  • Eingestellte oder angebotene Zuweisungen können nicht gesperrt werden. Siehe auch Anfordern, eine Zuordnungumzubenennen.
  • Eine Zuordnung kann nur gesperrt werden, wenn sie mit dem CpuVisible Member erstellt wurde, das in der DXGK_ALLOCATIONINFOFLAGS-Struktur festgelegt ist.
  • 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
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Header- d3dukmdt.h (include D3dukmdt.h)

Siehe auch

D3DDDICB_LOCK

DXGK_ALLOCATIONINFOFLAGS

DxgkDdiAcquireSwizzlingRange

pfnLockCb