Condividi tramite


MINIPORT_HALT funzione di callback (ndis.h)

NDIS chiama la funzione MiniportHaltEx di un driver miniport per liberare risorse quando viene rimossa una scheda miniport e per arrestare l'hardware. Questa funzione inserisce il miniport nello stato Stoped, in cui nessun altro callback può verificarsi (incluso MiniportShutdownEx). Per altre informazioni sugli stati dei driver miniport, vedere Stati e operazioni dell'adattatore Miniport.

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

Sintassi

MINIPORT_HALT MiniportHalt;

void MiniportHalt(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HALT_ACTION HaltAction
)
{...}

Parametri

[in] MiniportAdapterContext

Handle in un'area di contesto allocata dal driver miniport nella funzione MiniportInitializeEx . Il driver miniport usa questa area di contesto per mantenere le informazioni sullo stato per un adattatore miniport.

[in] HaltAction

Motivo per arrestare l'adattatore miniport. Può essere uno dei valori seguenti:

NdisHaltDeviceDisabled

NDIS arresta l'adattatore miniport in risposta a un messaggio di rimozione di Plug and Play (PnP).

NdisHaltDeviceInstanceDeInitialized

NDIS arresta l'adattatore miniport in risposta a un driver intermedio che chiama il Funzione NdisIMDeInitializeDeviceInstance .

NdisHaltDevicePoweredDown

NDIS arresta l'adattatore miniport perché il sistema sta andando a uno stato di sospensione.

NdisHaltDeviceSurpriseRemoved

L'adattatore miniport è stato rimosso e l'hardware non è presente.

NdisHaltDeviceFailed

L'adattatore miniport viene rimosso a causa di un errore hardware. Il driver miniport ha chiamato la funzione NdisMRemoveMiniport o un driver del bus non ha attivato la scheda di interfaccia di rete in ripresa.

NdisHaltDeviceInitializationFailed

Impossibile inizializzare l'adattatore miniport per un motivo sconosciuto dopo il completamento della funzione MiniportInitializeEx .

NdisHaltDeviceStopped

NDIS arresta l'adattatore miniport in risposta a un messaggio di arresto del dispositivo PnP.

Valore restituito

nessuno

Osservazioni

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

NDIS può chiamare MiniportHaltEx in qualsiasi momento dopo che la funzione MiniportInitializeEx di un driver restituisce correttamente. Se il driver controlla una scheda di interfaccia di rete fisica, MiniportHaltEx deve arrestare la scheda di interfaccia di rete. Se un driver intermedio NDIS chiama La funzione NdisIMDeInitializeDeviceInstance , NDIS chiama la funzione MiniportHaltEx per il dispositivo virtuale del driver.

MiniportHaltEx deve liberare tutte le risorse allocate in MiniportInitializeEx per un dispositivo. MiniportHaltEx libera anche qualsiasi altra risorsa allocata dal driver nelle operazioni successive per tale dispositivo. Il driver deve chiamare i reciproca delle funzioni NdisXxx con cui ha originariamente allocato le risorse. Come regola generale, una funzione MiniportHaltEx deve chiamare le funzioni NdisXxx reciproche in ordine inverso per le chiamate effettuate dal driver MiniportInitializeEx.

Se una scheda di interfaccia di rete genera interruzioni, la funzione MiniportHaltEx di un driver miniport può essere preceduta dalla funzione MiniportInterrupt del driver fino alla chiamata miniportHaltEx all'oggetto La funzione NdisMDeregisterInterruptEx restituisce . Tale funzione MiniportHaltEx di tale driver deve disabilitare gli interruzioni e chiamare NdisMDeregisterInterruptEx non appena possibile. Si noti che un driver può mantenere l'interruzione fino a quando Restituisce NdisMDeregisterInterruptEx . NdisMDeregisterInterruptEx non viene restituito finché il driver non termina tutti i DPC pianificati (vedere la funzione MiniportInterruptDPC per altre informazioni).

Se il driver ha una funzione NetTimerCallback associata a un oggetto timer che potrebbe trovarsi nella coda timer di sistema, MiniportHaltEx deve chiamare la funzione NdisCancelTimerObject . Se NdisCancelTimerObject ha esito negativo, il timer potrebbe già essere stato attivato. In questo caso, il driver deve attendere il completamento della funzione timer prima che il driver venga restituito da MiniportHaltEx.

NDIS non chiama MiniportHaltEx se sono presenti richieste OID in sospeso o inviare richieste. NDIS invia altre richieste per il dispositivo interessato dopo che NDIS chiama MiniportHaltEx.

Se il driver deve attendere il completamento di qualsiasi operazione, MiniportHaltEx può usare la funzione NdisWaitEvent o la funzione NdisMSleep .

NDIS chiama MiniportHaltEx in IRQL = PASSIVE_LEVEL.

Esempi

Per definire una funzione MiniportHaltEx , è 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 MiniportHaltEx denominata "MyHaltEx ", usare il tipo di MINIPORT_HALT , come illustrato nell'esempio di codice seguente:

MINIPORT_HALT MyHaltEx;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
VOID
 MyHaltEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HALT_ACTION  HaltAction
    )
  {...}

Il tipo di funzione MINIPORT_HALT è 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_HALT 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 PASSIVE_LEVEL
Regole di conformità DDI WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Vedi anche

Stati dell'adattatore di un driver Miniport

Arresto di un adattatore Miniport

Stati e operazioni dell'adattatore miniport

Funzione di reimpostazione e arresto del driver miniport

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback