Conceptos y definiciones de NDIS remotos
En esta sección se presenta información general sobre los requisitos de NDIS remotos en el canal de comunicación y los controladores de capa inferior que se usan para comunicarse entre el host y el dispositivo NDIS remoto. Las transiciones de estado del dispositivo y las operaciones principales, como la inicialización, la detención y el restablecimiento también se describen en esta sección.
Canal de control
El canal de control debe ser confiable y garantizar la entrega secuenciada. Se usa para todas las comunicaciones excepto para la transmisión de paquetes de datos de red. Todos los mensajes de control necesarios, excepto REMOTE_NDIS_HALT_MSG y REMOTE_NDIS_INDICATE_STATUS_MSG, son intercambios de solicitudes y respuestas iniciados por el host. El dispositivo debe responder dentro del período de tiempo de espera especificado para cada bus.
Canal de datos
El canal de datos se usa exclusivamente para la transmisión de paquetes de datos de red. Puede constar de varios subcanales (por ejemplo, para una calidad de servicio variable) tal como se define para el bus adecuado.
Inicialización y desmontaje
Los canales de control y datos se inicializan y configuran según se especifique para el bus adecuado. El host envía un mensaje REMOTE_NDIS_INITIALIZE_MSG al dispositivo NDIS remoto. El dispositivo NDIS remoto proporciona información sobre su tipo (orientado a conexiones o sin conexión), medio admitido y versión en el mensaje de respuesta REMOTE_NDIS_INITIALIZE_CMPLT.
El host o el dispositivo NDIS remoto pueden anular el canal de comunicación a través del mensaje de REMOTE_NDIS_HALT_MSG . Todas las solicitudes y paquetes pendientes se descartan al recibir este mensaje.
Definiciones de estado de dispositivo
Después de la inicialización de nivel de bus, se dice que el dispositivo está en estado RNDIS sin inicializar. Después de recibir un REMOTE_NDIS_INITIALIZE_MSG y responder con un REMOTE_NDIS_INITIALIZE_CMPLT con un estado de RNDIS_STATUS_SUCCESS, el dispositivo entra en el estado inicializado de RNDIS.
Después de recibir REMOTE_NDIS_SET_MSG especificar un valor de filtro distinto de cero para OID_GEN_CURRENT_PACKET_FILTER, el dispositivo entra en el estado inicializado RNDIS-data-initialized.
Cuando en el estado RNDIS-data-initialized, la recepción de un REMOTE_NDIS_SET_MSG especificando un valor de filtro cero para OID_GEN_CURRENT_PACKET_FILTER obliga al dispositivo de nuevo al estado inicializado de RNDIS.
La recepción de REMOTE_NDIS_HALT_MSG o una desconexión o restablecimiento de nivel de bus en cualquier momento obliga al dispositivo al estado RNDIS no inicializado.
Halt
En cualquier momento que el dispositivo esté en el estado inicializado RNDIS o RNDIS-data-initialized, el equipo host puede finalizar la funcionalidad NDIS remota del dispositivo enviando REMOTE_NDIS_HALT_MSG al dispositivo.
Restablecer el canal de comunicación
El canal de comunicación se restablece cuando se produce un error, como el tiempo de espera del mensaje. El host puede iniciar un restablecimiento en cualquier momento en que el dispositivo esté en estado inicializado de RNDIS enviando el mensaje REMOTE_NDIS_RESET_MSG al dispositivo y el dispositivo debe enviar un mensaje de respuesta cuando haya completado el restablecimiento. Por ejemplo, el host puede iniciar un restablecimiento cuando se ha producido un error, como un tiempo de espera del mensaje.
Tenga en cuenta que se trata de un restablecimiento temporal en el sentido de que los identificadores (por ejemplo, las máquinas virtuales para dispositivos orientados a la conexión) siguen siendo válidos después del restablecimiento. El dispositivo NDIS remoto descarta todas las solicitudes y paquetes pendientes como parte del proceso de restablecimiento. El dispositivo remoto puede restablecer algunos de sus componentes de hardware, pero mantiene intacto el canal de comunicación.
Si el dispositivo NDIS remoto realiza un reinicio, este evento equivale a "Quitar" seguido de eventos de Plug and Play "Agregar". El controlador de miniporte NDIS del host se detendrá y se quitará, y se agregará e iniciará una nueva instancia. Se volverán a ejecutar todas las inicializaciones de nivel de bus y NDIS remoto. Un dispositivo NDIS remoto puede reiniciarse en caso de que se produzca un error crítico en el dispositivo.
Control de flujo
Es posible que el dispositivo NDIS remoto tenga que ejercer el control de flujo para evitar que el host desborde sus búferes de datos con paquetes. Cualquier disposición o requisito de control de flujo es específico del bus.
Ordenación numérica de bytes
Todos los valores numéricos de los mensajes NDIS remotos deben codificarse en formato little-endian (primero un byte menos significativo).
Encapsulación de mensajes NDIS
No hay ninguna especificación NDIS remota para la forma en que los mensajes NDIS se encapsulan en mensajes de bus nativos o primitivos.