Funzione NdisClCloseCall (ndis.h)

NdisClCloseCall richiede che una chiamata nel vc specificato venga interrotta.

Sintassi

NDIS_STATUS NdisClCloseCall(
  [in]           NDIS_HANDLE NdisVcHandle,
  [in, optional] NDIS_HANDLE NdisPartyHandle,
  [in, optional] PVOID       Buffer,
  [in]           UINT        Size
);

Parametri

[in] NdisVcHandle

Gestire il vc della chiamata chiusa o disconnessa. Questo handle è stato fornito da NDIS quando il VC è stato originariamente creato con NdisCoCreateVc, indipendentemente dal client in preparazione per effettuare una chiamata in uscita o dal chiamante in preparazione per l'invio di una chiamata in ingresso al client.

[in, optional] NdisPartyHandle

Gestire l'ultima parte da eliminare in un vc o null a più punti. Se si tratta di un VC multipoint, il client ha ottenuto questo handle da una chiamata precedente a NdisClMakeCall o NdisClAddParty.

[in, optional] Buffer

Puntatore a un buffer allocato del chiamante contenente tutti i dati da trasmettere all'entità nel nodo remoto quando la connessione viene chiusa. A seconda del supporto sottostante, questo puntatore può essere NULL.

[in] Size

Specifica le dimensioni, in byte, in Buffer, zero se Buffer è NULL.

Valore restituito

Quando NdisClCloseCall restituisce qualsiasi elemento diverso da NDIS_STATUS_PENDING, il client deve effettuare una chiamata interna al relativo Funzione ProtocolClCloseCallComplete . In caso contrario, NDIS chiama la funzione ProtocolClCloseCallComplete del client al termine di questa operazione.

Commenti

I client in genere chiamano NdisClCloseCall in una delle circostanze seguenti:

  • Per chiudere una chiamata stabilita, se la chiamata è stata avviata dal client con NdisClMakeCall o è stata offerta da un peer remoto e accettata dal client Funzione ProtocolClIncomingCall .
  • Dall' Funzione ProtocolClIncomingCloseCall per rimuovere una chiamata stabilita.

    Ciò si verifica quando la parte remota chiude una chiamata in ingresso che la parte remota ha originariamente avviato e che il client ha accettato. Per le chiamate in uscita avviate dal client, questa operazione si verifica quando la entità remota chiude la connessione da punto a punto nel nodo remoto o quando l'ultima parte rimanente in un vc multipoint chiude la chiamata sul nodo remoto.

  • Dall' Funzione ProtocolClMakeCallComplete per eliminare un tentativo avviato dal client di eseguire una chiamata in uscita.

    Ciò si verifica se il gestore chiamate ha modificato i parametri di chiamata specificati dal client passati a NdisClMakeCall e il client rileva queste modifiche non accettabili.

  • Dalla funzione ProtocolClIncomingQoSChange per rimuovere una chiamata stabilita.

    Ciò si verifica se una modifica QoS proposta dall'altra parte nel VC è inaccettabile per il client.

  • Dall' Funzione ProtocolClModifyCallQoSComplete per rimuovere una chiamata stabilita.

    Ciò si verifica se una modifica QoS proposta dal client nel VC non è accettata e il QoS modificato da CM restituito a ProtocolClModifyCallQoSComplete è inaccettabile per il client.

Prima di chiamare NdisClCloseCall, un protocollo deve assicurarsi che tutti i pacchetti di invio in sospeso siano stati restituiti al relativo Funzione ProtocolCoSendNetBufferListsComplete . I pacchetti inviati tramite NdisCoSendNetBufferLists vengono sempre restituiti in modo asincrono a ProtocolCoSendNetBufferListsComplete. Dopo aver chiamato NdisClCloseCall, un protocollo non deve chiamare NdisCoSendNetBufferLists per inviare pacchetti nel VC a cui fa riferimento NdisClCloseCall.

La chiamata di un client a NdisClCloseCall causa la chiusura di NdisVcHandle e la chiamata alla funzione ProtocolCmCloseCall di CM.

Per rimuovere una chiamata stabilita in un vc multipoint creato dal client, il client deve chiamare NdisClDropParty una o più volte per rilasciare tutto, ma l'ultima parte nel VC prima di chiama NdisClCloseCall. Il gestore chiamate avrà esito negativo per chiudere una chiamata a più punti se il vc specificato ha ancora più di una parte connessa. NdisPartyHandle passato a NdisClCloseCall può essere qualsiasi handle valido ottenuto dal client dalle chiamate precedenti a NdisClAddParty o NdisClMakeCall con l'oggetto NdisVcHandle specificato.

Come parti remote a una chiamata multipoint avviata dal client, le loro connessioni vengono chiuse, NDIS chiama la funzione ProtocolClDropParty del client, purché esista più parti in sospeso nel vc multipoint creato dal client. Quando l'ultima entità remota rimanente chiude la connessione, NDIS chiama il client Funzione ProtocolClIncomingCloseCall . Di conseguenza, la funzione ProtocolClIncomingCloseCall di qualsiasi client che configura connessioni multipoint deve identificare l'ultima parte rimanente nei computer virtuali multipoint e passare il valore NdisPartyHandle appropriato a NdisClCloseCall.

Dopo che il client rilascia un oggetto NdisPartyHandle con NdisClCloseCall, può rilasciare (o reinizializzare per il riutilizzo) le risorse per lo stato per parti che stava mantenendo. Tuttavia, il client non può rilasciare o riutilizzare le risorse per VC in modo analogo al completamento dell'operazione avviata con NdisClCloseCall perché NdisVcHandle, che non può essere riutilizzato per effettuare un'altra chiamata perché è contrassegnata come chiusura, è ancora valida fino a quando il VC non viene distrutto. Il client deve chiamare NdisCoDeleteVc se ha creato il VC per una chiamata in uscita prima di rilasciare o reinizializzare le risorse per VC oppure il client deve rinviare la versione o la reinizializzazione di queste risorse finché non viene chiamata la funzione ProtocolCoDeleteVc .

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisClCloseCall (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisClCloseCall (NDIS 5.1) in Windows XP.
Piattaforma di destinazione Desktop
Intestazione ndis.h (includere Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Protocol_Driver_Function(ndis)

Vedi anche

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete