Condividi tramite


DRIVER_INITIALIZE funzione di callback (wdm.h)

DRIVER_INITIALIZE è la definizione del tipo del punto di ingresso di inizializzazione del driver, denominato convenzionalmente DriverEntry. Questa è la prima routine chiamata dopo il caricamento di un driver.

Sintassi

DRIVER_INITIALIZE DriverInitialize;

NTSTATUS DriverInitialize(
  [in] _DRIVER_OBJECT *DriverObject,
  [in] PUNICODE_STRING RegistryPath
)
{...}

Parametri

[in] DriverObject

Puntatore alla struttura DRIVER_OBJECT del conducente.

[in] RegistryPath

Puntatore a una stringa Unicode con conteggiata che specifica il percorso della chiave del Registro di sistema del driver.

Valore restituito

Se la routine ha esito positivo, deve restituire STATUS_SUCCESS. In caso contrario, deve restituire uno dei valori di stato dell'errore definiti in Ntstatus.h.

Osservazioni

Il parametro DriverObject fornisce la routine driverentry di con un puntatore all'oggetto driver del driver, allocato dal gestore di I/O. La routine DriverEntry deve compilare l'oggetto driver con punti di ingresso per le routine standard del driver.

Il puntatore DriverObject consente al driver di accedere all'DriverObject->HardwareDatabase, che punta a una stringa Unicode con conteggiata che specifica un percorso all'albero \Registry\Machine\Hardware del Registro di sistema.

La stringa del percorso del Registro di sistema a cui punta RegistryPath è nel formato \Registry\Machine\System\CurrentControlSet\Services\DriverName. Un driver può usare questo percorso per archiviare informazioni specifiche del driver; vedere chiavi del Registro di sistema per i driver. La routine DriverEntry deve salvare una copia della stringa Unicode, non il puntatore, poiché il gestore di I/O libera il buffer registryPath dopo driverEntry restituisce.

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

Anche se è possibile assegnare a questa routine un nome diverso da DriverEntry, questa operazione non è consigliata. Gli strumenti di compilazione forniti da DDK informano automaticamente il linker che il punto di ingresso del driver viene chiamato DriverEntry, quindi per assegnare alla routine un altro nome è necessario modificare gli strumenti di compilazione. Per altre informazioni sugli strumenti di compilazione, vedere Compilazione di un driver.

Esempi

Per definire una routine di callback DriverEntry, è prima necessario specificare 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 di callback consente di l'analisi del codice per i driver, (SDV) e altri strumenti di verifica rilevano errori.

Per definire una routine di callback DriverEntry, usare il tipo di DRIVER_INITIALIZE come illustrato in questo esempio di codice:

DRIVER_INITIALIZE DriverEntry;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
NTSTATUS 
  DriverEntry( 
    struct _DRIVER_OBJECT  *DriverObject,
    PUNICODE_STRING  RegistryPath 
    )
  {
      // Function body
  }

Il tipo di funzione DRIVER_INITIALIZE è 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_ assicura che vengano utilizzate le annotazioni applicate al tipo di funzione DRIVER_INITIALIZE nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite i tipi di ruolo delle funzioni per i driver WDM. Per informazioni su _Use_decl_annotations_, vedere l'annotazione del comportamento della funzione.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione wdm.h (include Mcd.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
IRQL Chiamato in PASSIVE_LEVEL.

Vedere anche

DRIVER_OBJECT