VideoPortAcquireSpinLock 関数 (video.h)

VideoPortAcquireSpinLock 関数は、指定されたスピン ロックを取得します。

構文

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

パラメーター

[in, out] HwDeviceExtension

ミニポート ドライバーのデバイス拡張機能へのポインター。

[in] SpinLock

スピン ロックを含むメモリ位置へのポインター。

[out] OldIrql

現在の IRQL を受け取るメモリの場所へのポインター。

戻り値

なし

解説

現在の IRQL は OldIrql に保存されます。 次に、現在の IRQL がDISPATCH_LEVELにリセットされ、指定されたスピン ロックが取得されます。

VideoPortReleaseSpinLock を使用してスピン ロックを解除する場合は、OldIrql 値を指定する必要があります。

スピン ロックは、慎重に使用しないと重大な問題を引き起こす可能性があります。 特に、デッドロック保護は実行されません。また、スピン ロックが保持されている間はディスパッチが無効になります。 そのため、次のようになります。

  • スピン ロックによって保護されたクリティカル領域内のコードは、ページング可能でなく、ページング可能なデータへの参照を行う必要もありません。
  • スピン ロックによって保護されたクリティカル領域内のコードは、ページング可能なデータにアクセスしたり、例外を発生させたりする可能性がある外部関数を呼び出したり、例外を生成したりすることはできません。
  • 呼び出し元は、 VideoPortReleaseSpinLock を使用してスピン ロックをできるだけ早く解放する必要があります。

要件

要件
サポートされている最小のクライアント Windows XP 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)
Library Videoprt.lib
[DLL] Videoprt.sys
IRQL <=DISPATCH_LEVEL

こちらもご覧ください

VideoPortAcquireSpinLockAtDpcLevel

VideoPortReleaseSpinLock