Share via


IoAcquireVpbSpinLock 関数 (ntifs.h)

IoAcquireVpbSpinLock ルーチンは、ボリューム パラメーター ブロック (VPB) スピン ロックを取得します。

構文

void IoAcquireVpbSpinLock(
  [out] PKIRQL Irql
);

パラメーター

[out] Irql

IoReleaseVpbSpinLock の後続の呼び出しのために現在の IRQL を保存する呼び出し元によって割り当てられた変数へのポインター。 通常、 Irql はローカル変数としてスタックに保存されます。

戻り値

なし

解説

ファイル システムは IoAcquireVpbSpinLock を呼び出して VPB スピン ロックを取得します。 VPB の次のいずれかのフィールドにアクセスする前に、このグローバル スピン ロックを取得する必要があります。

  • フラグ (具体的には、VPB_MOUNTED)

  • DeviceObject

  • RealDevice

  • ReferenceCount

IoAcquireVpbSpinLock の呼び出しが成功するたびに、後続の IoReleaseVpbSpinLock の呼び出しと一致する必要があります。 デッドロックを防ぐために、VPB スピン ロックの所有者は、不要になったらすぐに解放する必要があります。

IoAcquireVpbSpinLockIoReleaseVpbSpinLock を使用する前に、ドライバー ライターは FASTFAT サンプルでこれらのルーチンの使用方法を検討することを強くお勧めします。

IoAcquireVpbSpinLock を呼び出した後、呼び出し元は IRQL DISPATCH_LEVELで実行されます。 IoReleaseVpbSpinLock を呼び出すと、呼び出し元の元の IRQL が復元されます。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)

こちらもご覧ください

IoReleaseVpbSpinLock