Partager via


Concepts et définitions NDIS distants

Cette section présente une vue d’ensemble des exigences NDIS distantes sur le canal de communication et les pilotes de couche inférieure utilisés pour communiquer entre l’hôte et le périphérique NDIS distant. Les transitions d’état de l’appareil et les opérations majeures telles que l’initialisation, l’arrêt et la réinitialisation sont également décrites dans cette section.

  • Canal de contrôle

    Le canal de contrôle doit être fiable et garantir une livraison séquencée. Il est utilisé pour toutes les communications, à l’exception de la transmission de paquets de données réseau. Tous les messages de contrôle requis, à l’exception des REMOTE_NDIS_HALT_MSG et des REMOTE_NDIS_INDICATE_STATUS_MSG, sont des échanges de demandes et de réponses initiés par l’hôte. L’appareil doit répondre dans le délai d’attente spécifié pour chaque bus.

  • Canal de données

    Le canal de données est utilisé exclusivement pour la transmission de paquets de données réseau. Il peut se composer de plusieurs sous-canaux (par exemple, pour une qualité de service variable) tels que définis pour le bus approprié.

  • Initialisation et démontage

    Les canaux de contrôle et de données sont initialisés et configurés comme spécifié pour le bus approprié. L’hôte envoie un message REMOTE_NDIS_INITIALIZE_MSG à l’appareil NDIS distant. L’appareil NDIS distant fournit des informations sur son type (sans connexion ou orienté connexion), son support pris en charge et sa version dans le message de réponse REMOTE_NDIS_INITIALIZE_CMPLT.

    L’hôte ou l’appareil NDIS distant peut détruire le canal de communication via le message REMOTE_NDIS_HALT_MSG . Toutes les demandes et paquets en attente sont ignorés à la réception de ce message.

  • Définitions d’état de l’appareil

    Après l’initialisation au niveau du bus, l’appareil est dit à l’état non initialisé RNDIS. À la réception d’un REMOTE_NDIS_INITIALIZE_MSG et à la réponse avec un REMOTE_NDIS_INITIALIZE_CMPLT avec un status de RNDIS_STATUS_SUCCESS, l’appareil entre dans l’état initialisé par RNDIS.

    À la réception de REMOTE_NDIS_SET_MSG spécifiant une valeur de filtre différente de zéro pour OID_GEN_CURRENT_PACKET_FILTER, l’appareil entre dans l’état RNDIS-data-initialized.

    À l’état RNDIS-data-initialized, la réception d’un REMOTE_NDIS_SET_MSG spécifiant une valeur de filtre zéro pour OID_GEN_CURRENT_PACKET_FILTER force l’appareil à revenir à l’état initialisé RNDIS.

    La réception de REMOTE_NDIS_HALT_MSG ou d’une déconnexion ou d’une réinitialisation matérielle au niveau du bus à tout moment force l’appareil à l’état non initialisé RNDIS.

  • Halt

    À tout moment où l’appareil se trouve à l’état initialisé ou initialisé par RNDIS, l’ordinateur hôte peut mettre fin à la fonctionnalité Remote NDIS de l’appareil en envoyant des REMOTE_NDIS_HALT_MSG à l’appareil.

  • Réinitialisation du canal de communication

    Le canal de communication est réinitialisé lorsqu’une erreur, telle qu’un délai d’expiration du message, se produit. L’hôte peut lancer une réinitialisation à tout moment lorsque l’appareil est à l’état initialisé RNDIS en envoyant le message REMOTE_NDIS_RESET_MSG à l’appareil et l’appareil doit envoyer un message de réponse lorsqu’il a terminé la réinitialisation. Par exemple, l’hôte peut lancer une réinitialisation lorsqu’une erreur, telle qu’un délai d’expiration du message, s’est produite.

    Notez qu’il s’agit d’une réinitialisation réversible dans le sens où tous les handles (par exemple, les machines virtuelles pour les appareils orientés connexion) continuent d’être valides après la réinitialisation. L’appareil NDIS distant ignore toutes les demandes et paquets en attente dans le cadre du processus de réinitialisation. L’appareil distant peut réinitialiser certains de ses composants matériels, mais conserve le canal de communication intact.

    Si l’appareil Remote NDIS effectue un redémarrage, cet événement équivaut à « Remove » suivi de « Add » Plug-and-Play événements. Le pilote de miniport NDIS hôte sera arrêté et supprimé, et une nouvelle instance sera ajoutée et démarrée. Toutes les initialisations NDIS distantes et au niveau du bus seront réexécutées. Un appareil NDIS distant peut se redémarrer lui-même en cas de défaillance d’un appareil critique.

  • Contrôle de flux

    L’appareil NDIS distant peut avoir besoin d’exercer le contrôle de flux pour empêcher l’hôte de déborder ses mémoires tampons de données avec des paquets. Toutes les dispositions ou exigences de contrôle de flux sont spécifiques au bus.

  • Classement numérique des octets

    Toutes les valeurs numériques dans les messages NDIS distants doivent être codées dans un format peu endian (octet le moins significatif en premier).

  • NDIS Message Encapsulation

    Il n’existe aucune spécification NDIS distante pour la façon dont les messages NDIS sont encapsulés dans des messages de bus natifs ou des primitives.