Condividi tramite


MINIPORT_RESET funzione di callback (ndis.h)

Avviso

Le funzioni di callback MiniportResetEx e MiniportCheckForHangEx 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 una funzione miniport miniport MiniportResetEx di NDIS per avviare una reimpostazione di una scheda di interfaccia di rete (NIC). Per altre informazioni, vedere Controllo adattatore miniport per operazioni di blocco e reimpostazione e reimpostazione dell'hardware del driver miniport.

Nota Un driver miniport NDIS può dichiarare questa funzione usando il tipo di MINIPORT_RESET .
 

Sintassi

MINIPORT_RESET MiniportReset;

NDIS_STATUS MiniportReset(
  [in]  NDIS_HANDLE MiniportAdapterContext,
  [out] PBOOLEAN AddressingReset
)
{...}

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.

[out] AddressingReset

Puntatore a una variabile booleana. Il driver miniport imposta questa variabile su TRUE se NDIS deve chiamare la funzione MiniportOidRequest per ripristinare l'indirizzamento e altre impostazioni di configurazione ai valori correnti. Per altre informazioni, vedere Reimpostazione hardware.

Valore restituito

MiniportResetEx può restituire uno dei valori di stato seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS

MiniportResetEx reimposta correttamente l'adattatore miniport in uno stato operativo.

NDIS_STATUS_PENDING
Il driver completa l'operazione di reimpostazione in modo asincrono chiamando la funzione NdisMResetComplete al termine dell'operazione.
NDIS_STATUS_RESET_IN_PROGRESS

MiniportResetEx ha determinato che l'adattatore miniport è stato attualmente reimpostato, quindi questa chiamata è superflua.

NDIS_STATUS_SOFT_ERRORS
MiniportResetEx reimposta correttamente l'adattatore miniport, ma si è verificato un errore ripristinabile durante l'operazione. MiniportResetEx deve aver chiamato la funzione NdisWriteErrorLogEntry con altre informazioni sull'errore.
NDIS_STATUS_HARD_ERRORS
MiniportResetEx ha provato a reimpostare l'adattatore miniport, ma si è verificato un errore non recuperabile durante l'operazione. MiniportResetEx deve avere chiamato NdisWriteErrorLogEntry con altre informazioni sull'errore.

Commenti

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

MiniportResetEx non è obbligatorio per i driver intermedi.

MiniportResetEx può reimpostare i parametri dell'adattatore miniport. Se una reimpostazione causa una modifica nell'indirizzo della stazione dell'adattatore miniport, il driver miniport ripristina automaticamente il valore precedente dell'indirizzo della stazione dopo il completamento della reimpostazione. Qualsiasi maschera di indirizzamento multicast o funzionale, reimpostata dall'hardware, non deve essere reimpostata in questa funzione.

Se un'operazione di reimpostazione modifica altre informazioni, ad esempio informazioni sull'indirizzamento multicast o funzionale, MiniportResetEx deve impostare la variabile in AddressingReset su TRUE prima che venga restituita. In questo modo NDIS chiama la funzione MiniportOidRequest per ripristinare le informazioni. NDIS ripristina anche l'elenco di modelli Wake on the LAN (WoL) chiamando OID_PNP_ADD_WAKE_UP_PATTERN. Il driver deve liberare l'elenco di modelli WoL dal contesto dell'adattatore perché l'elenco hardware è già reimpostato.

NDIS non interromperà le richieste OID in sospeso o inviano richieste. Se il driver può completare in modo sicuro l'OID in sospeso o inviare richieste dopo una reimpostazione, il driver può contenere OID in sospeso o inviare richieste fino al completamento dell'operazione di reimpostazione. In caso contrario, il driver deve completare l'OID in sospeso o inviare richieste chiamando NdisMOidRequestComplete o Funzioni NdisMSendNetBufferListsComplete rispettivamente prima che MiniportResetEx restituisca.

Nota A partire da NDIS 6.30, il driver miniport non deve contenere OID in sospeso o inviare richieste fino al completamento dell'operazione di reimpostazione. Al contrario, il driver deve completare queste richieste in sospeso chiamando rispettivamente le funzioni NdisMOidRequestComplete o NdisMSendNetBufferListsComplete prima del completamento dell'operazione di reimpostazione. Se il driver completa l'operazione di reimpostazione in modo asincrono, deve completare l'OID in sospeso e inviare richieste prima che il driver chiami NdisMResetComplete.
 
Un driver miniport non deve chiamare la funzione NdisMIndicateStatusEx per segnalare l'inizio e la fine di ogni operazione di reimpostazione. NDIS notifica i driver del protocollo associati quando inizia e termina una reimpostazione.

Se MiniportResetEx deve attendere le modifiche dello stato nell'adattatore miniport durante le operazioni di reimpostazione, può chiamare la funzione NdisStallExecution . Tuttavia, un
La funzione MiniportResetEx non deve chiamare NdisStallExecution con un intervallo di tempo maggiore di 50 microsecondi. Se il driver deve attendere più di 50 microsecondi (o se esegue il polling), deve impostare un timer e restituire NDIS_STATUS_PENDING.

Se MiniportResetEx restituisce NDIS_STATUS_PENDING, il driver deve completare la reimpostazione chiamando la funzione NdisMResetComplete .

Se un adattatore miniport si trova nello stato MediaConnectStateConnected e lo stato cambia a causa di una reimpostazione, inclusa una modifica allo stato MediaConnectStateUnknown , il driver miniport deve segnalare la modifica dello stato con un'indicazione di stato NDIS_STATUS_LINK_STATE . Il driver miniport deve anche indicare un'indicazione di stato mediaConnectStateConnected quando il collegamento viene riabilitato dopo la reimpostazione.

MiniportResetEx può essere preceduto da un interruzione.

NDIS chiama periodicamente la funzione MiniportCheckForHangEx per determinare se deve chiamare MiniportResetEx. Il timeout predefinito per chiamare MiniportCheckForHangEx è di 2 secondi. Se questo valore predefinito è troppo breve, un driver miniport può impostare un valore checkForHangTimeInSeconds maggiore quando si chiama il
Funzione NdisMSetMiniportAttributes durante l'inizializzazione. Per altre informazioni, vedere Controllo adattatore miniport per operazioni di blocco e reimpostazione.

NDIS non può determinare se una scheda di interfaccia di rete è stata arrestata per le operazioni di ricezione. Per gestire questo tipo di errore, la funzione MiniportCheckForHangEx può monitorare le operazioni di ricezione e, se necessario, restituire TRUE per forzare una reimpostazione. Un miniport può anche richiedere una reimpostazione chiamando NdisMResetMiniport.

NDIS chiama MiniportResetEx in IRQL <= DISPATCH_LEVEL.

Esempi

Per definire una funzione MiniportResetEx , è prima necessario specificare 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 MiniportResetEx denominata "MyResetEx", usare il tipo di MINIPORT_RESET come illustrato in questo esempio di codice:

MINIPORT_RESET MyResetEx;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
NDIS_STATUS
 MyResetEx(
    NDIS_HANDLE  MiniportAdapterContext,
    PBOOLEAN  AddressingReset
    )
  {...}

Il tipo di funzione MINIPORT_RESET è 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_RESET 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 <= DISPATCH_LEVEL

Vedi anche

Controllo dell'adattatore miniport per l'blocco e la reimpostazione delle operazioni

Reimpostazione hardware del driver miniport

MiniportCheckForHangEx

MiniportInitializeEx

MiniportOidRequest

NDIS_STATUS_LINK_STATE

NdisMIndicateStatusEx

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisMResetComplete

NdisMResetMiniport

NdisMSendNetBufferListsComplete

NdisMSetMiniportAttributes

NdisStallExecution

NdisWriteErrorLogEntry