次の方法で共有


NDIS_RECEIVE_THROTTLE_PARAMETERS構造体 (ndis.h)

NDIS_RECEIVE_THROTTLE_PARAMETERS構造体は、ミニポート ドライバーが遅延プロシージャ 呼び出し (DPC) で示す必要がある NET_BUFFER_LIST 構造体の最大数を指定します。

構文

typedef struct _NDIS_RECEIVE_THROTTLE_PARAMETERS {
  ULONG MaxNblsToIndicate;
  ULONG MoreNblsPending : 1;
} NDIS_RECEIVE_THROTTLE_PARAMETERS, *PNDIS_RECEIVE_THROTTLE_PARAMETERS;

メンバーズ

MaxNblsToIndicate

ミニポート ドライバーが受信通知に含める必要がある NET_BUFFER_LIST 構造体の最大数。 この値がNDIS_INDICATE_ALL_NBLS場合、ミニポートは、NET_BUFFER_LISTのすべての構造体を示すことができます。

MoreNblsPending

TRUE 場合、ミニポート ドライバーは、最大値または NDIS が要求した構造体を処理した後、保留中のNET_BUFFER_LIST構造体を持っていることを指定する、MaxNblsToIndicate メンバー。

NDIS MaxNblsToIndicate メンバーを NDIS_INDICATE_ALL_NBLS に設定する場合、ミニポート ドライバーは、DPC から戻る前に、MoreNblsPendingを FALSE に設定する必要があります。
 

備考

ReceiveThrottleParametersミニポートInterruptDPC のパラメーターと ミニポート メッセージInterruptDPC DPC ハンドラー関数は、NDIS_RECEIVE_THROTTLE_PARAMETERS構造体を指します。 この構造体は、NDIS 6.20 以降で 受信側スロットル (RST) のパラメーターを指定します。

DPC ハンドラーへのエントリでは、NDIS_RECEIVE_THROTTLE_PARAMETERS構造体の MaxNblsToIndicate メンバーは、ミニポート ドライバーが DPC で示す必要がある NET_BUFFER_LIST 構造体の最大数を指定します。 この値がNDIS_INDICATE_ALL_NBLSされている場合、ミニポート ドライバーは、そのキューにあるすべてのNET_BUFFER_LIST構造体を示すことができます。

ミニポート ドライバーは、指定したNET_BUFFER_LIST構造体の最大数を処理した後、ミニポート ドライバーは、その受信キューにより多くのパケットを持つことができます。 この場合、ミニポート ドライバーは、MoreNblsPending メンバーを TRUE に設定する必要があります。DPC から戻る前に割り込みを再度有効にしないでください。 これは、行ベースの割り込みとメッセージ バイアス割り込みの両方に当てはまります。

ミニポート ドライバーは、MaxNblsToIndicate メンバーがNDIS_INDICATE_ALL_NBLSに設定されている場合、次のガイドラインに従う必要があります。

  • 値NDIS_INDICATE_ALL_NBLSミニポート ドライバーが DPC 呼び出しで示すNET_BUFFER_LIST構造体の数を決定できます。 これにより、ミニポート ドライバーに次のオプションが提供されます。
    • ミニポート ドライバーは、その受信キューから保留中のすべてのNET_BUFFER_LIST構造体を示すことができます。
    • ミニポート ドライバーは、DPC 呼び出し内で過剰な時間を費やすことを避けるために、ヒューリスティックに基づいて示すNET_BUFFER_LIST構造体の数を制限できます。

      特に、ドライバーは DPC タイムアウトを回避するためにヒューリスティックを使用する必要があります。これは、ドライバーが DPC で費やすことができる最大時間です。 タイムアウト間隔の有効期限が切れると、システムでバグチェックが行われます。 Windows 7 以降では、DPC タイムアウトは 10 秒です。

  • ミニポート ドライバーは、DPC から戻る前に、MoreNblsPending を FALSE するように設定する必要があります。 ドライバーは、指定されていない受信キューに保留中のNET_BUFFER_LIST構造体があるかどうかに関係なく、これを行う必要があります。
ミニポート ドライバーは、行ベースの割り込みまたは 1 つの MSI メッセージを使用している場合は、割り込みソースのすべての割り込み処理を行う必要があります。 受信キューにパケットがある場合は、最大で maxNblsToIndicate NET_BUFFER_LIST 構造体を NDIS に 示す必要があります。NdisMIndicateReceiveNetBufferLists 関数を します。

ミニポート ドライバーが異なる割り込みソースを区別するために複数の MSI メッセージを使用している場合は、受信指示に関連付けられていない MSI メッセージのメンバー ReceiveThrottleParameters を無視する必要があります。 割り込みメッセージを受信する場合、ミニポート ドライバーは最大 MaxNblsToIndicate NET_BUFFER_LIST 構造体を示す必要があります。

ミニポート ドライバーが MoreNblsPending 設定した場合、NDIS は DPC をもう一度呼び出します。 ただし、次の DPC 呼び出しの前に経過する時間は定義されていません。 また、最初の割り込みサービス ルーティング (ISR) から DPC が返されてから DPC が返されるまでの時間は定義されていません。 ミニポート ドライバーは、MoreNblsPending 設定した後、最初の DPC を処理する次の DPC を処理する必要があります。
 

必要条件

要件 価値
サポートされる最小クライアント NDIS 6.20 以降でサポートされています。
ヘッダー ndis.h (Ndis.h を含む)

関連項目

ミニポートInterruptDPC

ミニポート メッセージInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists