Share via


Función PcRegisterIoTimeout (portcls.h)

La función PcRegisterIoTimeout registra una rutina de devolución de llamada de E/S proporcionada por el controlador para un objeto de dispositivo especificado.

Una vez registrado, el controlador de clase port llama a la devolución de llamada del temporizador aproximadamente una vez por segundo mientras el dispositivo permanezca activo.

Nota Esta función está en desuso para Windows 8 y versiones posteriores de Windows. Para los sistemas Windows en Arm, esta función se comenta en el controlador de clase PortCls y no es accesible.
 

Sintaxis

PORTCLASSAPI NTSTATUS PcRegisterIoTimeout(
  [in] PDEVICE_OBJECT    pDeviceObject,
  [in] PIO_TIMER_ROUTINE pTimerRoutine,
  [in] PVOID             pContext
);

Parámetros

[in] pDeviceObject

Puntero a un objeto de dispositivo que representa un dispositivo en el que las operaciones de E/S pueden agotar el tiempo de espera. Este parámetro debe apuntar a una estructura del sistema de tipo DEVICE_OBJECT. Al llamar a la rutina de devolución de llamada del temporizador de E/S, el controlador de clase de puerto pasa este puntero como el primero de dos parámetros de llamada. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

[in] pTimerRoutine

Puntero a la rutina de devolución de llamada del temporizador de E/S proporcionada por el controlador. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

[in] pContext

Puntero al contexto específico del controlador. Al llamar a la rutina de devolución de llamada del temporizador de E/S, el controlador de clase de puerto pasa este puntero como el segundo de dos parámetros de llamada. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Valor devuelto

PcRegisterIoTimeout devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, devuelve un código de error adecuado. En la tabla siguiente se muestran algunos de los posibles códigos de error.

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES
Posiblemente indica que se produjo un error en la asignación de memoria dentro del controlador de clase port.
STATUS_UNSUCCESSFUL
Posiblemente indica que una devolución de llamada del temporizador con la misma combinación de objeto de dispositivo, rutina de devolución de llamada del temporizador de E/S y contexto ya está registrado.

Comentarios

Un controlador de adaptador llama a la función PcRegisterIoTimeout para habilitar un temporizador de guardián de baja resolución. Los controladores usan esta función principalmente para supervisar los dispositivos que no tienen ningún medio para generar un evento en sí mismos si no completan una operación de E/S iniciada previamente dentro de un intervalo de tiempo máximo.

Después de que el controlador llame a PcRegisterIoTimeout, el controlador de clase port llama a la rutina de devolución de llamada del temporizador de E/S del controlador aproximadamente una vez por segundo mientras el dispositivo permanezca activo. (El dispositivo se activa mediante una solicitud de IRP_MN_START_DEVICE y se desactiva mediante una solicitud de IRP_MN_STOP_DEVICE).

El controlador puede deshabilitar el temporizador llamando a PcUnregisterIoTimeout.

Solo se puede registrar una devolución de llamada del temporizador con una combinación determinada de objeto de dispositivo, rutina de devolución de llamada del temporizador de E/S y contexto.

El significado del parámetro pContext viene determinado por el controlador del adaptador, pero el controlador normalmente establece este parámetro para que apunte a un objeto como la miniporte, el flujo de minipuerto o el objeto de adaptador.

El parámetro pTimerRoutine es de tipo PIO_TIMER_ROUTINE, que se define en ntddk.h para que sea

  VOID
    (*PIO_TIMER_ROUTINE)(
      IN PDEVICE_OBJECT  DeviceObject,
      IN PVOID  Context
      );

Los parámetros DeviceObject y Context son los mismos valores que el controlador del adaptador pasó anteriormente como parámetros de llamada a PcRegisterIoTimeout. El controlador de clase port llama a la rutina del temporizador en IRQL DISPATCH_LEVEL. La rutina del temporizador no debe contener código paginable.

Requisitos

Requisito Value
Cliente mínimo compatible El controlador del sistema PortCls implementa la función PcRegisterIoTimeout en Microsoft Windows 98/Me y en los sistemas operativos Windows 2000 y versiones posteriores.
Plataforma de destino Universal
Encabezado portcls.h (incluir Portcls.h)
Library Portcls.lib
IRQL PASSIVE_LEVEL

Consulte también

DEVICE_OBJECT

PcUnregisterIoTimeout