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.
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 |
---|---|
|
Posiblemente indica que se produjo un error en la asignación de memoria dentro del controlador de clase port. |
|
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 |