FILTER_PAUSE función de devolución de llamada (ndis.h)
NDIS llama a la función FilterPause del controlador de filtro para iniciar una operación de pausa para el módulo de filtro especificado.
Sintaxis
FILTER_PAUSE FilterPause;
NDIS_STATUS FilterPause(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNDIS_FILTER_PAUSE_PARAMETERS PauseParameters
)
{...}
Parámetros
[in] FilterModuleContext
Identificador del área de contexto del módulo de filtro que el controlador de filtro debe pausar. El controlador de filtro creó e inicializó este área de contexto en la función FilterAttach .
[in] PauseParameters
Puntero a un NDIS_FILTER_PAUSE_PARAMETERS estructura que define los parámetros de pausa para el módulo de filtro.
Valor devuelto
Los controladores NDIS no pueden producir un error en una solicitud de pausa. El controlador de filtro debe llamar a la función NdisWriteEventLogEntry junto con parámetros que especifiquen el motivo de los errores que se produzcan.
Código devuelto | Descripción |
---|---|
|
FilterPause ha pausado correctamente el módulo de filtro especificado. |
|
El controlador de filtro completará la solicitud de forma asincrónica con una llamada a la función NdisFPauseComplete . |
Comentarios
FilterPause es una función necesaria. NDIS puede llamar a FilterPause cuando el módulo de filtro está en estado En ejecución . El módulo de filtro entra en el estado de pausa al principio de la ejecución en la función FilterPause .
Un controlador de filtro realiza las siguientes operaciones cuando NDIS llama a FilterPause:
- Debe llamar a Función NdisFSendNetBufferListsComplete para los búferes de envío en cola creados por un controlador de exceso.
- Debe llamar a Función NdisFReturnNetBufferLists para los búferes de recepción en cola creados por un controlador subyacente.
- Debe esperar a que NDIS devuelva todas las solicitudes de envío pendientes que el controlador se originó en el Función FilterSendNetBufferListsComplete .
- Debe esperar a que NDIS devuelva todas las indicaciones de recepción pendientes que el controlador se originó en el Función FilterReturnNetBufferLists .
En los estados Pausado o Pausado , un controlador de filtro debe seguir controlando las solicitudes de OID o las indicaciones de estado. El controlador debe rechazar las llamadas a su Función FilterSendNetBufferLists . El controlador puede pasar llamadas a su Función FilterReceiveNetBufferLists . Sin embargo, el controlador no puede pasar ningún búfer que haya creado. El controlador no debe originar ninguna indicación de recepción ni enviar solicitudes.
En el estado Pausado , el módulo de filtro no debe generar solicitudes de envío ni recibir indicaciones.
NDIS llama a la función FilterRestart para iniciar una solicitud de reinicio para un módulo de filtro que se encuentra en estado Pausado .
NDIS llama a FilterPause en IRQL = PASSIVE_LEVEL.
Ejemplos
Para definir una función FilterPause , 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 Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función FilterPause denominada "MyPause", use el tipo FILTER_PAUSE como se muestra en este ejemplo de código:
FILTER_PAUSE MyPause;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
NDIS_STATUS
MyPause(
NDIS_HANDLE FilterModuleContext,
PNDIS_FILTER_PAUSE_PARAMETERS FilterPauseParameters
)
{...}
El tipo de función FILTER_PAUSE 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_PAUSE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de roles de función para controladores NDIS.
Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compatible con NDIS 6.0 y versiones posteriores. |
Plataforma de destino | Windows |
Encabezado | ndis.h (incluya Ndis.h) |
IRQL | PASSIVE_LEVEL |