Compartir a través de


IO_TIMER_ROUTINE función de devolución de llamada (wdm.h)

La rutina IoTimer es un DPC que, si está registrado, se llama una vez por segundo.

Sintaxis

IO_TIMER_ROUTINE IoTimerRoutine;

void IoTimerRoutine(
  [in]           _DEVICE_OBJECT *DeviceObject,
  [in, optional] PVOID Context
)
{...}

Parámetros

[in] DeviceObject

Puntero proporcionado por el autor de la llamada a una estructura DEVICE_OBJECT. Este es el objeto de dispositivo para el dispositivo de destino, creado previamente por la rutina de addDevice del controlador.

[in, optional] Context

Puntero proporcionado por el autor de la llamada a la información de contexto definida por el controlador, especificada en una llamada anterior a IoInitializeTimer.

Valor devuelto

Ninguno

Observaciones

La rutina de un controlador se ejecuta en un contexto DPC, en IRQL = DISPATCH_LEVEL.

Un controlador puede asociar una rutina de IoTimer con cada objeto de dispositivo que crea. (Puede usar una única rutina de IoTimer con varios objetos de dispositivo o una rutina independiente con cada objeto de dispositivo). Para registrar una rutina de IoTimer, un controlador debe llamar a ioInitializeTimer, proporcionando el IoTimer dirección de la rutina y un puntero de objeto de dispositivo.

Para poner en cola una rutina de IoTimer para su ejecución, una rutina de controlador debe llamar a IoStartTimer. El sistema llama a la rutina IoTimer una vez por segundo hasta que el controlador llame a IoStopTimer.

Para obtener más información sobre rutinas de IoTimer, consulte rutinas de IoTimer.

Ejemplos

Para definir un ioTimer rutina de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada 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 rutina de devolución de llamada de IoTimer denominada MyIoTimer, use el tipo IO_TIMER_ROUTINE tal como se muestra en este ejemplo de código:

IO_TIMER_ROUTINE MyIoTimer;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
VOID
  MyIoTimer(
    struct DEVICE_OBJECT  *DeviceObject,
    PVOID  Context
    )
  {
      // Function body
  }

El tipo de función IO_TIMER_ROUTINE se define en el archivo de encabezado Wdm.h. Para identificar con mayor 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 IO_TIMER_ROUTINE 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 rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, vea Anotación del comportamiento de la función.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL Se llama en DISPATCH_LEVEL (consulte la sección Comentarios).