Leggere in inglese

Condividi tramite


Funzione NdisClCloseCall (ndis.h)

NdisClCloseCall richiede l'interruzione di una chiamata nel vc specificato.

Sintassi

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

Parametri

[in] NdisVcHandle

Handle per 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 di effettuare una chiamata in uscita o dal gestore chiamate in preparazione per l'invio di una chiamata in ingresso al client.

[in, optional] NdisPartyHandle

Handle dell'ultima parte da eliminare in un vc multipunto o NULL. 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 dal chiamante contenente 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 valore 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 dell'operazione.

Osservazioni

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'oggetto funzione di ProtocolClIncomingCloseCall per rimuovere una chiamata stabilita.

    Ciò si verifica quando l'entità remota chiude una chiamata in ingresso avviata originariamente dall'entità remota e che il client ha accettato. Per le chiamate in uscita avviate dal client, ciò si verifica quando l'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'oggetto ProtocolClMakeCallComplete funzione per eliminare un tentativo avviato dal client di effettuare 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 che queste modifiche non sono accettabili.

  • Dalla funzione di ProtocolClIncomingQoSChange per rimuovere una chiamata stabilita.

    Ciò si verifica se una modifica QoS proposta dall'altra parte nel vco non è accettabile per il client.

  • Dall'oggetto Funzione ProtocolClModifyCallQoSComplete per rimuovere una chiamata stabilita.

    Ciò si verifica se una modifica QoS proposta dal client in VC non è accettata e il QoS modificato dal cm restituito a ProtocolClModifyCallQoSComplete non è accettabile per il client.

Prima di chiamare NdisClCloseCall, un protocollo deve garantire 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 fa sì che NDIS contrassegni il NdisVcHandle come chiusura e per chiamare la funzione ProtocolCmCloseCall del 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 chiamare NdisClCloseCall. Il gestore chiamate non riuscirà a richiedere a qualsiasi client di chiudere una chiamata multipunto se il vc specificato ha ancora più di una parte connessa. Il NdisPartyHandle passato a NdisClCloseCall può essere qualsiasi handle valido ottenuto dal client dalle chiamate precedenti a NdisClAddParty o NdisClMakeCall con il NdisVcHandle specificato .

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

Dopo che il client rilascia un NdisPartyHandle con NdisClCloseCall, può rilasciare (o reinizializzare per il riutilizzo) le risorse per lo stato per ogni parte gestito. Tuttavia, il client non può rilasciare o riutilizzare le risorse per vc in modo analogo al completamento dell'operazione avviata con NdisClCloseCall perché l'NdisVcHandle, che non può essere riutilizzato per effettuare un'altra chiamata perché è contrassegnata come chiusura, è ancora valida finché il vc non viene eliminato definitivamente. 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 il rilascio o la reinizializzazione di queste risorse fino a quando non viene chiamata la funzione ProtocolCoDeleteVc.

Fabbisogno

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 (include Ndis.h)
libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
regole di conformità DDI Irql_Protocol_Driver_Function (ndis)

Vedere anche

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete