NdisMIndicateStatus 関数 (ndis.h)

メモ NDIS 5。 x は非推奨となり、NDIS 6 に置き換えられます。 x があります。 新しい NDIS ドライバーの開発については、「 Windows Vista 以降のネットワーク ドライバー」を参照してください。 NDIS 5 の移植に関する情報。 x ドライバーから NDIS 6 へ。 x については、「 NDIS 5.x ドライバーを NDIS 6.0 に移植する」を参照してください。

NdisMIndicateStatus は、NIC の状態が高レベルの NDIS ドライバーに変更されたことを示します。

構文

void NdisMIndicateStatus(
  [in] NDIS_HANDLE MiniportHandle,
  [in] NDIS_STATUS GeneralStatus,
  [in] PVOID       StatusBuffer,
  [in] UINT        StatusBufferSize
);

パラメーター

[in] MiniportHandle

MiniportInitialize に最初に入力されたハンドルを指定します。

[in] GeneralStatus

NIC の状態の全般的な変化を示すNDIS_STATUS_ XXX 値を指定します。

[in] StatusBuffer

中固有で GeneralStatus の値に依存するデータを含む、呼び出し元によって割り当てられたバッファーへのポインター。 状態の変更に関する詳細情報を示します。

[in] StatusBufferSize

StatusBuffer のバッファーのサイズをバイト単位で指定します。

戻り値

なし

解説

ミニポート ドライバーが NdisMIndicateStatus を呼び出すと、NDIS は、バインドされた各プロトコルの ProtocolStatus 関数を 呼び出します。 これにより、バインドされたプロトコル ドライバー、または場合によっては、構成マネージャーは、基になる NIC の状態の変更をログに記録したり、修正アクションを実行したりできます。 たとえば、プロトコルでは、指定された xxx のNDIS_STATUS_に応じて、NdisReset を呼び出すことができます。

ミニポート ドライバーが NDISMIndicateStatus を呼び出して NIC の状態の変化を報告すると、NDIS は MiniportReset 関数を呼び出して、NIC を動作状態に復元できます。 このような状況では、NDIS は、ミニポート ドライバーによって示される GeneralStatus ではなく、NDIS_STATUS_RESET_ENDでNDIS_STATUS_RESET_START以降でのみバインドされたプロトコルを呼び出すことができます。

NdisMIndicateStatus には、次の 2 つの情報が用意されています。

  • 状態の一般的な変更を示す全体的な状態値。
  • 一般的な変更の具体的な理由 。ネットワーク固有の場合があります。 たとえば、リング挿入エラーはトークン リング (802.5) ネットワークに固有ですが、イーサネット (802.3) NIC とそのドライバーには関係ありません。

ミニポート ドライバーは、 NdisMIndicateStatus を呼び出して、誤って取り外されてから再挿入されたケーブルや、一時的に失敗したリングなどの問題を示すこともできます。 たとえば、次の両方の条件が発生したとします。

  • ミニポート ドライバーは、NDIS_STATUS_RING_STATUSを使用して NdisMIndicateStatus を呼び出します。

  • StatusBuffer には、次のいずれかの状態値が含まれています。

    • NDIS_RING_LOBE_WIRE_FAULT
    • NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS

このような状態の変更が通知で通知された後、関連付けられているしきい値または統計カウンターは変更されません。

ミニポート ドライバーは、ミニポートISRMiniportHalt、またはミニポートShutdown 関数のコンテキストで NdisMIndicateStatus を呼び出すことはできません。 逆シリアル化されたミニポート ドライバーのみが、そのミニポート初期化関数のコンテキストで NdisMIndicateStatus を呼び出すことができます。

ミニポート ドライバーは、 NdisMIndicateStatus を呼び出す前に保持しているスピン ロックを解放する必要があります。

NdisMIndicateStatus のシリアル化された呼び出し元は、IRQL = DISPATCH_LEVELで実行する必要があります。 NdisMIndicateStatus の逆シリアル化された呼び出し元は、IRQL <= DISPATCH_LEVELで実行する必要があります。

ネットワーク接続の損失と復元を示す

ミニポート ドライバーは、ネットワーク接続が失われたことを検出すると、 NDIS_STATUS_MEDIA_DISCONNECTで NdisMIndicateStatus を呼び出す必要があります。 接続が復元されると、ミニポート ドライバーは、NDIS_STATUS_MEDIA_CONNECTで NdisMIndicateStatus を呼び出す必要があります。

802.11 ミニポート ドライバーは、ネットワーク接続の表示を生成するときにワイヤレス LAN のメディア状態ガイドラインに従う必要があります。 これらのガイドラインの詳細については、「 802.11 ネットワークのメディアステータス表示」を参照してください。

802.11 NdisMIndicateStatus へのワイヤレス LAN ミニポート ドライバー呼び出し

802.11 ワイヤレス LAN (WLAN) ミニポート ドライバーは、WLAN メディアに固有のさまざまな表示を行うことができます。 たとえば、ミニポート ドライバーは、次の場合に WLAN 固有の指示を行うことができます。

  • ドライバーは、現在の BSS 関連付けの受信信号強度が変更されたことを検出します。
  • ドライバーは、受信したパケットで TKIP MIC エラーを検出します。

次の種類の WLAN 固有の表示は、 NdisMIndicateStatus を使用する 802.11 ミニポート ドライバーによって行うことができます。

これらのメディア固有の表示の詳細については、「 802.11 Media-Specific 状態表示」を参照してください。

NDISMIndicateStatus への WAN ミニポート ドライバー呼び出し

ほとんどの WAN NIC ドライバーは、いくつかの特別な状態コードとバッファーの内容で状態を示します。 これらの状態表示は WAN NIC ドライバーによって生成され、このようなミニポート ドライバーにバインドされている NDIS プロトコル ドライバーは、これらの表示を無視できます。 ただし、これらの指示を正しく処理すると、通常、プロトコルと WAN NIC ドライバーのパフォーマンスが向上します。

NdisMIndicateStatus を使用して、次の 4 種類の WAN 固有の表示をバインドされたプロトコル ドライバーに送信できます。

  • 1 行上へ移動
  • 1 行下へ移動
  • Fragment
  • TAPI 行イベント

NDIS_STATUS_WAN_LINE_UP

WAN ミニポート ドライバーは、新しいリンクがアクティブになるたびに、ラインアップ表示を行います。 これが発生するまで、NIC はフレームを受け入れて成功または失敗しますが、実際にはリモート ノードで受信される可能性は低くなります。 これが発生するまで、プロトコルはタイマーと再試行回数を減らして、送信接続の試行をすばやく失敗させる必要があります。

WAN ミニポート ドライバーは、OID_TAPI_GET_ID要求から戻る前に NdisMIndicateStatus でこの指示を行います。

ラインアップ表示の状態コードがNDIS_STATUS_WAN_LINE_UP。 StatusBuffer のバッファーは、NDIS_MAC_LINE_UP構造体として書式設定されます。

NDIS_STATUS_WAN_LINE_DOWN

WAN ミニポート ドライバーは、リンクがダウンするたびに、ラインダウンを示します。 これが発生した場合、バインドされたプロトコルは、タイマーと再試行回数を次のラインアップ表示まで減らす必要があります。

ラインダウン表示の状態コードがNDIS_STATUS_WAN_LINE_DOWN。 StatusBuffer のバッファーは、NDIS_MAC_LINE_DOWN構造体として書式設定されます。

NDIS_STATUS_WAN_FRAGMENT

WAN ミニポート ドライバーは、リモート ノードから部分的なパケットを受信するたびにフラグメントを示します。 この場合、バインドされたプロトコルは、タイムアウトが発生するのを待つのではなく、この状況を通知するフレームをリモート ノードに送信する必要があります。

フラグメント表示の状態コードがNDIS_STATUS_WAN_FRAGMENT。 StatusBuffer のバッファーは、NDIS_MAC_FRAGMENT構造体として書式設定されます。

NDISWAN は、各リンクのフラグメント表示の数をカウントすることによって、ドロップされたパケットを監視します。

NDIS_TAPI_EVENT

WAN ミニポート ドライバーは、TAPI 状態の表示にNDIS_STATUS_TAPI_INDICATIONの GeneralStatus 値を使用する必要がありますStatusBuffer のバッファーは、NDIS_TAPI_EVENT構造体として書式設定されます。

  • ターゲット プラットフォーム: ユニバーサル
  • バージョン: Windows Vista の NDIS 6.0 ドライバーではサポートされていません。 代わりに NdisMIndicateStatusEx を使用してください。 Windows Vista および Windows XP の NDIS 5.1 ドライバーでサポートされています。

要件

要件
Header ndis.h (Ndis.h を含む)
Library Ndis.lib

こちらもご覧ください