Condividi tramite


PROTOCOL_CM_CLOSE_CALL funzione di callback (ndis.h)

La funzione ProtocolCmCloseCall è una funzione obbligatoria che termina una chiamata esistente e rilascia tutte le risorse allocate dal gestore chiamate per la chiamata.

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

Sintassi

PROTOCOL_CM_CLOSE_CALL ProtocolCmCloseCall;

NDIS_STATUS ProtocolCmCloseCall(
  [in]           NDIS_HANDLE CallMgrVcContext,
  [in, optional] NDIS_HANDLE CallMgrPartyContext,
  [in, optional] PVOID CloseData,
  [in, optional] UINT Size
)
{...}

Parametri

[in] CallMgrVcContext

Specifica l'handle in un'area di contesto allocata dal gestore chiamate in cui il gestore chiamate mantiene lo stato per vc. Questo handle è stato fornito a NDIS dalla funzione ProtocolCmMakeCall di Gestione chiamate.

[in, optional] CallMgrPartyContext

Specifica l'handle, se presente, in un'area di contesto allocata dal gestore chiamate in cui il gestore chiamate mantiene informazioni su una parte in un vc multipoint. Questo handle è NULL se la chiamata chiusa non è una chiamata a più punti.

[in, optional] CloseData

Puntatore a un buffer contenente i dati specificati dal client orientati alla connessione che devono essere inviati nella connessione prima che la chiamata venga terminata. Questo parametro è NULL se il supporto di rete sottostante non supporta i trasferimenti di dati durante la chiusura di una connessione.

[in, optional] Size

Specifica la lunghezza, in byte, del buffer in CloseData, zero se CloseData è NULL.

Valore restituito

ProtocolCmCloseCall restituisce lo stato delle operazioni come uno dei seguenti:

Codice restituito Descrizione
NDIS_STATUS_SUCCESS
Indica che il gestore chiamate ha terminato correttamente la chiamata.
NDIS_STATUS_PENDING
Indica che il gestore chiamate completerà la richiesta per terminare la chiamata in modo asincrono. Quando il gestore chiamate ha completato tutte le operazioni necessarie per terminare la connessione, deve quindi chiamare NdisCmCloseCallComplete per segnalare NDIS che la chiamata è stata chiusa.
NDIS_STATUS_INVALID_DATA
Indica che CloseData è stato specificato, ma il supporto di rete sottostante non supporta l'invio di dati simultanei con la terminazione di una chiamata.
NDIS_STATUS_XXX
Indica che il gestore chiamate non è riuscito a terminare la chiamata. L'errore effettivo restituito può essere uno stato propagato da un'altra routine di libreria NDIS.

Commenti

ProtocolCmCloseCall ha comunicato con i dispositivi di controllo di rete o altri attori specifici del supporto, come richiesto dal supporto, per terminare una connessione tra il nodo locale e un nodo remoto. Se il gestore chiamate è necessario per comunicare con i dispositivi di controllo di rete (ad esempio un commutatore di rete) deve usare una connessione virtuale al dispositivo di controllo di rete stabilito nella funzione ProtocolBindAdapterEx . I responsabili delle chiamate autonome comunicano a tali dispositivi di rete chiamando NdisCoSendNetBufferLists. I driver Miniport con supporto integrato per la gestione delle chiamate non chiamano mai NdisCoSendNetBufferLists. Invece, trasmettono i dati direttamente in rete.

Se CloseData non è NULL e l'invio di dati alla terminazione della connessione è supportato dal supporto gestito da questo gestore chiamate, il gestore chiamate deve trasmettere i dati specificati in CloseData al nodo remoto prima di completare la terminazione della chiamata. Se l'invio di dati simultanei con una connessione terminata non è supportato, i responsabili delle chiamate devono restituire NDIS_STATUS_INVALID_DATA.

Se ProtocolCmCloseCall viene passato un callmgrPartyContext esplicito, la chiamata terminata è un vc a più punti e la gestione chiamate deve eseguire qualsiasi comunicazione di rete necessaria con l'hardware di rete, come appropriato per il tipo di supporto, per terminare la chiamata come chiamata a più punti. Il gestore chiamate deve anche liberare la memoria allocata in precedenza, in ProtocolCmMakeCall, per il relativo stato per parti a cui fa riferimento CallMgrPartyContext . Non è possibile rilasciare correttamente, deallocare o disattivare tali risorse causano una perdita di memoria.

Dopo aver terminato la chiamata con la rete, tutti i dati di chiusura sono stati inviati e tutte le risorse in CallMgrPartyContext sono state liberate, il gestore chiamate deve chiamare NdisCmDeactivateVc. In questo modo NDIS e il driver miniport sottostante, se presente, non prevedono ulteriori trasferimenti nel VC specificato.

Esempi

Per definire una funzione ProtocolCmCloseCall , è 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 ProtocolCmCloseCall denominata "MyCmCloseCall ", usare il tipo di PROTOCOL_CM_CLOSE_CALL come illustrato in questo esempio di codice:

PROTOCOL_CM_CLOSE_CALL MyCmCloseCall;

Implementare quindi la funzione come indicato di seguito:

_Use_decl_annotations_
NDIS_STATUS
 MyCmCloseCall(
    NDIS_HANDLE  CallMgrVcContext,
    NDIS_HANDLE  CallMgrPartyContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

Il tipo di funzione PROTOCOL_CM_CLOSE_CALL è 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_CM_CLOSE_CALL 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 per i driver NDIS 6.0 e NDIS 5.1 (vedere ProtocolCmCloseCall (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere ProtocolCmCloseCall (NDIS 5.1) in Windows XP.
Piattaforma di destinazione Windows
Intestazione ndis.h (includere Ndis.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

NdisClMakeCall

NdisCmDeactivateVc

NdisCoSendNetBufferLists

ProtocolCmMakeCall