Funzione NdisMIndicateStatus (ndis.h)
Nota NDIS 5. x è stato deprecato e sostituito da NDIS 6. x. Per i nuovi driver NDIS, vedere Driver di rete a partire da Windows Vista. Per informazioni sulla conversione di NDIS 5. driver x a NDIS 6. x, vedere Porting NDIS 5.x Drivers to NDIS 6.0.
NdisMIndicateStatus indica le modifiche apportate allo stato di una scheda di interfaccia di rete a driver NDIS di livello superiore.
Sintassi
void NdisMIndicateStatus(
[in] NDIS_HANDLE MiniportHandle,
[in] NDIS_STATUS GeneralStatus,
[in] PVOID StatusBuffer,
[in] UINT StatusBufferSize
);
Parametri
[in] MiniportHandle
Specifica l'input originale dell'handle per MiniportInitialize.
[in] GeneralStatus
Specifica il valore NDIS_STATUS_ XXX che indica la modifica generale dello stato della scheda di interfaccia di rete.
[in] StatusBuffer
Puntatore a un buffer allocato dal chiamante contenente dati specifici del supporto e dipendenti dal valore di GeneralStatus. Indica informazioni dettagliate sulla modifica dello stato.
[in] StatusBufferSize
Specifica le dimensioni in byte del buffer in StatusBuffer.
Valore restituito
Nessuno
Osservazioni
Quando un driver miniport chiama NdisMIndicateStatus, NDIS chiama la funzione protocolStatus di ogni protocollo associato. Ciò consente a un driver di protocollo associato o, eventualmente, al gestore di configurazione di registrare la modifica dello stato di una scheda di interfaccia di rete sottostante o di intraprendere un'azione correttiva. Ad esempio, un protocollo potrebbe chiamare NdisReset, a seconda del NDIS_STATUS_ XXX indicato.
Quando un driver miniport chiama NdisMIndicateStatus per segnalare una modifica dello stato della scheda di interfaccia di rete, NDIS può chiamare la funzione MiniportReset per provare a ripristinare la scheda di interfaccia di rete in una condizione di lavoro. In questi casi, NDIS può chiamare protocolli associati solo con NDIS_STATUS_RESET_START e versioni successive con NDIS_STATUS_RESET_END, anziché con il GeneralStatus indicato dal driver miniport.
NdisMIndicateStatus fornisce due informazioni:
- Valore di stato complessivo che indica la modifica generale dello stato.
- Motivo specifico del cambiamento generale, che può essere specifico della rete. Ad esempio, gli errori di inserimento circolare sono specifici per le reti Token Ring (802.5), ma sono irrilevanti per le schede di interfaccia di rete Ethernet (802.3) e i relativi driver.
Un driver miniport può anche chiamare NdisMIndicateStatus per indicare problemi come cavi che sono stati rimossi accidentalmente e poi reinseriti o un anello che ha temporaneamente avuto esito negativo. Si supponga, ad esempio, che si verifichino entrambe le condizioni seguenti:
Il driver miniport chiama NdisMIndicateStatus con NDIS_STATUS_RING_STATUS.
Il StatusBuffer contiene uno dei valori di stato seguenti:
- NDIS_RING_LOBE_WIRE_FAULT
- NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS
Dopo che tale modifica dello stato è stata segnalata con un'indicazione, le soglie o i contatori delle statistiche associati rimangono invariati.
Un driver miniport non può chiamare NdisMIndicateStatus nel contesto della funzioneMiniportISR, MiniportHalto miniportShutdown. Solo un driver miniport deserializzato può chiamare NdisMIndicateStatus nel contesto della relativa funzione MiniportInitialize.
Un driver miniport deve rilasciare qualsiasi blocco di selezione che sta tenendo premuto prima di chiamare NdisMIndicateStatus.
I chiamanti serializzati di NdisMIndicateStatus devono essere eseguiti in IRQL = DISPATCH_LEVEL. I chiamanti deserializzati di NdisMIndicateStatus devono essere eseguiti in IRQL <= DISPATCH_LEVEL.
indicante la perdita e il ripristino di una connessione di rete
Quando un driver miniport rileva che la connessione di rete è stata persa, deve chiamare NdisMIndicateStatus con NDIS_STATUS_MEDIA_DISCONNECT. Quando la connessione viene ripristinata, il driver miniport deve chiamare NdisMIndicateStatus con NDIS_STATUS_MEDIA_CONNECT.
Nota 802.11 driver miniport devono seguire le linee guida sullo stato dei supporti per le reti LAN wireless durante la generazione di indicazioni di connessione di rete. Per altre informazioni su queste linee guida, vedere Media Status Indications for 802.11 Networks.
802.11 Wireless LAN Miniport Driver Calls to NdisMIndicateStatus
I driver miniport wireless LAN (WLAN) 802.11 possono fare varie indicazioni specifiche per i supporti WLAN. Ad esempio, il driver miniport può fare un'indicazione specifica WLAN quando si verifica quanto segue:
- Il driver rileva che la potenza del segnale ricevuta dell'associazione BSS corrente è stata modificata.
- Il driver rileva un errore MIC TKIP in un pacchetto ricevuto.
I seguenti tipi di indicazioni specifiche DELLA WLAN possono essere effettuati da driver miniport 802.11 con NdisMIndicateStatus:
- indicazioni RSSI
- indicazioni di autenticazione
- indicazioni elenco candidati PMKID
- indicazioni di streaming multimediale
- indicazioni sullo stato radio
Per altre informazioni su queste indicazioni specifiche dei supporti, vedere 802.11 Media-Specific Indicazioni sullo stato.
chiamate al driver miniport WAN a NdisMIndicateStatus
La maggior parte dei driver della scheda di interfaccia di rete WAN indica lo stato con alcuni codici di stato speciali e il contenuto del buffer. Queste indicazioni sullo stato vengono generate dai driver della scheda di interfaccia di rete WAN e i driver di protocollo NDIS associati a tale driver miniport possono ignorare queste indicazioni. Tuttavia, l'elaborazione corretta di queste indicazioni comporta in genere prestazioni migliorate per i protocolli e per i driver della scheda di interfaccia di rete WAN.
I quattro tipi di indicazioni specifiche della rete WAN seguenti possono essere inviati ai driver di protocollo associati con NdisMIndicateStatus:
- Schierare
- Linea verso il basso
- Frammento
- Evento line TAPI
NDIS_STATUS_WAN_LINE_UP
Un driver miniport WAN indica una linea ogni volta che un nuovo collegamento diventa attivo. Fino a quando non si verifica questo problema, la scheda di interfaccia di rete accetterà i fotogrammi e li lascerà avere esito positivo o negativo, ma è improbabile che vengano effettivamente ricevuti da qualsiasi nodo remoto. Fino a quando non si verifica questo problema, i protocolli dovrebbero ridurre i timer e i conteggi dei tentativi per interrompere rapidamente eventuali tentativi di connessione in uscita.
Il driver miniport WAN indica questa indicazione con NdisMIndicateStatus prima che venga restituita dalla richiesta di OID_TAPI_GET_ID.
Il codice di stato per l'indicazione di riga è NDIS_STATUS_WAN_LINE_UP. Il buffer in corrispondenza StatusBuffer viene formattato come struttura NDIS_MAC_LINE_UP.
NDIS_STATUS_WAN_LINE_DOWN
Un driver miniport WAN indica una linea verso il basso ogni volta che un collegamento si arresta. In questo caso, i protocolli associati devono ridurre i timer e i conteggi dei tentativi fino all'indicazione di riga successiva.
Il codice di stato per l'indicazione della riga verso il basso è NDIS_STATUS_WAN_LINE_DOWN. Il buffer in corrispondenza StatusBuffer viene formattato come struttura NDIS_MAC_LINE_DOWN.
NDIS_STATUS_WAN_FRAGMENT
Un driver miniport WAN indica un frammento ogni volta che riceve un pacchetto parziale dal nodo remoto. In questo caso, un protocollo associato deve inviare frame al nodo remoto che invierà una notifica a questa situazione, invece di attendere un timeout.
Il codice di stato per l'indicazione del frammento è NDIS_STATUS_WAN_FRAGMENT. Il buffer in corrispondenza StatusBuffer viene formattato come struttura NDIS_MAC_FRAGMENT.
I monitoraggi NDISWAN eliminano i pacchetti contando il numero di indicazioni di frammento su ogni collegamento.
NDIS_TAPI_EVENT
Un driver miniport WAN deve usare un valore GeneralStatus di NDIS_STATUS_TAPI_INDICATION per le indicazioni di stato TAPI . Il buffer in StatusBuffer viene formattato come struttura NDIS_TAPI_EVENT.
- Piattaforma di destinazione: universal
- Versione: non supportata per i driver NDIS 6.0 in Windows Vista. Usare NdisMIndicateStatusEx. Supportato per i driver NDIS 5.1 in Windows Vista e Windows XP.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | ndis.h (include Ndis.h) |
libreria | Ndis.lib |