Requisitos de información de versión para controladores NDIS

Las estructuras NDIS que proporcionan información de versión tienen un miembro Header que se define como una estructura de NDIS_OBJECT_HEADER y controladores NDIS deben proporcionar compatibilidad con dicha información de versión.

NDIS puede admitir controladores que admitan una versión NDIS superior o inferior a la versión actual de NDIS (es decir, la versión de NDIS compatible con la versión del sistema operativo que ejecuta un equipo). Además, la versión registrada de NDIS (es decir, la versión que el controlador notificó durante la inicialización) del controlador puede ser inferior a la versión más alta que admite el controlador. Por ejemplo, un controlador NDIS 5.1 o un controlador NDIS 6.1 se puede ejecutar en una versión del sistema operativo que ejecuta NDIS 6.0. El controlador NDIS 5.1 simplemente se registra como un controlador NDIS 5.1 durante la inicialización. Sin embargo, el controlador NDIS 6.1 debe comprobar la versión actual de NDIS y debe registrarse como controlador que admita el nivel más alto de NDIS que está disponible (en este ejemplo, NDIS 6.0). Para obtener más información sobre cómo obtener la versión actual de NDIS, consulte Obtención de la versión de NDIS.

Nota No es necesario que un controlador admita todas las características de una revisión posterior de una estructura. Por ejemplo, un controlador de minipuerto puede crear una estructura de versión 2 y proporcionar valores adecuados para una estructura de la versión 1.

Para acceder a los miembros de estructuras que tienen información de versión, los controladores NDIS deben completar el siguiente proceso:

  • Compruebe los miembros Header.Revision y Header.Size antes de acceder a los miembros de la estructura.

  • En el caso de las estructuras de versión anteriores (es decir, las estructuras que tienen un número de revisión menor que el número asociado a la versión de NDIS que admite el controlador):

    • El controlador debe comprobar que el valor Header.Size es correcto para el valor Header.Revision . Por ejemplo, el valor de NDIS_SIZEOF_Xxx_REVISION_1 es correcto para Xxx_REVISION_1 pero es demasiado pequeño para Xxx_REVISION_2.
    • El valor Header.Size debe ser igual o mayor que NDIS_SIZEOF_Xxx_REVISION_Nn (donde Nn es el número de revisión de la estructura que está usando el controlador) y el controlador debe controlar correctamente la información de la estructura según corresponda para esa revisión.
  • Para las estructuras de versión posteriores (es decir, estructuras que tienen un número de revisión mayor que el número asociado a la versión NDIS que admite el controlador), el controlador puede usar la estructura como si fuera una revisión anterior de la estructura. La estructura de versión superior siempre es compatible con la versión anterior.

  • Los controladores deben usar la revisión correcta de una estructura para la versión NDIS registrada del controlador. Por ejemplo, un controlador NDIS 6.1 debe notificar sus funcionalidades de descarga en estructuras de NDIS_OFFLOAD estableciendo los miembros en la estructura NDIS_OBJECT_HEADER para indicar NDIS_OFFLOAD_REVISION_2. Sin embargo, el controlador no tiene que admitir todas las características que se incluyen con NDIS_OFFLOAD_REVISION_2.

  • Un controlador que controle correctamente una solicitud de conjunto de OID debe establecer el miembro SupportedRevision en la estructura de NDIS_OID_REQUEST al volver de la solicitud de conjunto de OID. El miembro SupportedRevision notifica al iniciador de la solicitud de la revisión que admitía el controlador. Por ejemplo, un controlador de minipuerto puede crear una estructura Xxx_REVISION_2, proporcionar valores adecuados para una estructura de Xxx_REVISION_1 y rellenar el resto de la estructura con ceros. El controlador de minipuerto notificaría Xxx_REVISION_1 en el miembro SupportedRevision . En este caso, un controlador de protocolo que pueda admitir un Xxx_REVISION_2 usará Xxx_REVISION_1 información que admita el controlador de miniporte.

  • Para determinar qué información se ha controlado correctamente por un controlador subyacente, los controladores que emiten solicitudes de OID deben comprobar el valor en el miembro SupportedRevision de la estructura NDIS_OID_REQUEST después de que la solicitud OID devuelva.

Introducción a las versiones de NDIS

Especificación de la información de versión de NDIS