Freigeben über


IoAcquireVpbSpinLock-Funktion (ntifs.h)

Die IoAcquireVpbSpinLock Routine übernimmt die Volume Parameter Block (VPB)-Drehsperre.

Syntax

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

Parameter

[out] Irql

Zeiger auf eine vom Aufrufer zugewiesene Variable, in der die aktuelle IRQL für einen nachfolgenden Aufruf von IoReleaseVpbSpinLockgespeichert werden soll. Normalerweise wird die Irql- im Stapel als lokale Variable gespeichert.

Rückgabewert

Nichts

Bemerkungen

Dateisysteme rufen IoAcquireVpbSpinLock auf, um die VPB-Drehsperre zu erwerben. Diese globale Spin-Sperre muss vor dem Zugriff auf eines der folgenden Felder eines VPB erworben werden:

  • Flags (insbesondere VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

Jeder erfolgreiche Aufruf von IoAcquireVpbSpinLock muss mit einem nachfolgenden Aufruf von IoReleaseVpbSpinLockabgeglichen werden. Um deadlock zu verhindern, muss der Inhaber der VPB Spin-Sperre ihn sofort freigeben, wenn er nicht mehr benötigt wird.

Vor der Verwendung von IoAcquireVpbSpinLock und IoReleaseVpbSpinLockwerden Treiberautoren dringend ermutigt, die Art und Weise zu untersuchen, wie diese Routinen im FASTFAT-Beispiel verwendet werden.

Nach dem Aufrufen IoAcquireVpbSpinLockwird der Aufrufer bei IRQL-DISPATCH_LEVEL ausgeführt. Durch Aufrufen IoReleaseVpbSpinLock wird die ursprüngliche IRQL des Aufrufers wiederhergestellt.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport)

Siehe auch

IoReleaseVpbSpinLock