NdisAcquireSpinLock マクロ (ndis.h)
NdisAcquireSpinLock 関数はスピン ロックを取得するため、呼び出し元は、スピン ロックが保護するドライバー関数間で共有されるリソースへの排他的アクセスを取得します。
構文
void NdisAcquireSpinLock(
[in] _SpinLock
);
パラメーター
[in] _SpinLock
呼び出し元によって既に初期化されている不透明なスピン ロックへのポインター。
戻り値
何一つ
備考
ドライバーは、他の NdisXxxSpinLock 関数を呼び出す前に、NdisAllocateSpinLock を使用してNDIS_SPIN_LOCK型の変数を初期化する必要があります。 ドライバーは、使用するスピン ロックの常駐ストレージを提供する必要があります。
NdisAcquireSpinLock スピン ロックを取得した後、呼び出し元は NdisReleaseSpinLock 呼び出しでそのロックを解放する必要があります。 ドライバーは、NdisAcquireSpinLock 各呼び出しの後に NdisReleaseSpinLock 呼び出す必要があります。 それ以外の場合は、ドライバーがハングしてデッドロックが発生します。
NdisAcquireSpinLock で取得したスピン ロックは、NdisReleaseSpinLockで解放する必要があります。 NdisDprAcquireSpinLock で取得したスピン ロックは、NdisDprReleaseSpinLockで解放する必要があります。
ドライバーは、長時間スピン ロックを保持しないでください (いくつかの命令を超える)。 スピン ロックを 25 マイクロ秒より長く保持すると、システムとドライバーの両方のパフォーマンスが低下します。
ミニポート ドライバーは、スピン ロックを使用して、その他の関数が のミニポート インターラップ と共有するリソースを保護することはできません。ミニポートDisableInterruptEx 関数を します。 代わりに、ミニポート ドライバーは、NdisMSynchronizeWithInterruptEx を呼び出す必要があります。
ミニポートSynchronizeInterrupt 関数は、同じ DIRQL にある共有リソースにアクセスします。
ミニポートInterrupt またはミニポートDisableInterruptEx 関数 します。
NDIS スピン ロックの取得と解放の詳細については、「ネットワーク ドライバー の同期と通知を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisAcquireSpinLock (NDIS 5.1) を参照) でサポートされています。 Windows XP の NDIS 5.1 ドライバー (NdisAcquireSpinLock (NDIS 5.1) を参照) でサポートされています。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ndis.h (Ndis.h を含む) |
ライブラリ | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 を する | Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis) |
関連項目
ミニポート同期InterruptNdisAllocateSpinLock の
NdisDprAcquireSpinLock の
NdisMSynchronizeWithInterruptEx のNdisReleaseSpinLock の