0

元のパケットを独自のレイヤー プロトコルにラッピングすることを使用する NDIS6 用の変更フィルターに取り組んでいます。

独自のヘッダーを追加する前に、NdisRetreatNetBufferDataStart(pNetBuffer, sizeof(OurHeader), 0, NULL) を呼び出します。これは、http: //msdn.microsoftで説明されているように、NDIS がその「既定の」関数を介して独自に追加の MDL を割り当てることを前提としています。 .com/en-us/library/windows/hardware/ff570697%28v=vs.85%29.aspx (「エントリ ポイントが NULL の場合、NDIS は既定の方法を使用して MDL を割り当てます。」)

FilterSendNetBufferListsComplete の NdisAdvanceNetBufferDataStart(pNetBuffer, sizeof(OurHeader), TRUE, NULL) に注意します。

ただし、BSOD DRIVER_IRQL_NOT_LESS_OR_EQUAL が発生します。これは、IRQ ハンドラー内から一部のページ メモリがアクセスされたことを意味します (バグチェックの 3 番目のパラメーターで判断すると、読み取り操作)。

RetratXxx 呼び出しによってページ メモリが割り当てられ、そのデータを送信しようとしたときにミニポートがトラップされたのではないでしょうか? もしそうなら、その「デフォルト」のメモリ割り当て動作はどれですか?また、そのような場合に NdisRetreatNetBufferDataStart をどのように呼び出す必要がありますか?

4

0 に答える 0