NDIS_TIMER_FUNCTION función de devolución de llamada (ndis.h)

NDIS llama a la función de devolución de llamada NdisTimerFunction después de que un controlador establezca un temporizador único o periódico cuando se active un temporizador.

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

Sintaxis

NDIS_TIMER_FUNCTION NdisTimerFunction;

void NdisTimerFunction(
  [in] PVOID SystemSpecific1,
  [in] PVOID FunctionContext,
  [in] PVOID SystemSpecific2,
  [in] PVOID SystemSpecific3
)
{...}

Parámetros

[in] SystemSpecific1

Puntero a un valor específico del sistema que está reservado para el uso del sistema.

[in] FunctionContext

Puntero a un área de contexto proporcionada por el controlador que el controlador pasó a la función NdisSetTimerObject . Si el parámetro FunctionContext de NdisSetTimerObject era NULL, NDIS usa el valor predeterminado que el controlador especificó en el NDIS_TIMER_CHARACTERISTICS estructura. El controlador pasó la estructura a la función NdisAllocateTimerObject para inicializar el objeto de temporizador asociado.

[in] SystemSpecific2

Puntero a un valor específico del sistema que está reservado para el uso del sistema.

[in] SystemSpecific3

Puntero a un valor específico del sistema que está reservado para el uso del sistema.

Valor devuelto

None

Observaciones

Cualquier controlador NDIS puede tener una o varias funciones de devolución de llamada de NdisTimerFunction . Cada una de estas devoluciones de llamada de NdisTimerFunction debe estar asociada a un objeto de temporizador asignado por el controlador diferente e inicializado.

El controlador inicializa un objeto de temporizador asignado por el controlador mediante una llamada a . Función NdisAllocateTimerObject .

Una llamada posterior a la función NdisSetTimerObject hace que la devolución de llamada NdisTimerFunction asociada al objeto de temporizador se ejecute después de un intervalo especificado o periódicamente.

Para cancelar las llamadas a NdisTimerFunction, llame a la función NdisCancelTimerObject . NDIS puede seguir llamando a NdisTimerFunction si el tiempo de espera ya ha expirado antes de la llamada a NdisCancelTimerObject.

Si una devolución de llamada de NdisTimerFunction comparte recursos con otras funciones de controlador, el controlador debe sincronizar el acceso a esos recursos con un bloqueo de número.

Ejemplos

Para definir una función NdisTimerFunction , 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 NdisTimerFunction denominada "MyTimerCallback", use el tipo de NDIS_TIMER_FUNCTION como se muestra en este ejemplo de código:

NDIS_TIMER_FUNCTION MyTimerCallback;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
VOID
 MyTimerCallback(
    PVOID  SystemSpecific1,
    PVOID  FunctionContext,
    PVOID  SystemSpecific2,
    PVOID  SystemSpecific3
    )
  {...}

El tipo de función NDIS_TIMER_FUNCTION 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 NDIS_TIMER_FUNCTION 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 DISPATCH_LEVEL

Consulte también

Inicialización de temporizadores NDIS

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

Temporizadores de mantenimiento

Establecer y borrar temporizadores