Compartir a través de


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 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 miniporte puede crear una estructura de la versión 2 y proporcionar valores adecuados para una estructura de la versión 1.

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

  • Verifique los miembros Header.Revision y Header.Size antes de acceder a cualquier miembro de la estructura.

  • Para las estructuras de versión anteriores (es decir, estructuras que tienen un número de revisión menor que el número asociado a la versión 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 usa 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 correspondiente a la versión NDIS registrada del controlador. Por ejemplo, un controlador NDIS 6.1 debe notificar sus funcionalidades de descarga en NDIS_OFFLOAD estructuras estableciendo los miembros de 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 gestione correctamente una solicitud de establecimiento de OID debe establecer el miembro SupportedRevision en la estructura NDIS_OID_REQUEST al retornar de la solicitud de establecimiento de OID. El miembro SupportedRevision notifica al iniciador de la solicitud sobre la revisión que admite el controlador. Por ejemplo, un controlador de miniporte puede crear una estructura de 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 miniporte informaría Xxx_REVISION_1 en el campo SupportedRevision. En este caso, un controlador de protocolo que pueda admitir una Xxx_REVISION_2 utilizará la información de Xxx_REVISION_1 que el controlador de miniport admitía.

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

Introducción a las versiones de NDIS

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