Controllo dell'adapter Miniport per operazioni di blocco e reimpostazione

Panoramica

Avviso

Le operazioni check-for-Hang (CFH) e Reset sono sconsigliate per tutti i driver NDIS 6.83 e versioni successive. Per altre informazioni, vedere Operazioni check-for-hang e reset in NDIS 6.83 e versioni successive.

NDIS chiama la funzione MiniportCheckForHangEx di un driver NDIS per controllare lo stato operativo di una scheda NDIS che rappresenta una scheda di interfaccia di rete. MiniportCheckForHangEx controlla lo stato interno dell'adattatore e restituisce TRUE se rileva che l'adattatore non funziona correttamente.

Per impostazione predefinita, NDIS chiama MiniportCheckForHangEx circa ogni 2 secondi. Se MiniportCheckForHangEx restituisce TRUE, NDIS chiama la funzione MiniportResetEx del driver NDIS. Se il valore di timeout predefinito di 2 secondi è troppo piccolo, il driver miniport può impostare un valore diverso al momento dell'inizializzazione come indicato di seguito:

  1. Impostare il membro CheckForHangTimeInSeconds della struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES su un valore diverso da zero.
  2. Passare la struttura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES nel parametro MiniportAttributes della funzione NdisMSetMiniportAttributes .

Per altre informazioni sull'impostazione degli attributi del driver, vedere Inizializzazione di un adapter. Il valore di CheckForHangTimeInSeconds deve essere maggiore del tempo di inizializzazione del driver miniport. Tuttavia, se il driver richiede più di checkForHangTimeInSeconds secondi per l'inizializzazione, questo timeout scade, causando la chiamata della funzione MiniportCheckForHangEx del driver. Se MiniportCheckForHangEx restituisce TRUE, NDIS chiamerà la funzione MiniportResetEx del driver. Per questo motivo, devi sincronizzare la funzione MiniportCheckForHangEx del driver con l'inizializzazione del driver in modo che MiniportCheckForHangEx non restituisca TRUE se il driver non ha terminato l'inizializzazione.

Se il driver miniport non completa una richiesta OID entro due chiamate successive a MiniportCheckForHangEx, NDIS può chiamare la funzione MiniportResetEx del driver. Per alcune richieste OID, NDIS chiama MiniportResetEx se il driver non completa la richiesta entro quattro chiamate successive a MiniportCheckForHangEx.

L'operazione di reimpostazione non influisce sugli stati operativi dell'adattatore miniport. Inoltre, lo stato dell'adattatore potrebbe cambiare mentre è in corso un'operazione di reimpostazione. Ad esempio, NDIS potrebbe chiamare la funzione MiniportPause di un driver quando è in corso un'operazione di reimpostazione. In questo caso, il driver può completare la reimpostazione o l'operazione di sospensione in qualsiasi ordine seguendo i normali requisiti per ogni operazione.

Per un'operazione di reimpostazione, il driver può non riuscire a trasmettere pacchetti di richiesta oppure può mantenerli in coda e completarli in un secondo momento. Tuttavia, è necessario notare che un driver overlying non può completare un'operazione di sospensione mentre i pacchetti di trasmissione sono in sospeso.

Un driver miniport può completare una richiesta di reimpostazione in modo sincrono restituendo uno stato di esito positivo o negativo. Il driver può completare una richiesta di reimpostazione in modo asincrono restituendo NDIS_STATUS_PENDING. In questo caso, il driver deve chiamare NdisMResetComplete per completare l'operazione.

Operazioni check-for-hang e reset in NDIS 6.83 e versioni successive

Nelle versioni di NDIS precedenti alla 6.83, le operazioni Check-for-Hang (CFH) e Reset erano sconsigliate per i sistemi Always On, Always Connected (AOAC) a causa di problemi di durata della batteria. Tuttavia, i driver potrebbero comunque usare CFH in altri sistemi Windows non AOAC implementando le funzioni di callback facoltative MiniportCheckForHangEx e MiniportResetEx .

A partire da NDIS 6.83, queste funzioni di callback sono sconsigliate in tutti i sistemi Windows indipendentemente dalle funzionalità di alimentazione. Anche se non si tratta di una violazione del test del logo per usare CFH in NDIS 6.83 e versioni successive, i driver NDIS devono usare la tabella seguente per indicazioni sull'utilizzo.

Chiamante Recommendation Note
Driver destinati ai sistemi AOAC Non deve implementare Causa problemi di durata della batteria a causa di un controllo periodico dell'attività di blocco
Driver destinati ai sistemi Windows Server Non deve implementare Causa problemi quando la CPU è stressata
Driver miniport virtuali (solo software) Non deve implementare Ripristino non possibile senza hardware
Altri nuovi driver NDIS 6.83 e versioni successive Non deve implementare
Altro codice NDIS 6.82 e versioni precedenti Non è necessario modificare, ma è consigliabile rimuovere Check-for-Hang e Reset nelle rielaborazioni future

Reimpostazione hardware del driver Miniport

Funzioni di ripristino e interruzione del driver Miniport