Condividi tramite


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.

Nota Questa funzione è deprecata per Windows 8 e versioni successive di Windows. Per i sistemi Windows on Arm, questa funzione viene impostata come commento nel driver della classe PortCls ed è inaccessibile.
 

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
STATUS_INSUFFICIENT_RESOURCES
Probabilmente indica che un'allocazione di memoria non è riuscita all'interno del driver di classe porta.
STATUS_UNSUCCESSFUL
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

DEVICE_OBJECT

PcUnregisterIoTimeout