Condividi tramite


MINIPORT_CHECK_FOR_HANG funzione di callback (ndis.h)

Avviso

Le funzioni di callback MiniportCheckForHangEx e MiniportResetEx 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 miniport per controllare lo stato operativo della scheda miniport che rappresenta una scheda di interfaccia di rete (NIC).

Nota Un driver miniport può dichiarare questa funzione usando il tipo di MINIPORT_CHECK_FOR_HANG .
 
Nota A partire da NDIS 6.30, questa funzione non deve essere registrata per i driver in esecuzione su piattaforme SoC a basso consumo per evitare un impatto negativo sull'alimentazione causato dall'attività periodica Check-for-Hang .
 

Sintassi

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

Parametri

[in] MiniportAdapterContext

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

Valore restituito

MiniportCheckForHangEx restituisce TRUE se il driver determina che una scheda di interfaccia di rete non funziona e NDIS deve chiamare la funzione MiniportResetEx del driver. Per altre informazioni, vedere la sezione Osservazioni.

Commenti

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

MiniportCheckForHangEx non è necessario per i driver intermedi.

MiniportCheckForHangEx non esegue altro che controllare lo stato interno della scheda di interfaccia di rete e restituire TRUE se rileva che la scheda di interfaccia di rete non funziona correttamente.

Per impostazione predefinita, NDIS chiama MiniportCheckForHangEx circa ogni due secondi. Per questo motivo, la funzione MiniportCheckForHangEx del driver miniport dovrebbe restituire il più rapidamente possibile.

Nota A partire da NDIS 6.30, viene usato un timer coalescable con tolleranza elevata per misurare gli intervalli tra le chiamate a MiniportCheckForHangEx. Pertanto, questa routine non deve essere utilizzata per operazioni sensibili al tempo.
 
Se MiniportCheckForHangEx restituisce TRUE, NDIS chiama la funzione MiniportResetEx del driver miniport .

Se un driver miniport non completa una richiesta OID entro due chiamate successive a MiniportCheckForHangEx, NDIS può chiamare la funzione MiniportResetEx del driver. Tuttavia, per evitare reimpostazioni non necessarie, la funzione MiniportInitializeEx del driver può estendere l'intervallo di timeout check-for-hang impostando un valore CheckForHangTimeInSeconds appropriato quando chiama il Funzione NdisMSetMiniportAttributes .

Per altre informazioni sull'impostazione del valore di timeout CheckForHangTimeInSeconds , vedere Miniport Adapter Check-for-Hang and Reset Operations.For More information about setting the CheckForHangTimeInSeconds timeout value, see Miniport Adapter Check-for-Hang and Reset Operations.

Nota A partire da NDIS 6.30, MiniportCheckForHangEx deve restituire TRUE se il driver miniport rileva che la scheda di interfaccia di rete non ha completato una richiesta di invio in sospeso prima della scadenza di un periodo di timeout. Il periodo di timeout è specifico del driver, ma è consigliabile usare un periodo di timeout di 2 secondi.
 
MiniportCheckForHangEx può essere preceduto da un interrupt.

NDIS chiama MiniportCheckForHangEx in IRQL = PASSIVE_LEVEL.

Esempi

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

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

Implementare quindi la funzione come segue:

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

Il tipo di funzione MINIPORT_CHECK_FOR_HANG è 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 assicura che vengano utilizzate le annotazioni applicate al tipo di funzione MINIPORT_CHECK_FOR_HANG 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

Controllo dell'adapter Miniport per operazioni di blocco e reimpostazione

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes