Funzione PcRegisterIoTimeout (portcls.h)
La funzione PcRegisterIoTimeout registra una routine di callback I/O-timer fornita dal driver per un oggetto dispositivo specificato.
Dopo la registrazione, il driver di classe porta chiama il callback timer circa una volta al secondo finché il dispositivo rimane attivo.
Sintassi
PORTCLASSAPI NTSTATUS PcRegisterIoTimeout(
[in] PDEVICE_OBJECT pDeviceObject,
[in] PIO_TIMER_ROUTINE pTimerRoutine,
[in] PVOID pContext
);
Parametri
[in] pDeviceObject
Puntatore a un oggetto dispositivo che rappresenta un dispositivo in cui le operazioni di I/O possono verificarsi il timeout. Questo parametro deve puntare a una struttura di sistema di tipo DEVICE_OBJECT. Quando si chiama la routine di callback del timer I/O, il driver della classe di porta passa questo puntatore come primo dei due parametri di chiamata. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
[in] pTimerRoutine
Puntatore alla routine di callback I/O-timer fornita dal driver. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
[in] pContext
Puntatore al contesto specifico del driver. Quando si chiama la routine di callback del timer I/O, il driver della classe di porta passa questo puntatore come secondo dei due parametri di chiamata. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
Valore restituito
PcRegisterIoTimeout restituisce STATUS_SUCCESS se la chiamata ha avuto esito positivo. In caso contrario, restituisce un codice di errore appropriato. La tabella seguente illustra alcuni dei possibili codici di errore.
Codice restituito | Descrizione |
---|---|
|
Probabilmente indica che un'allocazione di memoria non è riuscita all'interno del driver di classe porta. |
|
Probabilmente indica che un callback timer con la stessa combinazione di oggetto dispositivo, routine di callback I/O-timer e contesto è già registrato. |
Commenti
Un driver dell'adattatore chiama la funzione PcRegisterIoTimeout per abilitare un timer watchdog a bassa risoluzione. I driver usano questa funzione principalmente per monitorare i dispositivi che non hanno alcun mezzo per generare un evento se non riescono a completare un'operazione di I/O avviata in precedenza entro un intervallo di tempo massimo.
Dopo che il driver chiama PcRegisterIoTimeout, il driver di classe porta chiama la routine di callback I/O-timer del driver circa una volta al secondo finché il dispositivo rimane attivo. Il dispositivo viene attivato da una richiesta di IRP_MN_START_DEVICE e disattivata da una richiesta di IRP_MN_STOP_DEVICE.
Il driver può disabilitare il timer chiamando PcUnregisterIoTimeout.
È possibile registrare un solo callback timer con una particolare combinazione di oggetto dispositivo, routine di callback I/O-timer e contesto alla volta.
Il significato del parametro pContext è determinato dal driver dell'adattatore, ma il driver imposta in genere questo parametro in modo che punti a un oggetto, ad esempio il miniport, il flusso miniport o l'oggetto adapter.
Il parametro pTimerRoutine è di tipo PIO_TIMER_ROUTINE, definito in ntddk.h come
VOID
(*PIO_TIMER_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
I parametri DeviceObject e Context sono gli stessi valori passati in precedenza dal driver dell'adattatore come parametri di chiamata a PcRegisterIoTimeout. Il driver di classe porta chiama la routine timer in IRQL DISPATCH_LEVEL. La routine timer non deve contenere codice di paging.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Il driver di sistema PortCls implementa la funzione PcRegisterIoTimeout in Microsoft Windows 98/Me e nei sistemi operativi Windows 2000 e versioni successive. |
Piattaforma di destinazione | Universale |
Intestazione | portcls.h (include Portcls.h) |
Libreria | Portcls.lib |
IRQL | PASSIVE_LEVEL |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per