MINIPORT_SHUTDOWN funzione di callback (ndis.h)
NDIS chiama una funzione MiniportShutdownEx del driver miniport quando il sistema viene arrestato. Questa funzione inserisce il miniport nello stato di arresto, in cui nessun altro callback può verificarsi (incluso MiniportHaltEx). Per altre informazioni sugli stati dei driver miniport, vedere Stati e operazioni dell'adattatore Miniport.
Sintassi
MINIPORT_SHUTDOWN MiniportShutdown;
void MiniportShutdown(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
Parametri
[in] MiniportAdapterContext
Handle in un'area di contesto allocata dal driver miniport nella funzione MiniportInitializeEx . Il driver usa questa area di contesto per mantenere le informazioni sullo stato per un adattatore miniport.
[in] ShutdownAction
Motivo per cui NDIS ha chiamato la funzione di arresto. I valori seguenti sono validi:
NdisShutdownPowerOff
Indica che NDIS denominato MiniportShutdownEx perché il sistema viene arrestato.
NdisShutdownBugCheck
Indica che NDIS denominato MiniportShutdownEx a causa di un errore di sistema.
Valore restituito
nessuno
Osservazioni
Un driver specifica il punto di ingresso MiniportShutdownEx quando chiama Funzione NdisMRegisterMiniportDriver .
MiniportShutdownEx ripristina l'adattatore miniport in uno stato iniziale noto (lo stato prima di NDIS ha chiamato la funzione MiniportInitializeEx del driver miniport per l'adattatore miniport). Ciò assicura che l'adattatore miniport si trova in uno stato noto e pronto per essere reinizializzato quando il computer viene riavviato dopo un arresto del sistema per qualsiasi motivo, incluso un errore di sistema non recuperabile.
MiniportShutdownEx può leggere o scrivere in porte di I/O, spazio di I/O mappato alla memoria o spazio di configurazione specifico del bus chiamando la funzione NdisMGetBusData o NdisMSetBusData per disabilitare un motore DMA, disabilitare gli interruzioni o reimpostare l'hardware in uno stato noto in modo che l'hardware possa essere riavviato in modo sicuro.
Se NDIS chiama MiniportShutdownEx a causa di un errore non recuperabile, il parametro ShutdownAction è impostato su NdisShutdownBugCheck e MiniportShutdownEx è in esecuzione in un irQL elevato. In questo caso, il driver miniport non deve chiamare alcuna funzione NdisXxx , ad eccezione di quelle funzioni che possono essere chiamate in qualsiasi IRQL.
Se NDIS chiama MiniportShutdownEx a causa di un arresto avviato dall'utente, MiniportShutdownEx viene eseguito in IRQL = PASSIVE_LEVEL e il driver miniport può chiamare altre funzioni NdisXxx .
Se NDIS chiama MiniportShutdownEx a causa di un errore non recuperabile, il parametro ShutdownAction è impostato su NdisShutdownBugCheck e MiniportShutdownEx è in esecuzione in un irQL elevato. In questo caso, il driver miniport non deve chiamare alcuna funzione NdisXxx , ad eccezione di quelle funzioni che possono essere chiamate in qualsiasi IRQL. A partire da miniport NDIS 6.30, NDIS non chiama MiniportShutdownEx durante un BugCheck a meno che il miniport non fornisca il flag NDIS_MINIPORT_ATTRIBUTES_REGISTER_BUGCHECK_CALLBACK nei relativi attributi di registrazione dell'adattatore.
Se il valore di ShutdownAction è NdisShutdownPowerOff, il driver miniport può facoltativamente liberarne le risorse. Tuttavia, questo non è obbligatorio né incoraggiato, perché l'arresto del sistema rende non necessario.
Se il valore di ShutdownAction è NdisShutdownBugCheck, il driver miniport non deve liberare le risorse.
Esempi
Per definire una funzione MiniportShutdownEx , è prima 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 usando i tipi di funzione consente l'analisi del codice per i driver, il verifica driver statico (SDV) e altri strumenti di verifica trovano errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.Ad esempio, per definire una funzione MiniportShutdownEx denominata "MyShutdownEx ", usare il tipo di MINIPORT_SHUTDOWN come illustrato in questo esempio di codice:
MINIPORT_SHUTDOWN MyShutdownEx;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
VOID
MyShutdownEx(
NDIS_HANDLE MiniportAdapterContext,
NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
Il tipo di funzione MINIPORT_SHUTDOWN è definito nel file di intestazione Ndis.h. Per identificare in modo più accurato gli errori durante l'esecuzione degli 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 usate le annotazioni applicate al tipo di funzione MINIPORT_SHUTDOWN nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo per i driver NDIS.
Per informazioni su 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 (includere Ndis.h) |
IRQL | Vedere La sezione Osservazioni |
Vedi anche
Stati dell'adattatore di un driver Miniport
Arresto dell'adattatore miniport