Condividi tramite


DRIVER_REINITIALIZE funzione di callback (ntddk.h)

La routine Reinitialize continua l'inizializzazione del driver e del dispositivo dopo che la routine DriverEntry del driver restituisce.

Sintassi

DRIVER_REINITIALIZE DriverReinitialize;

void DriverReinitialize(
  [in]           _DRIVER_OBJECT *DriverObject,
  [in, optional] PVOID Context,
  [in]           ULONG Count
)
{...}

Parametri

[in] DriverObject

Puntatore fornito dal chiamante a una struttura DRIVER_OBJECT . Si tratta dell'oggetto driver del driver.

[in, optional] Context

Puntatore fornito dal chiamante alle informazioni di contesto, specificato in una chiamata precedente a IoRegisterDriverReinitialization o IoRegisterBootDriverReinitialization.

[in] Count

Valore fornito dal chiamante che rappresenta il numero di volte in cui è stata chiamata la routine Reinitialize , inclusa la chiamata corrente.

Valore restituito

nessuno

Osservazioni

Per accodare una routine reinitialize per l'esecuzione, la routine DriverEntry di un driver deve chiamare IoRegisterDriverReinitialization o IoRegisterBootDriverReinitialization. La routine Reinitialize può anche chiamare IoRegisterDriverReinitialization stessa, che causa la ripetizione della routine. Questa ripetizione può verificarsi più volte e il parametro Count della routine indica il numero di volte in cui è stato chiamato. La prima chiamata a IoRegisterDriverReinitialization deve essere effettuata da DriverEntry e DriverEntry deve restituire STATUS_SUCCESS.

Per altre informazioni sull'implementazione di una routine Reinitialize , vedere Scrittura di una routine reinizializzare.

Esempio

Per definire una routine di callback reinitialize , è prima necessario fornire una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione usando i tipi di funzione callback consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback Reinitialize denominata MyReinitialize, usare il tipo di DRIVER_REINITIALIZE, come illustrato nell'esempio di codice seguente:

DRIVER_REINITIALIZE MyReinitialize;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
VOID
  MyReinitialize(
    struct _DRIVER_OBJECT  *DriverObject,
    PVOID  Context,
    ULONG  Count
    )
  {
      // Function body
  }

Il tipo di funzione DRIVER_REINITIALIZE viene definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_ alla definizione della funzione. L'annotazione _Use_decl_annotations_ garantisce che vengano usate le annotazioni applicate al tipo di funzione DRIVER_REINITIALIZE nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver WDM. Per informazioni su _Use_decl_annotations_, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione ntddk.h (include Ntddk.h, Ntifs.h)
IRQL Chiamato in PASSIVE_LEVEL.