Inizializzazione di un driver Miniport

Quando un dispositivo di rete diventa disponibile, il sistema carica il driver miniport NDIS per gestire il dispositivo (se il driver non è già caricato). Ogni driver miniport deve fornire una funzione DriverEntry . Il sistema chiama DriverEntry dopo il caricamento del driver. DriverEntry registra le caratteristiche del driver miniport con NDIS (inclusa la versione NDIS supportata e i punti di ingresso del driver).

Il sistema passa due argomenti a DriverEntry:

  • Puntatore all'oggetto driver creato dal sistema di I/O.

  • Puntatore al percorso del Registro di sistema, che specifica dove vengono archiviati i parametri specifici del driver.

In DriverEntry i driver miniport passano entrambi i puntatori in una chiamata alla funzione NdisMRegisterMiniportDriver . I driver Miniport esportano un set di funzioni MiniportXxx standard archiviando i punti di ingresso in una struttura NDIS_MINIPORT_DRIVER_CHARACTERISTICS e passando tale struttura a NdisMRegisterMiniportDriver.

DriverEntry per i driver miniport restituisce il valore restituito dalla chiamata a NdisMRegisterMiniportDriver.

Un driver miniport esegue anche qualsiasi altra inizializzazione specifica del driver necessaria in DriverEntry. Il driver esegue l'inizializzazione specifica dell'adattatore nella funzione MiniportInitializeEx . Per altre informazioni sull'inizializzazione dell'adapter, vedere Inizializzazione di un adapter.

DriverEntry può allocare la struttura NDIS_MINIPORT_DRIVER_CHARACTERISTICS nello stack perché la libreria NDIS copia le informazioni pertinenti nella propria risorsa di archiviazione. DriverEntry deve cancellare la memoria per questa struttura con NdisZeroMemory prima di impostare i valori forniti dal driver nei relativi membri. I membri MajorNdisVersion e MinorNdisVersion devono contenere le versioni principali e secondarie di NDIS supportate dal driver. In ogni membro XxxHandler della struttura delle caratteristiche , DriverEntry deve impostare il punto di ingresso di una funzione MiniportXxx fornita dal driver oppure il membro deve essere NULL.

Per abilitare un driver miniport per configurare i servizi facoltativi, NDIS chiama la funzione MiniportSetOptions nel contesto della chiamata del driver miniport a NdisMRegisterMiniportDriver. Per altre informazioni sui servizi facoltativi, vedere Configuring Optional Miniport Driver Services.For more information about optional services, see Configuring Optional Miniport Driver Services.

I driver che chiamano NdisMRegisterMiniportDriver devono essere preparati per CHIAMARE le funzioni MiniportInitializeEx in qualsiasi momento dopo il ritorno di DriverEntry . Tale driver deve disporre di informazioni di installazione e configurazione sufficienti archiviate nel Registro di sistema o disponibili dalle chiamate a una funzione di configurazione specifica del tipo di bus NdisXxx per configurare qualsiasi risorsa specifica della scheda di interfaccia di rete che il driver dovrà eseguire operazioni di I/O di rete.

Il driver miniport deve infine chiamare NdisMDeregisterMiniportDriver per rilasciare le risorse allocate chiamando NdisMRegisterMiniportDriver. Se l'inizializzazione del driver ha esito negativo dopo che la chiamata a NdisMRegisterMiniportDriver ha avuto esito positivo, il driver può chiamare NdisMDeregisterMiniportDriver da DriverEntry. In caso contrario, il driver miniport deve rilasciare le risorse specifiche del driver allocate nella funzione MiniportDriverUnload . In altre parole, se NdisMRegisterMiniportDriver non restituisce NDIS_STATUS_SUCCESS, DriverEntry deve rilasciare tutte le risorse allocate prima di restituire il controllo. Se si verifica questo problema, il driver non verrà caricato. Per altre informazioni, vedere Scaricamento di un driver Miniport.