Partager via


Exigences relatives aux informations de version pour les pilotes NDIS

Les structures NDIS qui fournissent des informations de version ont un membre d’en-tête qui est défini comme une structure NDIS_OBJECT_HEADER et les pilotes NDIS doivent prendre en charge 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 (c’est-à-dire la version de NDIS prise en charge sur la version du système d’exploitation qu’un ordinateur exécute). 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 qui exécute 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 case activée la version actuelle de NDIS et doit s’inscrire en tant que pilote prenant en charge le plus haut niveau de NDIS disponible (dans cet exemple, NDIS 6.0). Pour plus d’informations sur l’obtention de la version actuelle de NDIS, 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 de version 2 et fournir des valeurs appropriées pour une structure de version 1.

Pour accéder aux membres dans les 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 à tous les membres de la structure.

  • Pour les structures de version antérieures (c’est-à-dire les structures dont le numéro de révision est 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 dans la structure comme il convient pour cette révision.
  • Pour les structures de version ultérieure (c’est-à-dire les structures dont le nombre de révisions est 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 antérieure 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 inscrite du pilote. Par exemple, un pilote NDIS 6.1 doit signaler ses capacités de déchargement dans NDIS_OFFLOAD structures en définissant 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 demande de jeu d’OID doit définir le membre SupportedRevision dans la structure NDIS_OID_REQUEST lors du retour de la demande de jeu d’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 de 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 utilise Xxx_REVISION_1 informations prises en charge par le pilote miniport.

  • Pour déterminer quelles informations ont été correctement gérées par un pilote sous-jacent, les pilotes qui émettent des requêtes OID doivent case activée la valeur dans le membre SupportedRevision dans la structure NDIS_OID_REQUEST après le retour de la requête OID.

Vue d’ensemble des versions de NDIS

Spécification des informations de version NDIS