Compartir a través de


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.

Nota Debe declarar la función mediante el tipo FILTER_PAUSE . Para obtener más información, consulte la sección Ejemplos siguientes.
 

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
NDIS_STATUS_SUCCESS
FilterPause ha pausado correctamente el módulo de filtro especificado.
NDIS_STATUS_PENDING
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:

Una vez que el controlador de filtro devuelve NDIS_STATUS_SUCCESS de FilterPause o llama a la función NdisFPauseComplete , se completa la operación de pausa. El módulo de filtro está en estado Pausado .

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

Consulte también

FilterAttach

FilterReceiveNetBufferLists

FilterRestart

FilterReturnNetBufferLists

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NDIS_FILTER_PAUSE_PARAMETERS

NDIS_OBJECT_HEADER

NdisFPauseComplete

NdisFReturnNetBufferLists

NdisFSendNetBufferListsComplete

NdisWriteEventLogEntry