Share via


プロトコル ドライバーとフィルター ドライバーにおけるヘッダーとデータの分割のサポート

NDIS 6.0 以降のプロトコル ドライバーとフィルター ドライバーは、非連続バッファー内のヘッダーとデータの受信指示をサポートする必要があります。

NET_BUFFER 構造体内の MDL が 1 つだけだと仮定しないでください。 プロトコル ドライバーとフィルター ドライバーがヘッダーとデータの分割登録をサポートするために特にすべきことはありません。 ただし、ドライバーの受信処理コードは、MDL チェーン内の複数の MDL を処理する必要があり、MDL チェーンにアクセスするために次の NDIS MDL マクロを使用する必要があります。

分割バッファーでは、NET_BUFFER 構造体 (NET_BUFFER_DATA 構造体の DataLength メンバー) に関連付けられたデータ長は複数の MDL に分割されます。 たとえば、プロトコル ドライバーが最初の MDL のデータ バッファー全体にアクセスしようとした場合、ドライバーは無効なデータにアクセスする可能性があります。

: 受信指示呼び出しがミニポート ドライバーに戻った後、ミニポート ドライバーはヘッダーの MDL を再利用できます。 上位ドライバーまたはそのクライアントは、受信指示呼び出しがミニポート ドライバーに戻った後、ヘッダーの MDL にアクセスしてはなりません。 この制限は、ミニポート ドライバーが NDIS_RECEIVE_FLAGS_RESOURCES の状態で受信したデータを示していない場合にも適用されます。