PROTOCOL_NET_PNP_EVENT funzione di callback (ndis.h)
NDIS chiama la funzione ProtocolNetPnPEvent per indicare un evento di rete Plug and Play, un evento NDIS PnP o un evento di risparmio energia a un driver di protocollo.
Sintassi
PROTOCOL_NET_PNP_EVENT ProtocolNetPnpEvent;
NDIS_STATUS ProtocolNetPnpEvent(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
)
{...}
Parametri
[in] ProtocolBindingContext
Handle in un'area di contesto allocata da protocollo-driver in cui questo driver gestisce le informazioni sullo stato di runtime per binding. Il driver del protocollo ha fornito questo handle quando ha chiamato la funzione NdisOpenAdapterEx . Un evento NetEventXxx indicato con un protocollo NULLBindingContext si applica a tutte le associazioni. NetEventBindList e NetEventBindsComplete sono sempre indicati con un protocollo NULLBindingContext. NetEventReconfigure può essere indicato con un protocollo ProtocolBindingContext specificato o con un protocollo NULLBindingContext.
[in] NetPnPEventNotification
Puntatore a NET_PNP_EVENT_NOTIFICATION struttura che descrive l'evento Plug and Play o l'evento power Management che indica NDIS al driver del protocollo.
Valore restituito
ProtocolNetPnPEvent può restituire uno dei seguenti elementi:
Codice restituito | Descrizione |
---|---|
|
Il driver del protocollo ha gestito correttamente l'evento di rete indicato Plug and Play, l'evento NDIS PnP o l'evento di risparmio energia. Il significato di questo codice di stato dipende dal codice NetEvent nel buffer NET_PNP_EVENT_NOTIFICATION struttura in NetPnPEvent:
|
|
Il driver del protocollo restituirà la risposta all'evento indicato in modo asincrono con una chiamata all'oggetto Funzione NdisCompleteNetPnPEvent . |
|
Il driver del protocollo non è riuscito a ottenere le risorse di sistema necessarie per soddisfare l'evento Plug and Play o Power Management indicato. |
|
I driver di protocollo NDIS 6.0 e versioni successive non devono restituire questo stato. NDIS 5. x protocol driver che non supporta Plug and Play può restituire questo stato in risposta a un netEventSetPower per indicare che NDIS deve annullare l'associazione dall'adattatore sottostante. |
|
Il driver del protocollo ha avuto esito negativo sull'evento indicato per motivi diversi da quelli indicati nell'elenco precedente. |
Un driver di protocollo può non riuscire gli eventi NetEventQueryRemoveDevice e NetEventPortActivation .
Se un driver di protocollo non riesce l'evento NetEventPortActivation , non deve usare alcuna porta associata nelle operazioni successive.
Un driver di protocollo deve sempre avere esito positivo sugli eventi NetEventRestart, NetEventIMReEnableDevice, NetEventCancelRemoveDevice, NetEventBindList, NetEventBindList, NetEventBindsComplete, NetEventPause, NetEventPortDeactivation e NetEventPnPCapabilities restituendo NDIS_STATUS_SUCCESS.
Commenti
La funzione ProtocolNetPnPEvent è necessaria nei driver di protocollo per supportare Plug and Play e Power Management. NDIS chiama ProtocolNetPnPEvent per notificare a un driver di protocollo che si è verificato un evento di rete Plug and Play, un evento NDIS PnP o Power Management.
The NET_PNP_EVENT_NOTIFICATION struttura passata a ProtocolNetPnPEvent descrive l'evento. ProtocolNetPnPEvent interpreta due elementi di base delle informazioni nella struttura NET_PNP_EVENT_NOTIFICATION:
- Codice nel membro NetEvent che identifica il tipo di evento Plug and Play o Power Management.
- Informazioni specifiche dell'evento. Ad esempio, con un evento NetEventSetPower il membro Buffer contiene lo stato di alimentazione del dispositivo a cui il dispositivo sta passando.
Un driver di protocollo deve sempre avere esito positivo su un evento NetEventQueryPower . Dopo aver stabilito una connessione attiva, un driver del protocollo può chiamare la funzione PoRegisterSystemState per registrare uno stato continuamente occupato. Purché la registrazione dello stato sia effettiva, il power manager non tenta di mettere il sistema in sospensione. Dopo che la connessione diventa inattiva, il driver del protocollo annulla la registrazione dello stato chiamando la funzione PoUnregisterSystemState . Un driver di protocollo non deve mai tentare di impedire al sistema di passare allo stato di sospensione eseguendo un evento NetEventQueryPower . Si noti che un evento NetEventQueryPower è sempre seguito da un evento NetEventSetPower . Un evento NetEventSetPower che specifica lo stato corrente del dispositivo sottostante annulla l'evento NetEventQueryPower .
Se un driver di protocollo non può rilasciare un dispositivo (ad esempio, perché il dispositivo è in uso) deve non riuscire un evento NetEventQueryRemoveDevice restituito NDIS_STATUS_FAILURE.
Un driver di protocollo deve sempre avere esito positivo su NetEventCancelRemoveDevice, netEventReconfigure, NetEventBindList, NetEventBindsComplete, NetEventPnPCapabilities, NetEventPause o NetEventPortDeactivation restituendo NDIS_STATUS_SUCCESS.
Quando si gestisce un oggetto NetEventReconfigure o netEventBindList, un driver di protocollo deve convalidare i dati associati all'evento. Per altre informazioni su tali dati, vedere NET_PNP_EVENT_NOTIFICATION.
NDIS chiama ProtocolNetPnPEvent in IRQL = PASSIVE_LEVEL.
Esempi
Per definire una funzione ProtocolNetPnPEvent , è 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 ProtocolNetPnPEvent denominata "MyNetPnPEvent", usare il tipo di PROTOCOL_NET_PNP_EVENT come illustrato in questo esempio di codice:
PROTOCOL_NET_PNP_EVENT MyNetPnPEvent;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
NDIS_STATUS
MyNetPnPEvent(
NDIS_HANDLE ProtocolBindingContext,
PNET_PNP_EVENT_NOTIFICATION NetPnPEvent
)
{...}
Il tipo di funzione PROTOCOL_NET_PNP_EVENT è 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 PROTOCOL_NET_PNP_EVENT 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 |