Condividi tramite


MINIPORT_UNLOAD funzione di callback (ndis.h)

NDIS chiama la funzione MiniportDriverUnload di un driver miniport per richiedere al driver di rilasciare le risorse prima che il sistema completi un'operazione di scaricamento del driver.

Nota È necessario dichiarare la funzione usando il tipo di MINIPORT_UNLOAD . Per altre informazioni, vedere la sezione Esempi seguente.
 

Sintassi

MINIPORT_UNLOAD MiniportUnload;

void MiniportUnload(
  [in] PDRIVER_OBJECT DriverObject
)
{...}

Parametri

[in] DriverObject

Puntatore a una struttura DRIVER_OBJECT che rappresenta l'oggetto driver del driver.

Valore restituito

nessuno

Osservazioni

Un driver specifica il punto di ingresso MiniportDriverUnload quando chiama Funzione NdisMRegisterMiniportDriver .

L'oggetto driver associato a un driver miniport NDIS specifica una routine Unload . Il sistema operativo chiama la routine Scarica quando tutti i dispositivi i servizi driver miniport sono stati rimossi. NDIS fornisce la routine Unload per i driver NDIS. NDIS chiama la funzione MiniportDriverUnload di un driver miniport dalla routine Unload .

La funzionalità della routine Scarica è specifica del driver. Come regola generale, MiniportDriverUnload deve annullare le operazioni eseguite nella routine DriverEntry del driver.

Un driver miniport chiama il Funzione NdisMDeregisterMiniportDriver da MiniportDriverUnload.

Oltre a NdisMDeregisterMiniportDriver, un driver intermedio chiama anche Funzione NdisDeregisterProtocolDriver per annullare la registrazione dell'interfaccia del protocollo del driver. MiniportDriverUnload deve eseguire anche tutte le operazioni di pulizia necessarie, ad esempio la deallocazione di qualsiasi risorsa dell'interfaccia del driver del protocollo.

Se un driver miniport gestisce più di un'istanza del dispositivo, ad esempio un driver di bilanciamento del carico, NDIS non chiamerà MiniportDriverUnload fino a quando NDIS chiama la funzione MiniportHaltEx una volta per ogni istanza del dispositivo.

NDIS chiama MiniportDriverUnload in IRQL = PASSIVE_LEVEL.

Esempi

Per definire una funzione MiniportDriverUnload , è innanzitutto necessario fornire una dichiarazione di funzione che identifica il tipo di funzione che si sta definendo. Windows fornisce un set di tipi di funzione per i driver. La dichiarazione di una funzione con i tipi di funzione consente di eseguire l'analisi del codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica rilevano gli errori ed è un requisito per la scrittura dei driver per il sistema operativo Windows.

Ad esempio, per definire una funzione MiniportDriverUnload denominata "MyDriverUnload", usare il tipo di MINIPORT_UNLOAD come illustrato nell'esempio di codice seguente:

MINIPORT_UNLOAD MyDriverUnload;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
VOID
 MyDriverUnload(
    PDRIVER_OBJECT  DriverObject
    )
  {...}

Il tipo di funzione MINIPORT_UNLOAD è definito nel file di intestazione Ndis.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 utilizzate le annotazioni applicate al tipo di funzione MINIPORT_UNLOAD nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver NDIS.

Per informazioni sulle Use_decl_annotations, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Windows
Intestazione ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL

Vedi anche

DRIVER_OBJECT

MiniportHaltEx

NdisDeregisterProtocolDriver

NdisMDeregisterMiniportDriver

NdisMRegisterMiniportDriver

Scaricare