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 (incluse la versione NDIS supportata e i punti di ingresso del driver).
Il sistema passa due argomenti a DriverEntry:
Un 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 questi puntatori in una chiamata alla funzione NdisMRegisterMiniportDriver. I driver Miniport esportano un set di funzioni di MiniportXxx 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 inoltre esegue qualsiasi altra inizializzazione richiesta dal driver 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, poiché la libreria NDIS copia le informazioni pertinenti nel proprio spazio 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 xxxmembro del gestore 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 consentire a un driver miniport di configurare i servizi facoltativi, NDIS chiama la funzione MiniportSetOptions nel contesto della chiamata a NdisMRegisterMiniportDrivereffettuata dal driver miniport. Per ulteriori informazioni sui servizi facoltativi del driver, consultare Configurazione dei Servizi Facoltativi del Driver Miniport.
I driver che chiamano NdisMRegisterMiniportDriver devono essere preparati affinché NDIS possa chiamare le loro funzioni MiniportInitializeEx in qualsiasi momento dopo che DriverEntry è stato eseguito. 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 NdisXxx specifica per tipo di bus, al fine di configurare qualsiasi risorsa specifica della scheda di interfaccia di rete che il driver dovrà utilizzare per eseguire le operazioni di I/O di rete.
Il driver miniport deve infine chiamare NdisMDeregisterMiniportDriver per rilasciare le risorse che ha allocato chiamando NdisMRegisterMiniportDriver. Se l'inizializzazione del driver ha esito negativo dopo che la chiamata a NdisMRegisterMiniportDriver è riuscita, il driver può chiamare NdisMDeregisterMiniportDriver dall'interno di DriverEntry. In caso contrario, il driver miniport deve rilasciare le risorse specifiche del driver allocate nella relativa 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 ciò si verifica, il driver non verrà caricato. Per ulteriori informazioni, vedere Disinstallare il driver miniport.