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.
La función FilterRestart inicia una operación de reinicio para el módulo de filtro especificado.
Sintaxis
FILTER_RESTART FilterRestart;
NDIS_STATUS FilterRestart(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNDIS_FILTER_RESTART_PARAMETERS RestartParameters
)
{...}
Parámetros
[in] FilterModuleContext
Identificador del área de contexto del módulo de filtro que debe reiniciar el controlador de filtro. El controlador de filtro creó e inicializó este área de contexto en la función FilterAttach.
[in] RestartParameters
Puntero a un NDIS_FILTER_RESTART_PARAMETERS estructura que define los parámetros de reinicio para el módulo de filtro.
Valor devuelto
FilterRestart devuelve uno de los siguientes valores de estado:
| Código devuelto | Descripción |
|---|---|
|
FilterRestart reiniciar correctamente el módulo de filtro especificado. |
|
El controlador de filtro completará la solicitud de forma asincrónica con una llamada a la NdisFRestartComplete función después de completar la operación de reinicio. |
|
Error de FilterRestart debido a recursos insuficientes. |
|
No se aplica ninguno de los valores de estado anteriores. El controlador de filtro debe llamar a la función NdisWriteEventLogEntry junto con parámetros que especifican el motivo del error. |
Observaciones
FilterRestart es una función necesaria para los controladores de filtro. NDIS puede llamar a FilterRestart cuando un módulo de filtro está en estado pausado. El módulo de filtro entra en el estado Reiniciar al principio de la ejecución de FilterRestart.
Cuando NDIS llama a FilterRestart, un controlador de filtro:
- Debe completar las operaciones necesarias para reiniciar las operaciones normales de envío y recepción.
- Opcionalmente, lee o escribe parámetros de configuración.
- Opcionalmente, reasigna grupos de búferes.
- Opcionalmente, modifica los atributos de reinicio que se especifican en el RestartAttributes miembro del objeto estructura de NDIS_FILTER_RESTART_PARAMETERS. Si el puntero de restartAttributes es NULL, el controlador de filtro no debe modificar ni agregar a la lista de atributos de reinicio. Si el puntero de RestartAttributes no esNULL, apunta a la primera estructura NDIS_RESTART_ATTRIBUTES de la lista de atributos de reinicio. Si un controlador de filtro no se reinicia, no debe modificar ningún atributo.
- Opcionalmente, usa solicitudes OID para consultar o establecer información en los controladores subyacentes. Los controladores de filtro no deben emitir solicitudes OID para obtener información que ya se proporciona en la lista de atributos de reinicio.
- Devuelve NDIS_STATUS_SUCCESS o un estado de error.
- No debe modificar ningún atributo específico del medio si no reconoce el OID en el miembro Oid del NDIS_RESTART_ATTRIBUTES estructura.
- Puede agregar nuevos atributos específicos de medios a la lista de atributos de reinicio. En esta situación, el controlador de filtro debe asignar un nuevo NDIS_RESTART_ATTRIBUTES estructura, por ejemplo, con el NdisAllocateMemoryWithTagPriority function- y proporcionan espacio de memoria para los nuevos atributos. Después de propagar los atributos de reinicio a controladores demasiado excesivos, NDIS libera la memoria de atributos para los controladores de filtro.
- Puede modificar los atributos específicos de los medios en la lista de atributos de reinicio. Si el controlador de filtro requiere más espacio de memoria, puede liberar la estructura de NDIS_RESTART_ATTRIBUTES con la función NdisFreeMemory y asignar una nueva estructura para contener la información modificada. Después de propagar los atributos de reinicio a controladores demasiado excesivos, NDIS libera la memoria de atributos para los controladores de filtro.
-
Debe, si el miembro Oid de de la estructura NDIS_RESTART_ATTRIBUTES es
OID_GEN_MINIPORT_RESTART_ATTRIBUTES, asegúrese de que
NDIS_RESTART_GENERAL_ATTRIBUTES estructura contiene la información que requiere el controlador de filtro. Para asegurarse de que la estructura de NDIS_RESTART_GENERAL_ATTRIBUTES contiene la información necesaria, debe comprobar el miembro Revisión de en la estructura de NDIS_OBJECT_HEADER especificada en el encabezado miembro de la estructura de NDIS_RESTART_GENERAL_ATTRIBUTES.
Nota Un controlador de filtro puede modificar cualquier miembro de la estructura NDIS_RESTART_GENERAL_ATTRIBUTES. Si algunos atributos que debe modificar el controlador de filtro no se incluyen en la revisión de la estructura proporcionada por NDIS, el controlador de filtro debe depender de los controladores de uso excesivo para emitir solicitudes de OID para los atributos que faltan. El controlador de filtro puede modificar los atributos cuando completa la solicitud OID.
- Debe, si el controlador de filtro cambia los atributos de reinicio, proporcione una función FilterOidRequest. El controlador de filtro debe asegurarse de que la información que reciben los controladores excesivamente en los atributos de reinicio es coherente con la información que reciben en respuesta a las solicitudes de OID.
NDIS llama a FilterRestart en IRQL = PASSIVE_LEVEL.
Ejemplos de
Para definir un función FilterRestart, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función de FilterRestart denominada "MyRestart", use el tipo de FILTER_RESTART tal como se muestra en este ejemplo de código:
FILTER_RESTART MyRestart;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyRestart(
NDIS_HANDLE FilterModuleContext,
PNDIS_FILTER_RESTART_PARAMETERS FilterRestartParameters
)
{...}
El tipo de función FILTER_RESTART se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función FILTER_RESTART en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.
Requisitos
| Requisito | Valor |
|---|---|
| cliente mínimo admitido | Se admite en NDIS 6.0 y versiones posteriores. |
| de la plataforma de destino de | Windows |
| encabezado de | ndis.h (incluya Ndis.h) |
| irQL | PASSIVE_LEVEL |