Partager via


Exigences d'informations de version pour les pilotes NDIS

Les structures NDIS qui contiennent des informations versionnées ont un membre Header défini comme une structure NDIS_OBJECT_HEADER et les pilotes NDIS doivent fournir une prise en charge de ces informations de version.

NDIS peut prendre en charge les pilotes qui prennent en charge une version NDIS supérieure ou inférieure à la version actuelle de NDIS (autrement dit, la version de NDIS prise en charge sur la version du système d’exploitation en cours d’exécution sur un ordinateur). En outre, la version NDIS inscrite (c’est-à-dire la version signalée par le pilote lors de l’initialisation) du pilote peut être inférieure à la version la plus élevée prise en charge par le pilote. Par exemple, un pilote NDIS 5.1 ou un pilote NDIS 6.1 peut s’exécuter sur une version du système d’exploitation exécutant NDIS 6.0. Le pilote NDIS 5.1 s’inscrit simplement en tant que pilote NDIS 5.1 lors de l’initialisation. Toutefois, le pilote NDIS 6.1 doit vérifier la version actuelle de NDIS et doit s’inscrire en tant que pilote prenant en charge le niveau le plus élevé de NDIS disponible (dans cet exemple, NDIS 6.0). Pour plus d’informations sur l’obtention de la version NDIS actuelle, consultez Obtention de la version NDIS.

Note Un pilote n’est pas nécessaire pour prendre en charge toutes les fonctionnalités d’une révision ultérieure d’une structure. Par exemple, un pilote miniport peut créer une structure version 2 et fournir des valeurs appropriées pour une structure version 1.

Pour accéder aux membres dans des structures qui ont des informations de version, les pilotes NDIS doivent effectuer le processus suivant :

  • Vérifiez les membres Header.Revision et Header.Size avant d’accéder aux membres de la structure.

  • Pour les structures de version antérieures (autrement dit, les structures qui ont un numéro de révision inférieur au nombre associé à la version NDIS prise en charge par le pilote) :

    • Le pilote doit vérifier que la valeur Header.Size est correcte pour la valeur Header.Revision . Par exemple, la valeur de NDIS_SIZEOF_Xxx_REVISION_1 est correcte pour Xxx_REVISION_1, mais elle est trop petite pour Xxx_REVISION_2.
    • La valeur Header.Size doit être égale ou supérieure à NDIS_SIZEOF_Xxx_REVISION_Nn (où Nn est le numéro de révision de la structure utilisée par le pilote) et le pilote doit gérer correctement les informations de la structure en fonction de cette révision.
  • Pour les structures de version ultérieures (autrement dit, les structures qui ont un numéro de révision supérieur au nombre associé à la version NDIS prise en charge par le pilote), le pilote peut utiliser la structure comme s’il s’agissait d’une révision plus ancienne de la structure. La structure de version supérieure est toujours compatible avec l’ancienne version.

  • Les pilotes doivent utiliser la révision correcte d’une structure pour la version NDIS enregistrée du pilote. Par exemple, un pilote NDIS 6.1 doit indiquer ses fonctionnalités de déchargement dans les structures NDIS_OFFLOAD en configurant les membres de la structure NDIS_OBJECT_HEADER pour indiquer NDIS_OFFLOAD_REVISION_2. Toutefois, le pilote n’a pas besoin de prendre en charge toutes les fonctionnalités incluses dans NDIS_OFFLOAD_REVISION_2.

  • Un pilote qui gère correctement une requête de configuration OID doit définir le membre SupportedRevision dans la structure NDIS_OID_REQUEST lors du retour de la requête de configuration OID. Le membre SupportedRevision avertit l’initiateur de la demande de révision prise en charge par le pilote. Par exemple, un pilote miniport peut créer une structure Xxx_REVISION_2, fournir des valeurs appropriées pour une structure Xxx_REVISION_1 et remplir le reste de la structure avec des zéros. Le pilote miniport signale Xxx_REVISION_1 dans le membre SupportedRevision. Dans ce cas, un pilote de protocole qui peut prendre en charge un Xxx_REVISION_2 utilisera les informations de Xxx_REVISION_1 que le pilote miniport a prises en charge.

  • Pour déterminer quelles informations ont été gérées avec succès par un pilote sous-jacent, les pilotes qui émettent des requêtes OID doivent vérifier la valeur dans le membre SupportedRevision dans la structure NDIS_OID_REQUEST une fois la requête OID retournée.

Vue d’ensemble des versions de NDIS

Spécification des informations de version NDIS