Share via


Unterstützung Header-Data Split in Protokolltreibern und Filtertreibern

Protokolltreiber und Filtertreiber von NDIS 6.0 und höher müssen den Empfang von Hinweisen mit dem Header und Daten in nicht zusammenhängenden Puffern unterstützen.

Sie dürfen nicht davon ausgehen, dass nur eine einzelne MDL in einer NET_BUFFER-Struktur vorhanden ist. Protokolltreiber und Filtertreiber müssen keine spezifischen Aktionen ausführen, um die Spaltenregistrierung von Headerdaten zu unterstützen. Der Treiber, der Bearbeitungscode empfängt, muss jedoch mehr als eine MDL in der MDL-Kette verarbeiten und die folgenden NDIS-MDL-Makros verwenden, um auf die MDL-Kette zuzugreifen:

Bei geteilten Puffern wird die Datenlänge, die der NET_BUFFER-Struktur (im DataLength-Element der NET_BUFFER_DATA-Struktur ) zugeordnet ist, auf mehrere MDLs aufgeteilt. Wenn beispielsweise ein Protokolltreiber versucht hat, auf den gesamten Datenpuffer in der ersten MDL zuzugreifen, könnte der Treiber auf ungültige Daten zugreifen.

Hinweis Nachdem der Aufruf der Empfangsanzeige an einen Miniporttreiber zurückgegeben wird, kann der Miniporttreiber die Header-MDLs zurückfordern. Die überlastenden Treiber oder ihre Clients dürfen nicht auf die Header-MDLs zugreifen, nachdem der Empfangsanzeigeaufruf an den Miniporttreiber zurückgegeben wird. Diese Einschränkung gilt auch dann, wenn der Miniporttreiber die empfangenen Daten nicht mit einer status NDIS_RECEIVE_FLAGS_RESOURCES angibt.