NdisMSleep 関数 (ndis.h)
NdisMSleep 関数は、特定の間隔の呼び出し元の実行をマイクロ秒単位で遅延します。
構文
void NdisMSleep(
[in] ULONG MicrosecondsToSleep
);
パラメーター
[in] MicrosecondsToSleep
遅延するマイクロ秒数。
戻り値
なし
解説
MicrosecondsToSleep パラメーター内の特定の時間に対して、呼び出し元の実行スレッドは待機状態になり、これにより、他のスレッドが現在のプロセッサで作業を実行できるようになります。 指定された間隔の有効期限が切れると、 NdisMSleep の呼び出し元は実行を再開します。
ドライバーが IRQL >= DISPATCH_LEVELで実行されていない限り、NDIS ドライバーは常に NdisStallExecution 関数よりも優先して NdisMSleep を呼び出す必要があります。 NdisMSleep では、 NdisStallExecution よりも大きな遅延間隔を受け入れることができ、50 マイクロ秒を超える間隔で呼び出 す べきではありません。 タイムアウトが 30,000,000 マイクロ秒 (つまり、30 秒または 1 分半) を超える NdisMSleep を呼び出さないでください。
ミニポート ドライバーは、ミニポートInitializeEx から NdisMSleep を呼び出すことができます。また、いずれかの関数がその関数の操作を続行する前に、NIC で状態の変更が発生するまで待機する必要がある場合は、MiniportHaltEx 関数を呼び出すことができます。
NdisMSleep と NdisStallExecution の両方を使用すると、ミニポート ドライバーは、ホスト CPU のクロック速度とは無関係に、一貫して遅延を指定できます。 どちらの関数にも、 NdisSetTimerObject 関数で使用されるタイマー オブジェクトは含まれていません。 ホスト システム クロックの解像度は異なるため、非常に短い遅延は 、NdisMSleep または NdisStallExecution の呼び出し元が指定した遅延時間よりも少し時間がかかる場合があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista の NDIS 6.0 および NDIS 5.1 ドライバー (「NdisMSleep (NDIS 5.1)」を参照) でサポートされています。 NDIS 5.1 ドライバーでサポートされています (「NdisMSleep (NDIS 5.1)」を参照)。 |
対象プラットフォーム | ユニバーサル |
Header | ndis.h (Ndis.h を含む) |
Library | Ndis.lib |
IRQL | < DISPATCH_LEVEL |
DDI コンプライアンス規則 | Irql_Miniport_Driver_Function(ndis) |