Condividi tramite


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 .

Nota È necessario dichiarare la funzione usando il tipo di PROTOCOL_CL_OPEN_AF_COMPLETE_EX . Per altre informazioni, vedere la sezione Esempi seguenti.
 

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.
Se il tentativo del client di aprire un af non riesce, NDIS pulisce lo stato salvato prima di chiamare ProtocolClOpenAfCompleteEx. In questo caso , ProtocolClOpenAfCompleteEx può rilasciare le risorse assegnate dal client per la chiamata a NdisClOpenAddressFamilyEx o prepararle per il riutilizzo.

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

Vedi anche

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCoCreateVc

NdisCoOidRequest

ProtocolCmOpenAf

ProtocolCoAfRegisterNotify