Controladores de minipuerto
Un controlador de minipuerto NDIS tiene dos funciones básicas:
Administrar una tarjeta de interfaz de red (NIC), incluido el envío y la recepción de datos a través de la NIC.
Interactuar con controladores de nivel superior, como controladores de filtro, controladores intermedios y controladores de protocolo.
Un controlador de minipuerto se comunica con sus NIC y con controladores de nivel superior a través de la biblioteca NDIS. La biblioteca NDIS exporta un conjunto completo de funciones (NdisMXxx y otras funciones NdisXxx) que encapsulan todas las funciones del sistema operativo a las que debe llamar un controlador de minipuerto. El controlador de minipuerto, a su vez, debe exportar un conjunto de puntos de entrada (funciones MiniportXxx) que NDIS llama para sus propios fines, o en nombre de controladores de nivel superior, para acceder al controlador de minipuerto.
Nota:
Para obtener más información sobre la pila de controladores NDIS y un diagrama que muestra la relación entre los cuatro tipos de controladores NDIS, consulte Pila de controladores NDIS.
Las siguientes operaciones de envío y recepción muestran la interacción de los controladores de minipuerto con NDIS y con controladores de nivel superior:
Cuando un controlador de transporte tiene un paquete para transmitir, llama a una función NdisXxx exportada por la biblioteca NDIS. NDIS pasa el paquete al controlador de minipuerto llamando a la función MiniportXxx adecuada exportada por el controlador de minipuerto. A continuación, el controlador de minipuerto reenvía el paquete a la NIC para su transmisión llamando a las funciones NdisXxx adecuadas.
Cuando una NIC recibe un paquete dirigido a sí mismo, puede publicar una interrupción de hardware que se controla mediante NDIS o el controlador de minipuerto de la NIC. NDIS notifica al controlador de minipuerto de la NIC llamando a la función MiniportXxx adecuada. El controlador de minipuerto configura la transferencia de datos de la NIC y, a continuación, indica la presencia del paquete recibido para enlazar controladores de nivel superior llamando a la función NdisXxx adecuada.
Controladores de minipuerto sin conexión y orientados a conexiones
NDIS admite controladores de minipuerto para entornos sin conexión y entornos orientados a la conexión.
Los controladores de minipuerto sin conexión controlan las NIC para medios de red sin conexión, como Ethernet. Los controladores de minipuerto sin conexión se dividen aún más en controladores deserializados y serializados:
Nota Todos los controladores NDIS 6.0 y versiones posteriores se deserializan.
Los controladores deserializados serializan la operación de sus propias funciones MiniportXxx y que ponen internamente en cola todos los paquetes de envío entrantes. Esto da como resultado un rendimiento de dúplex completo significativamente mejor, siempre que las secciones críticas del controlador (código que solo se puede ejecutar un único subproceso a la vez) se mantengan pequeños.
Los controladores serializados dependen de NDIS para serializar las llamadas a sus funciones MiniportXxx y administrar sus colas de envío.
Los controladores de minipuerto orientados a la conexión controlan las NIC para los medios de red orientados a la conexión, como ISDN. Los controladores de minipuerto orientados a la conexión siempre se deserializan, siempre serializan la operación de sus propias funciones MiniportXxx y ponen en cola internamente todos los paquetes de envío entrantes.
Un controlador de minipuerto NDIS puede tener un borde inferior que no sea NDIS (consulte la ilustración siguiente).
A través de su borde inferior que no es NDIS, un controlador de minipuerto usa la interfaz de clase para un bus, como el Bus serie universal (USB) para controlar un dispositivo en el bus. El controlador de minipuerto se comunica con el dispositivo mediante el envío de paquetes de solicitud de E/S (IRP) al bus o directamente a dispositivos remotos conectados al bus. En su borde superior, el controlador de minipuerto expone una interfaz de controlador de minipuerto NDIS estándar, que permite al controlador de minipuerto comunicarse con controladores NDIS excesivos.