CoNDIS WAN ミニポート ドライバーからのパケットの送信
上位層ドライバーは、NdisCoSendNetBufferLists を呼び出して、NET_BUFFER_LIST 構造体の一覧で基になる CoNDIS WAN ミニポート ドライバーにネットワーク データ パケットを送信します。 NDISWAN 中間ドライバーは、上位層ドライバーからこれらの NET_BUFFER_LIST 構造体を転送します。 NDISWAN は、構造体を送信する前に再パッケージ化します。 NDISWAN は、新しい NET_BUFFER_LIST 構造体でパケットを転送します。
NDISWAN 中間ドライバーは、NDIS を呼び出して新しい NET_BUFFER_LIST 構造体を転送し、NDIS は、WAN ミニポート ドライバーの MiniportCoSendNetBufferLists 関数を呼び出します。
CoNDIS WAN ミニポート ドライバーは、送信が完了するまで、NET_BUFFER_LIST 構造体と関連付けられたデータの両方を所有します。 送信要求を完了するには、ミニポートドライバーは後で NdisMSendNetBufferListsComplete を呼び出す必要があります。
完了呼び出しは、ネットワーク データが送信されたことを必ずしも示すわけではありません。ただし、インテリジェント NIC を除き、通常はネットワーク データが送信されています。 ただし、完了呼び出しは、ミニポート ドライバーが NET_BUFFER_LIST 構造体の所有権を解放する準備ができていることを示しています。
CoNDIS WAN ミニポート ドライバーは、ネットワーク データ パケットを含む NET_BUFFER_LIST 構造体を受信した後、アクティブな仮想接続 (VC) でパケットを送信する必要があります。
CoNDIS WAN ミニポート ドライバーは、NDIS_WAN_CO_INFO 構造体の MaxSendWindow メンバー内で VC ごとに保持できる未処理のパケット数を指定します。 ミニポート ドライバーは、プロトコル ドライバーからの OID_WAN_CO_GET_INFO 要求に応答するときに、この構造体を提供します。 ただし、ミニポート ドライバーは、WAN_CO_LINKPARAMS 構造体内で SendWindow メンバーを使用して、VC ごとに動的にこの数を調整できます。 ミニポート ドライバーは、NdisMCoIndicateStatusEx 関数にこの構造体を渡します。 NDISWAN では、未処理の送信の制限として現在の SendWindow 値が使用されます。 ミニポート ドライバーは、SendWindow メンバーの値を0 に設定して、未処理のパケットを処理できないように指定できます。 つまり、SendWindow メンバーが 0 に設定されている場合、送信ウィンドウはシャットダウンされ、NDISWAN では特定の VC に対するパケット送信が停止されます。
WAN ミニポート ドライバーが送信するパケットには、PPP フレームが設定されている場合、単純な HDLC PPP フレームが含まれています。 SLIP または RAS フレームの場合は、パケットにはデータ部分のみが含まれ、フレームは一切ありません。 WAN パケット フレームの詳細については、「WAN パケット フレーム」を参照してください。
WAN ミニポート ドライバーは、ソフトウェア ループバックまたは無差別モード ループバックの提供を試みることはできません。 これらのループバックの種類はいずれも、NDISWAN ドライバーによって完全にサポートされています。