Freigeben über


VideoPortAcquireSpinLock-Funktion (video.h)

Die VideoPortAcquireSpinLock Funktion ruft die angegebene Drehsperre ab.

Syntax

VIDEOPORT_API VOID VideoPortAcquireSpinLock(
  [in, out] PVOID      HwDeviceExtension,
  [in]      PSPIN_LOCK SpinLock,
  [out]     PUCHAR     OldIrql
);

Parameter

[in, out] HwDeviceExtension

Zeigen Sie auf die Geräteerweiterung des Miniporttreibers.

[in] SpinLock

Zeigen Sie auf einen Speicherspeicherort, der die Drehungssperre enthält.

[out] OldIrql

Zeigen Sie auf einen Speicherspeicherort, der den aktuellen IRQL empfängt.

Rückgabewert

Nichts

Bemerkungen

Die aktuelle IRQL wird in OldIrql-gespeichert. Anschließend wird die aktuelle IRQL auf DISPATCH_LEVEL zurückgesetzt, und die angegebene Drehsperre wird abgerufen.

Der wert OldIrql muss angegeben werden, wenn die Drehsperre mit VideoPortReleaseSpinLockfreigegeben wird.

Drehsperren können schwerwiegende Probleme verursachen, wenn sie nicht sorgfältig verwendet werden. Insbesondere wird kein Deadlockschutz ausgeführt, und die Verteilerfunktion wird deaktiviert, während die Drehsperre gehalten wird. Deshalb:

  • Der Code innerhalb eines kritischen Bereichs, der durch eine Drehsperre geschützt ist, darf weder seitenfähig sein noch Verweise auf seitenfähige Daten erstellen.
  • Der Code innerhalb eines kritischen Bereichs, der durch eine Drehungssperre geschützt ist, kann weder externe Funktionen aufrufen, die auf seitenfähige Daten zugreifen oder eine Ausnahme auslösen können, noch können Ausnahmen generiert werden.
  • Der Aufrufer sollte die Drehsperre mit VideoPortReleaseSpinLock so schnell wie möglich freigeben.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows XP und höheren Versionen von Windows-Betriebssystemen.
Zielplattform- Desktop
Header- video.h (video.h einschließen)
Library Videoprt.lib
DLL- Videoprt.sys
IRQL- <=DISPATCH_LEVEL

Siehe auch

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock