次の方法で共有


NdisDprAcquireSpinLock マクロ (ndis.h)

NdisDprAcquireSpinLock 関数は、呼び出し元がマルチプロセッサ セーフな方法で ISR 以外のドライバー関数間で共有されているリソースへのアクセスを同期できるように、スピン ロックを取得します。

構文

void NdisDprAcquireSpinLock(
  [in]  _SpinLock
);

パラメーター

[in] _SpinLock

呼び出し元によって既に初期化されている不透明なスピン ロックへのポインター。

戻り値

何一つ

備考

ミニポート ドライバーは、他の Ndis を呼び出す前に、NdisAllocateSpinLock を使用してNDIS_SPIN_LOCK型の変数を初期化する必要があります。SpinLock 関数。 ドライバーは、使用するスピン ロックの常駐ストレージを提供する必要があります。

NdisDprAcquireSpinLock は、IRQL = DISPATCH_LEVELで実行中にのみミニポート ドライバーが呼び出すことができる、ndisAcquireSpinLock の最適化されたバージョンです。

NdisDprAcquireSpinLock スピン ロックを取得した後、呼び出し元は NdisDprReleaseSpinLock 呼び出しでそのロックを解放する必要があります。 ミニポート ドライバーは、NdisDprAcquireSpinLock する各呼び出しに続いて、NdisDprReleaseSpinLock を呼び出す必要があります。 それ以外の場合は、ドライバーがハングしてデッドロックが発生します。

NdisDprAcquireSpinLock で取得したスピン ロックは、NdisDprReleaseSpinLockで解放する必要があります。 NdisAcquireSpinLock で取得したスピン ロックは、NdisReleaseSpinLockで解放する必要があります。

ドライバーは、長時間スピン ロックを保持しないでください (いくつかの命令を超える)。 スピン ロックを 25 マイクロ秒より長く保持すると、システムとドライバーの両方のパフォーマンスが低下します。

ミニポート ドライバーは、スピン ロックを使用して、その他の関数が のミニポート インターラップ と共有するリソースを保護することはできません。ミニポートDisableInterruptEx 関数を します。 代わりに、ミニポート ドライバーが呼び出す必要がありますNdisMSynchronizeWithInterruptEx します。 ミニポートSynchronizeInterrupt 関数は、同じ DIRQL にある共有リソースにアクセスします。
ミニポートInterrupt またはミニポートDisableInterruptEx 関数 します。

NDIS スピン ロックの取得と解放の詳細については、「ネットワーク ドライバー の同期と通知を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (NdisDprAcquireSpinLock (NDIS 5.1) を参照) でサポートされています。 Windows XP で NDIS 5.1 ドライバー (NdisDprAcquireSpinLock (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)

関連項目

ミニポートDisableInterruptEx

ミニポートInterrupt

ミニポート同期Interrupt

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisDprReleaseSpinLock

NdisMSynchronizeWithInterruptEx

NetTimerCallback