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 de 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 pausaron 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.

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.
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 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

Consulte también

FilterAttach

FilterReceiveNetBufferLists

filterRestart

FilterReturnNetBufferLists

filterSendNetBufferLists de

FilterSendNetBufferListsComplete

NDIS_FILTER_PAUSE_PARAMETERS

NDIS_OBJECT_HEADER

NdisFPauseComplete

NdisFReturnNetBufferLists

NdisFSendNetBufferListsComplete

NdisWriteEventLogEntry