NDIS 驱动程序的版本信息要求

提供版本信息的 NDIS 结构具有一个 标头 成员,该成员定义为 NDIS_OBJECT_HEADER 结构,NDIS 驱动程序必须提供对此类版本信息的支持。

NDIS 可以支持高于或低于 当前 NDIS 版本的 NDIS 版本的驱动程序 (即计算机运行的操作系统版本所支持的 NDIS 版本) 。 此外, 注册的 NDIS 版本 (,即驱动程序在驱动程序的初始化) 期间报告的版本可能低于驱动程序支持的最高版本。 例如,NDIS 5.1 驱动程序或 NDIS 6.1 驱动程序可以在运行 NDIS 6.0 的操作系统版本上运行。 NDIS 5.1 驱动程序只是在初始化期间注册为 NDIS 5.1 驱动程序。 但是,NDIS 6.1 驱动程序必须检查当前版本的 NDIS,并且必须注册为支持最高级别的 NDIS 的驱动程序, (本示例中为 NDIS 6.0) 。 有关如何获取当前 NDIS 版本的详细信息,请参阅 获取 NDIS 版本

注意 驱动程序不需要支持结构后续修订版中的所有功能。 例如,微型端口驱动程序可以创建版本 2 结构,并提供适用于版本 1 结构的值。

若要访问结构中具有版本信息的成员,NDIS 驱动程序必须完成以下过程:

  • 在访问结构中的任何成员之前,请检查 Header.RevisionHeader.Size 成员。

  • 对于早期版本结构, (也就是说,具有低于驱动程序支持的 NDIS 版本关联的版本号的结构) :

    • 驱动程序必须验证 Header.Size 值对于 Header.Revision 值是否正确。 例如,NDIS_SIZEOF_Xxx_REVISION_1 的值对于Xxx_REVISION_1是正确的,但它对于Xxx_REVISION_2来说太小。
    • Header.Size 值必须等于或大于 NDIS_SIZEOF_Xxx_REVISION_Nn (,其中 Nn 是驱动程序使用的结构) 的修订号,并且驱动程序必须正确处理结构中的信息,适合该修订。
  • 对于更高版本的结构, (也就是说,具有比与驱动程序支持的 NDIS 版本关联的版本号更高的结构) ,驱动程序可以使用结构,就像它是结构的旧版本一样。 较高版本结构始终与旧版本兼容。

  • 驱动程序必须为已注册的 NDIS 版本的驱动程序使用结构的正确修订版。 例如,NDIS 6.1 驱动程序必须通过将 NDIS_OBJECT_HEADER 结构中的成员设置为指示 NDIS_OFFLOAD_REVISION_2 ,在 NDIS_OFFLOAD 结构中报告其卸载功能。 但是,驱动程序不必支持NDIS_OFFLOAD_REVISION_2附带的所有功能。

  • 成功处理 OID 集请求的驱动程序必须在从 OID 集请求返回时在 NDIS_OID_REQUEST 结构中设置 SupportedRevision 成员。 SupportedRevision 成员通知发起方驱动程序支持的修订请求。 例如,微型端口驱动程序可以创建Xxx_REVISION_2结构,提供适合Xxx_REVISION_1结构的值,并使用零填充结构的其余部分。 微型端口驱动程序将在 SupportedRevision 成员中报告Xxx_REVISION_1。 在这种情况下,可支持Xxx_REVISION_2的协议驱动程序将使用微型端口驱动程序支持的Xxx_REVISION_1信息。

  • 若要确定基础驱动程序成功处理了哪些信息,发出 OID 请求的过分驱动程序必须在 OID 请求返回后检查NDIS_OID_REQUEST结构中的 SupportedRevision 成员中的值。

NDIS 版本概述

指定 NDIS 版本信息