Versionsinformationsanforderungen für NDIS-Treiber
NDIS-Strukturen, die Versionsinformationen bereitstellen, verfügen über einen Headermember , der als NDIS_OBJECT_HEADER-Struktur definiert ist, und NDIS-Treiber müssen unterstützung für solche Versionsinformationen bereitstellen.
NDIS kann Treiber unterstützen, die eine höhere oder niedrigere NDIS-Version als die aktuelle Version von NDIS unterstützen (d. a. die Version von NDIS, die in der Version des Betriebssystems unterstützt wird, auf dem ein Computer ausgeführt wird). Auch die registrierte NDIS-Version (d. h. die Version, die der Treiber während der Initialisierung gemeldet hat) des Treibers kann niedriger sein als die höchste Version, die der Treiber unterstützt. Beispielsweise kann ein NDIS 5.1-Treiber oder ein NDIS 6.1-Treiber unter einer Version des Betriebssystems ausgeführt werden, auf dem NDIS 6.0 ausgeführt wird. Der NDIS 5.1-Treiber registriert sich während der Initialisierung einfach als NDIS 5.1-Treiber. Der NDIS 6.1-Treiber muss jedoch die aktuelle Version von NDIS überprüfen und sich als Treiber registrieren, der die höchste verfügbare NDIS-Ebene unterstützt (in diesem Beispiel NDIS 6.0). Weitere Informationen zum Abrufen der aktuellen NDIS-Version finden Sie unter Abrufen der NDIS-Version.
Hinweis Ein Treiber ist nicht erforderlich, um alle Features in einer späteren Überarbeitung einer Struktur zu unterstützen. Beispielsweise kann ein Miniporttreiber eine Struktur der Version 2 erstellen und Werte angeben, die für eine Struktur der Version 1 geeignet sind.
Um auf die Member in Strukturen mit Versionsinformationen zuzugreifen, müssen NDIS-Treiber den folgenden Prozess ausführen:
Überprüfen Sie die Member Header.Revision und Header.Size , bevor Sie auf Member in der -Struktur zugreifen.
Für frühere Versionsstrukturen (d. a. Strukturen mit einer niedrigeren Revisionsnummer als die Nummer, die der vom Treiber unterstützten NDIS-Version zugeordnet ist):
- Der Treiber muss überprüfen, ob der Header.Size-Wert für den Header.Revision-Wert korrekt ist. Beispielsweise ist der Wert von NDIS_SIZEOF_Xxx_REVISION_1 für Xxx_REVISION_1 korrekt, aber für Xxx_REVISION_2 zu klein.
- Der Header.Size-Wert muss gleich oder größer als NDIS_SIZEOF_Xxx_REVISION_Nn sein (wobei Nn die Revisionsnummer der Struktur ist, die der Treiber verwendet), und der Treiber muss die Informationen in der Struktur ordnungsgemäß verarbeiten, wie für diese Revision geeignet ist.
Für spätere Versionsstrukturen (d. h. Strukturen, die eine höhere Revisionsnummer aufweisen als die Zahl, die der vom Treiber unterstützten NDIS-Version zugeordnet ist), kann der Treiber die Struktur so verwenden, als ob es sich um eine ältere Revision der Struktur handelt. Die Höhere Versionsstruktur ist immer mit der älteren Version kompatibel.
Treiber müssen die richtige Revision einer Struktur für die registrierte NDIS-Version des Treibers verwenden. Beispielsweise muss ein NDIS 6.1-Treiber seine Auslagerungsfunktionen in NDIS_OFFLOAD-Strukturen melden, indem er die Member in der NDIS_OBJECT_HEADER-Struktur festlegt, um NDIS_OFFLOAD_REVISION_2 anzugeben. Der Treiber muss jedoch nicht alle Features unterstützen, die in NDIS_OFFLOAD_REVISION_2 enthalten sind.
Ein Treiber, der eine OID-Set-Anforderung erfolgreich verarbeitet, muss das SupportedRevision-Element in der NDIS_OID_REQUEST-Struktur festlegen, wenn er von der OID-Set-Anforderung zurückgegeben wird. Das SupportedRevision-Mitglied benachrichtigt den Initiator der Anforderung der Revision, die vom Treiber unterstützt wurde. Beispielsweise kann ein Miniporttreiber eine Xxx_REVISION_2-Struktur erstellen, Werte angeben, die für eine Xxx_REVISION_1-Struktur geeignet sind, und den Rest der Struktur mit Nullen auffüllen. Der Miniporttreiber meldet Xxx_REVISION_1 im SupportedRevision-Element . In diesem Fall verwendet ein Protokolltreiber, der eine Xxx_REVISION_2 unterstützen kann, Xxx_REVISION_1 Informationen, die vom Miniporttreiber unterstützt werden.
Um zu ermitteln, welche Informationen erfolgreich von einem zugrunde liegenden Treiber verarbeitet wurden, müssen überlastende Treiber, die OID-Anforderungen ausstellen, den Wert im SupportedRevision-Member in der NDIS_OID_REQUEST-Struktur überprüfen, nachdem die OID-Anforderung zurückgegeben wurde.