次の方法で共有


NDIS_POLLコールバック関数 (poll.h)

ミニポート ドライバーは、NDIS が受信指示をポーリングし、完了を送信する NdisPoll コールバック関数を実装します。

構文

NDIS_POLL NdisPoll;

void() NdisPoll(
  [_In_]    void *Context,
  [_Inout_] NDIS_POLL_DATA *PollData
)
{...}

パラメーター

[_In_] Context

ドライバーが Poll オブジェクトを作成したときに指定したコンテキスト情報へのポインター。

[_Inout_] PollData

ドライバーが受信指示を実行し、完了を送信するために使用する必要がある NDIS_POLL_DATA 構造体へのポインター。 また、指定する必要がある NBL の数に関する詳細も含まれています。

備考

ミニポート ドライバーは、ミニポート アダプターの初期化中に NdisPoll コールバックを登録します。 ドライバーは、NdisRegisterPollを呼び出す前に、NDIS_POLL_CHARACTERISTICS 構造体の PollHandler パラメーターで、NdisPoll 関数 エントリ ポイントを指定します。

NDIS は、ドライバーが NdisRequestPollを呼び出すときに、最初に NdisPoll コールバック 呼び出します。 NDIS は引き続き呼び出し NdisPoll、ドライバーが受信の兆候または送信の完了を進めます。

NdisPoll コールバックは、PASSIVE_LEVELとDISPATCH_LEVEL IRQL の両方で呼び出すことができます。 ドライバーは、どのレベルになるのかを想定しないでください。

ドライバーは、NDIS_POLL_DATA 構造体の 受信 または送信 パラメーターを して、指定または完了できる最大数の NBL を取得する必要があります。

受信表示の場合、ドライバーは次の手順を実行する必要があります。

  1. 指定できる Rx パケットの最大数までフェッチします。
  2. NBLs を初期化します。
  3. NDIS_POLL_RECEIVE_DATA 構造体によって提供される NBL キューに追加します (NdisPollPollData パラメーターの NDIS_POLL_DATA 構造体にあります)。
  4. コールバックを終了します。

送信完了の場合、ドライバーは次の操作を行う必要があります。

  1. 完了できる Tx パケットの最大数までフェッチします。
  2. NBLs を完了します。
  3. NDIS_POLL_TRANSMIT_DATA 構造体によって提供される NBL キューに追加します (NdisPollPollData パラメーターの NDIS_POLL_DATA 構造体にあります)。
  4. コールバックを終了します。

ドライバーは、NdisPoll 関数を終了する前に、Poll オブジェクトの割り込みを有効にしないでください。 NDIS は、前方の進行状況が行われていることを評価するまで、ドライバーをポーリングし続けます。 この時点で NDIS はポーリングを停止し、NdisSetPollNotification コールバックを呼び出すことによって、割り込みを再び有効化するようにドライバーに要求します。

必要条件

要件 価値
サポートされる最小クライアント Windows 11
サポートされる最小サーバー Windows Server 2022
ヘッダー poll.h (ndis.h を含む)
IRQL <= DISPATCH_LEVEL

関連項目

NdisSetPollNotification の

NDIS_POLL_CHARACTERISTICS

NDIS_POLL_DATA

NDIS_POLL_RECEIVE_DATA

NdisRegisterPoll

NdisRequestPoll の