Übersicht über die NDIS-Unterstützung für Headerversionen
Viele NDIS-Strukturen enthalten Informationen zur Strukturversion. NDIS- oder NDIS-Treiber initialisieren das Headerelement in solchen Strukturen, die für jede Struktur erforderlich sind. NDIS-Treiber sollten die Versionsinformationen (sofern vorhanden) in jeder Struktur überprüfen, bevor sie auf die Strukturmember zugreifen.
Das Headerelement ist eine NDIS_OBJECT_HEADER Struktur. Diese Struktur enthält die Revisionsnummer, den Typ und die Größe der Struktur, die das Headermember enthält.
Strukturen, die das Headermember enthalten, erfüllen die folgenden Anforderungen:
Die Struktur verfügt über einen neuen Revisionswert, wenn der Memberliste für eine neue NDIS-Version neue Informationen hinzugefügt werden. Wenn die NDIS 6.1-Version der Struktur beispielsweise neue Member am Ende der Memberliste, in einer Union oder in einer Bitmaske aufweist, weist sie einen anderen Revisionswert als die NDIS 6.0-Version auf.
Nachdem eine Struktur geändert wurde, kann die Größe der späteren Überarbeitung der Struktur gleich oder größer als die Größe der früheren Überarbeitung der Struktur sein, aber sie ist nicht kleiner. Wenn die neue Größe größer als die der vorherigen Revision ist, werden die neuen Member am Ende der Memberliste hinzugefügt.
Eine Struktur verfügt nur dann über eine neue Revision, wenn die vorherigen Revisionsinformationen weiterhin gültig und vollständig sind. Das heißt, die neue Version der Struktur enthält eine Übermenge der Elemente der älteren Versionen. Hinweis Wenn eine der vorherigen Bedingungen nicht erfüllt werden kann, stellt NDIS eine neue Struktur mit einem neuen Namen bereit, der die vorhandene Struktur ersetzt, anstatt eine überarbeitete Version der vorhandenen Struktur bereitzustellen.
NDIS-Treiber sollten immer die vordefinierten Revisionswerte verwenden. NDIS stellt solche Definitionen in der Form Xxx_REVISION_Nn und NDIS_SIZEOF_Xxx_REVISION_Nn für die Elemente Revision und Größe von NDIS_OBJECT_HEADER bereit. Außerdem stellt Xxx den Namen der Struktur dar, und Nn ist die Revisionsnummer. Beispielsweise werden die Revision und die Größe für die erste Revision der NDIS_FILTER_PARTIAL_CHARACTERISTICS-Struktur NDIS_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1 bzw. NDIS_SIZEOF_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1.
Der Header.Size-Wert muss mit dem Header.Revision-Wert konsistent sein. Das heißt, wenn der Revisionsmember Xxx_REVISION_1 enthält, muss der Size-Memberwert gleich oder größer als NDIS_SIZEOF_Xxx_REVISION_1 sein.