2017-01-25 7 views
0

NDISがこれらのコールバックを呼び出すタイミングは、ReturnNetBufferListsHandlerとReceiveNetBufferListsHandlerの違いを調べる必要がありました。私は受信パケットを変更し、NIC上のパケットを送信する軽量フィルタを持っています。ReturnとReceiver Handlerの違い軽量フィルタ

答えて

0

LWFは、NICドライバとプロトコルドライバ(TCPIPなど)の間にあります。 LWFは、送信(Tx)&受信(Rx)パスの両方を傍受する機会があります。

For Tx プロトコルがパケットを送信するたびに、フィルタのFilterSendNetBufferListsハンドラがパケットを取得します。プロトコルのパケットが終了したら、NdisFSendNetBufferListsCompleteを呼び出してプロトコルに戻します。

パケットをNICドライバに送信する場合は、NdisFSendNetBufferListsを呼び出します。 NICドライバが送信パケットで完了すると、フィルタのFilterSendNetBufferListsCompleteハンドラが呼び出されます。典型的なパススルー・フィルタの

、その後、一連のイベントは次のようになります。

1. FilterSendNetBufferLists 2. NdisFSendNetBufferLists 3. FilterSendNetBufferListsComplete 4. NdisFSendNetBufferListsComplete

RXの場合は たびNICは受信を示し、フィルタのFilterReceiveNetBufferListsハンドラがパケットを取得します。 NICのパケットが終了したら、NdisFReturnNetBufferListsを呼び出します。を除いて!特殊なNDIS_RECIEVE_FLAG_RESOURCESフラグが設定されている場合

プロトコルへの受信を指定する場合は、NdisFIndicateReceiveNetBufferListsを呼び出します。プロトコルでパケットが処理されると、FilterReturnNetBufferListsハンドラが呼び出されます。典型的なパススルー・フィルタの

が、その後、一連のイベントは次のようになります。

1. FilterReceiveNetBufferLists 2. NdisFIndicateReceiveNetBufferLists 3. FilterReturnNetBufferLists 4. NdisFReturnNetBufferLists

+0

おかげジェフリー、それは本当に私を助けLWFのTXパスとRXパスを理解してください。 – Rami

+0

こんにちはJeffery、私はこのスレッドであなたの返信を待っているネットバッファーデータに関する他の質問があります。 [リンク](http://stackoverflow.com/questions/41982378/net-buffer-list-re-packaging-light-weight-filter-driver) – Rami