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. |