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 pausaron 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. |
Observaciones
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 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 de NdisFSendNetBufferListsComplete para los búferes de envío en cola creados por un controlador excesivo.
- 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 originó en función FilterSendNetBufferListsComplete.
- Debe esperar a que NDIS devuelva todas las indicaciones de recepción pendientes que el conductor se originó en el función FilterReturnNetBufferLists.
En los estados pausar 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 de
Para definir un 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 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 FilterPause denominada "MyPause", use el tipo FILTER_PAUSE tal 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 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 |