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 が MaxNblsToIndicate メンバーで要求した最大値または構造体を処理した後、ミニポート ドライバーにNET_BUFFER_LIST構造体が保留中であることを指定する値。

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

注釈

MiniportInterruptDPC と の ReceiveThrottleParameters パラメーター MiniportMessageInterruptDPC 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 が返されるまでの時間が定義されていません。 ミニポート ドライバーが MoreNblsPending を設定した後、最初の DPC を処理する次の DPC を処理する必要があります。
 

要件

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

こちらもご覧ください

MiniportInterruptDPC

MiniportMessageInterruptDPC

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists