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 |