Freigeben über


IoAcquireVpbSpinLock-Funktion (ntifs.h)

Die IoAcquireVpbSpinLock-Routine ruft die VPB-Spinsperre (Volume Parameter Block) ab.

Syntax

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

Parameter

[out] Irql

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

Rückgabewert

Keine

Bemerkungen

Dateisysteme rufen IoAcquireVpbSpinLock auf, um die VPB-Spinsperre zu erhalten. Diese globale Spinsperre muss vor dem Zugriff auf eines der folgenden Felder eines VPB abgerufen werden:

  • Flags (insbesondere VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

Jeder erfolgreiche Aufruf von IoAcquireVpbSpinLock muss durch einen nachfolgenden Aufruf von IoReleaseVpbSpinLock abgeglichen werden. Um einen Deadlock zu verhindern, muss der Inhaber der VPB-Spinsperre diese sofort freigeben, wenn sie nicht mehr benötigt wird.

Vor der Verwendung von IoAcquireVpbSpinLock und IoReleaseVpbSpinLock wird Treiberautoren dringend empfohlen, die Verwendung dieser Routinen im FASTFAT-Beispiel zu untersuchen.

Nach dem Aufruf von IoAcquireVpbSpinLock wird der Aufrufer am IRQL-DISPATCH_LEVEL ausgeführt. Durch Aufrufen von IoReleaseVpbSpinLock wird die ursprüngliche IRQL des Aufrufers wiederhergestellt.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ntifs.h (include Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport)

Weitere Informationen

IoReleaseVpbSpinLock