Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Todos los controladores NDIS 6.0 y versiones posteriores se deserializan.
Un controlador de miniporte NDIS deserializado serializa la operación de sus propias funciones MiniportXxx y gestiona internamente todas las solicitudes de envío en lugar de confiar en NDIS para realizar estas funciones. Como resultado, un controlador de miniporte deserializado puede lograr un rendimiento de dúplex completo significativamente mejor que un controlador de miniport serializado.
El modelo de controlador deserializado es el modelo predeterminado para los controladores de miniporte NDIS. Los controladores de miniport orientados a la conexión, así como los controladores de miniport con un extremo inferior WDM, deben ser controladores deserializados. Al escribir un nuevo controlador de miniporte NDIS, debe escribir un controlador deserializado. De ser posible, también debería migrar controladores anteriores a NDIS 6.0 o posterior. Para obtener más información sobre la portabilidad de controladores, consulte:
- Portar Controladores NDIS 5.x a NDIS 6.0
- Portabilidad de controladores NDIS 6.x a NDIS 6.20
- Portabilidad de controladores NDIS 6.x a NDIS 6.30
Un controlador de miniporte deserializado debe cumplir los siguientes requisitos cuando interactúa con NDIS:
Un controlador de miniporte deserializado debe identificarse como tal para NDIS durante la inicialización.
Un controlador de miniport deserializado debe completar todas las solicitudes de envío de forma asincrónica. Para completar una solicitud de envío, los controladores de miniporte sin conexión de NDIS 6.0 y versiones posteriores llaman a la función NdisMSendNetBufferListsComplete. Los controladores de miniporte orientados a la conexión de NDIS 6.0 y versiones más recientes llaman a la función NdisMCoSendNetBufferListsComplete.
Un controlador de miniport deserializado que admite NDIS 6.0 o posterior establece el miembro Status de la estructura de NET_BUFFER_LIST que pasará a NdisMSendNetBufferListsComplete.
Si un controlador de miniport deserializado no puede completar inmediatamente las solicitudes de envío, no puede devolver las solicitudes a NDIS para volver a poner en cola. En su lugar, el controlador de miniporte debe poner en cola las solicitudes de envío internamente hasta que haya suficientes recursos disponibles para transmitir los datos.
Un controlador de miniporte deserializado no debe examinar las estructuras que pasa a NDIS en indicaciones de recepción hasta después de que NDIS las devuelva. NDIS devuelve estructuras NET_BUFFER_LIST a la función MiniportReturnNetBufferLists del controlador de miniport.
Un controlador de miniporte deserializado debe cumplir los siguientes requisitos internos del controlador:
Un controlador de miniporte deserializado debe proteger sus colas de búfer de red con bloqueos de giro. Un controlador de miniporte deserializado también debe proteger su estado compartido del acceso simultáneo mediante sus propias funciones MiniportXxx .
Las funciones MiniportXxx de un controlador miniporte deserializado se pueden ejecutar en IRQL <= DISPATCH_LEVEL. Por lo tanto, el escritor de controladores no puede suponer que se llamará a las funciones MiniportXxx en el orden en que procesan las solicitudes. Una función MiniportXxx puede reemplazar otra función MiniportXxx que se ejecuta en un IRQL inferior.
Un controlador de miniport deserializado es responsable de la gestión de la cola de búfer de red. Cuando el controlador de miniportador experimenta un problema de recursos, no puede devolver las solicitudes de envío a NDIS para reencolarlas. En su lugar, el controlador de miniport debe poner en cola internamente todas las solicitudes de envío hasta que haya suficientes recursos disponibles para enviar los datos.
Un controlador de miniporte deserializado debe completar las solicitudes de envío en el orden determinado por el protocolo.
Para obtener más información sobre los requisitos de envío y recepción de controladores NDIS, consulte Operaciones de envío y recepción.
Tenga en cuenta que un controlador de miniporte deserializado normalmente completa las solicitudes de envío en orden determinado por protocolo. Sin embargo, un controlador de minipuerto que admita la prioridad del paquete (por ejemplo, IEEE 802.1p) puede reordenar las solicitudes de envío en función de la información de prioridad.