Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un driver miniport NDIS deve fornire una funzione MiniportHaltEx per NdisMRegisterMiniportDriver.
MiniportHaltEx dovrebbe annullare tutto ciò che MiniportInitializeEx abbia fatto. Ad esempio, il driver miniport NDIS potrebbe:
Porte gratuite. Per ulteriori informazioni, vedere La liberazione di una porta NDIS.
Rilasciare tutte le risorse hardware richieste MiniportInitializeEx.
Liberare le risorse di interrupt chiamando NdisMDeregisterInterruptEx.
Liberare qualsiasi memoria che MiniportInitializeEx ha allocata.
Arrestare la scheda di interfaccia di rete, a meno che la funzione miniportShutdownEx non abbia già ripristinato lo stato iniziale della scheda di interfaccia di rete.
Il diagramma seguente illustra lo scaricamento di un driver miniport.
MiniportHaltEx deve completare le operazioni necessarie per scaricare il driver prima di tornare. Se il driver miniport ha delle indicazioni di ricezione in sospeso (ovvero, ha ricevuto dati di rete che ha segnalato a NDIS ma che NDIS non ha ancora restituito), MiniportHaltEx non deve restituire il controllo fino a quando tali dati non vengono ritornati alla funzione MiniportReturnNetBufferLists del driver miniport.
La figura precedente mostra un set di chiamate che possono essere effettuate da una funzione MiniportHaltEx. Queste chiamate sono solo un subset delle chiamate che possono essere effettuate. Il set effettivo di chiamate dipende dalle azioni precedenti del driver miniport. Il driver miniport può effettuare queste stesse chiamate in MiniportInitializeEx se non riesce a inizializzare correttamente la scheda di rete a causa di problemi hardware o perché non può acquisire una risorsa necessaria. In tal caso, MiniportInitializeEx deve scaricare il driver annullando le azioni precedenti. In caso contrario, MiniportHaltEx annulla le azioni di MiniportInitializeEx.
L'elenco seguente descrive le chiamate necessarie per invertire determinate azioni che il driver miniport può eseguire:
Se il driver miniport ha registrato un interrupt, deve chiamare NdisMDeregisterInterruptEx.
Se il driver miniport configura un timer o dei timer, deve chiamare NdisCancelTimerObject per ogni timer creato. Se una chiamata a NdisCancelTimerObject ha esito negativo, è possibile che il timer sia già stato attivato. In questo caso, il driver miniport deve attendere il completamento del gestore timer prima di tornare da MiniportHaltEx.
Se il driver miniport ha allocato qualsiasi memoria con NdisAllocateMemoryWithTagPriority, deve chiamare NdisFreeMemory per liberare tale memoria.
Se il driver miniport ha allocato qualsiasi memoria con NdisMAllocateSharedMemoryo NdisMAllocateSharedMemoryAsyncEx, deve chiamare NdisMFreeSharedMemory per liberare tale memoria.
Se il driver miniport ha allocato e inizializzato lo spazio di archiviazione per un pool di descrittori di pacchetti con NdisAllocateNetBufferPool, deve chiamare NdisFreeNetBufferPool per liberare quello spazio di archiviazione.
Se il driver miniport ha allocato o riservato qualsiasi risorsa hardware, queste devono essere restituite. Ad esempio, se il driver miniport ha eseguito il mapping di un intervallo di porte I/O in una scheda di interfaccia di rete, deve rilasciare le porte chiamando NdisMDeregisterIoPortRange.
Argomenti correlati
Stati dell'adattatore di un Driver Miniport
Interrompere un Adattatore Miniport
Stati e operazioni degli adattatori miniport
la reimpostazione e l'interruzione delle funzioni del driver Miniport