PROTOCOL_CL_OPEN_AF_COMPLETE_EX funzione di callback (ndis.h)
La funzione ProtocolClOpenAfCompleteEx completa l'apertura di una famiglia di indirizzi avviata quando un client CoNDIS ha chiamato la funzione NdisClOpenAddressFamilyEx .
Sintassi
PROTOCOL_CL_OPEN_AF_COMPLETE_EX ProtocolClOpenAfCompleteEx;
void ProtocolClOpenAfCompleteEx(
[in] NDIS_HANDLE ProtocolAfContext,
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_STATUS Status
)
{...}
Parametri
[in] ProtocolAfContext
Handle fornito dal client all'area di contesto per un indirizzo AF. Il client ha allocato questa area di contesto e passato questo handle a NDIS nella sua chiamata al Funzione NdisClOpenAddressFamilyEx .
[in] NdisAfHandle
Handle fornito da NDIS a un oggetto AF, se status è NDIS_STATUS_SUCCESS. In caso contrario, questo parametro è NULL. Questo handle rappresenta un'associazione stabilita tra il client e un gestore chiamate associato a un adattatore miniport CoNDIS. Se l'handle non è NULL, il client deve salvare l'handle da usare nelle chiamate successive alle funzioni NdisClXxx e NdisCoXxx.
[in] Status
Lo stato finale della chiamata del client a NdisClOpenAddressFamilyEx, che può essere uno dei seguenti:
NDIS_STATUS_SUCCESS
L'AF è stato aperto, quindi il client può inizializzare lo stato in ProtocolAfContext e usare l'handle restituito da NdisAfHandle nelle chiamate successive alle funzioni NdisCl Xxx e NdisCoXxx, ad esempio NdisCoOidRequest.
NDIS_STATUS_RESOURCES
L'operazione richiesta non è riuscita perché NDIS o il gestore chiamate non è riuscito a allocare memoria sufficiente o inizializzare lo stato usato da uno di essi per tenere traccia dell'apertura del client dell'AF specificato da ProtocolAfContext .
NDIS_STATUS_FAILURE
NDIS non è riuscita la chiamata, probabilmente per uno dei motivi seguenti:
- L'AF specificato non corrisponde ad alcun af registrato per il driver miniport sottostante a cui è associato il chiamante.
- L'associazione dell'adattatore del chiamante è chiusa.
- Il gestore chiamate che ha registrato l'AF specificato chiude il relativo binding all'adattatore miniport sottostante.
Valore restituito
nessuno
Osservazioni
La funzione ProtocolClOpenAfCompleteEx è necessaria per i client CoNDIS. I client CoNDIS devono fornire ProtocolClOpenAfCompleteEx per completare le operazioni asincrone avviate dai client chiamando l'oggetto Funzione NdisClOpenAddressFamilyEx .
NDIS chiama ProtocolClOpenAfCompleteEx per indicare che si sono verificati alcuni o tutti i seguenti elementi:
- Se tutti i parametri del client La funzione ProtocolCoAfRegisterNotify passata alla funzione NdisClOpenAddressFamilyEx è valida, NDIS denominata funzione ProtocolCmOpenAf del gestore chiamate che ha appena registrato l'AF specificato con NDIS.
- Il gestore chiamate ha esaminato la specifica che la funzione ProtocolCoAfRegisterNotify del client passata a NdisClOpenAddressFamilyEx nel parametro AddressFamily e ha restituito se è stata valida per questo gestore chiamate a NDIS.
In caso contrario, ProtocolClOpenAfCompleteEx deve configurare qualsiasi stato determinato dal client per le operazioni successive sull'AF appena aperto. In particolare, il client deve salvare l'handle dal parametro NdisAfHandle , in genere nell'area di contesto ProtocolAfContext del client.
Se il client accetta chiamate in ingresso, può allocare un'area di stato del punto di accesso per servizio (SAP) e chiamare la funzione NdisClRegisterSap . Se il client effettua chiamate in uscita, potrebbe allocare un'area di stato per ogni connessione virtuale e creare un vc con la funzione NdisCoCreateVc per preparare una richiesta in ingresso da uno dei propri client del client per effettuare una chiamata in uscita a un nodo remoto.
NDIS chiama ProtocolClOpenAfCompleteEx in IRQL = PASSIVE_LEVEL.
Esempi
Per definire una funzione ProtocolClOpenAfCompleteEx , è 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 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 ProtocolClOpenAfCompleteEx denominata "MyClOpenAfCompleteEx ", usare il tipo di PROTOCOL_CL_OPEN_AF_COMPLETE_EX come illustrato nell'esempio di codice seguente:
PROTOCOL_CL_OPEN_AF_COMPLETE_EX MyClOpenAfCompleteEx;
Implementare quindi la funzione come indicato di seguito:
_Use_decl_annotations_
VOID
MyClOpenAfCompleteEx(
NDIS_HANDLE ProtocolAfContext,
NDIS_HANDLE NdisAfHandle,
NDIS_STATUS Status
)
{...}
Il tipo di funzione PROTOCOL_CL_OPEN_AF_COMPLETE_EX è 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_CL_OPEN_AF_COMPLETE_EX 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 |