Iniciar un módulo de filtro
Para iniciar un módulo de filtro en pausa, NDIS llama a la función FilterSetModuleOptions del controlador de filtro, si existe, seguida de una llamada a la función FilterRestart . El módulo de filtro entra en el estado Reinicio al principio de la ejecución en la función FilterRestart .
Si el controlador proporcionó un punto de entrada para FilterSetModuleOptions, el controlador puede cambiar la característica parcial de un módulo de filtro. Para obtener más información, vea Modo de omisión de datos.
Cuando llama a la función FilterRestart de un controlador de filtro, NDIS pasa un puntero a una estructura de NDIS_RESTART_ATTRIBUTES para filtrar el controlador en el miembro RestartAttributes de la estructura NDIS_FILTER_RESTART_PARAMETERS . Los controladores de filtro pueden modificar los atributos de reinicio especificados por los controladores subyacentes. Para obtener más información sobre cómo modificar los atributos de reinicio, vea FilterRestart.
Nota NDIS llama a FilterSetModuleOptions para todos los módulos de filtro de una pila antes de que NDIS llame a la función FilterRestart para cualquier módulo de filtro de la pila.
NDIS inicia un módulo de filtro como parte de una operación de Plug and Play para reiniciar una pila de controladores. Para obtener información general sobre cómo reiniciar la pila de controladores, consulte Reinicio de una pila de controladores.
En nombre de un módulo de filtro que se encuentra en el estado Reinicio , el controlador de filtro:
Completa las operaciones necesarias para reiniciar las operaciones normales de envío y recepción.
Para obtener más información sobre las operaciones de envío y recepción, vea Filtrar las operaciones de envío y recepción del módulo.
Puede leer o escribir parámetros configurables para el módulo de filtro.
Puede recibir indicaciones de datos de red. El controlador puede copiar y poner en cola estos datos e indicarlo a controladores que se sobreponen más adelante, o bien puede descartar los datos.
No debe iniciar ninguna nueva indicación de recepción.
Debe rechazar todas las nuevas solicitudes de envío realizadas a su función FilterSendNetBufferLists inmediatamente llamando a la función NdisFSendNetBufferListsComplete . Debe establecer el estado completo en cada NET_BUFFER_LIST en NDIS_STATUS_PAUSED.
Puede proporcionar indicaciones de estado con la función NdisFIndicateStatus .
Para obtener más información sobre las indicaciones de estado, vea Filtrar indicaciones de estado del módulo.
Debe controlar las solicitudes de OID en la función FilterOidRequest .
Para obtener más información sobre las solicitudes de OID, vea Filtrar solicitudes de OID del módulo.
No debe iniciar ninguna nueva solicitud de envío.
Debe devolver nuevas indicaciones de recepción a NDIS inmediatamente llamando a la función NdisFReturnNetBufferLists . Si es necesario, el controlador puede copiar estas indicaciones de recepción antes de que las devuelva.
Puede realizar solicitudes de OID a los controladores subyacentes para establecer o consultar la información de configuración actualizada.
Debe controlar las indicaciones de estado en su función FilterStatus .
Debe indicar NDIS_STATUS_SUCCESS o un estado de error. Si un módulo de filtro no se reinicia, NDIS lo desasociará y, si es un filtro obligatorio, NDIS finaliza toda la pila de controladores.
Una vez que el controlador de filtro reinicie correctamente las operaciones de envío y recepción, debe completar la operación de reinicio. El controlador de filtro puede completar la operación de reinicio de forma sincrónica o asincrónica devolviendo NDIS_STATUS_SUCCESS o NDIS_STATUS_PENDING respectivamente desde FilterRestart.
Si el controlador devuelve NDIS_STATUS_PENDING, debe llamar a la función NdisFRestartComplete después de completar la operación de reinicio. En este caso, el controlador pasa el estado final de la operación de reinicio a NdisFRestartComplete.
Una vez completada la operación de reinicio, el módulo de filtro se encuentra en estado En ejecución . El controlador reanuda el procesamiento normal de envío y recepción.
NDIS no inicia otras operaciones de Plug and Play, como adjuntar, desasociar o pausar solicitudes, mientras que el controlador de filtro está en estado De reinicio. NDIS puede iniciar solicitudes de pausa después de que un controlador de filtro esté en estado En ejecución . Para obtener más información sobre cómo pausar un módulo de filtro, consulte Pausar un módulo de filtro.