Partager via


Fonction NdisClCloseCall (ndis.h)

NdisClCloseCall demande qu’un appel sur le vc spécifié soit supprimé.

Syntaxe

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

Paramètres

[in] NdisVcHandle

Gérez le vc de l’appel en cours de fermeture ou de déconnexion. Ce handle a été fourni par NDIS lorsque le VC a été créé à l’origine avec NdisCoCreateVc, que ce soit par le client en préparation d’un appel sortant ou par le gestionnaire d’appels en préparation de la distribution d’un appel entrant au client.

[in, optional] NdisPartyHandle

Gérez vers la dernière partie à supprimer sur un VC multipoint ou NULL. S’il s’agit d’un vc multipoint, le client a obtenu ce handle à partir d’un appel précédent à NdisClMakeCall ou à NdisClAddParty.

[in, optional] Buffer

Pointeur vers une mémoire tampon allouée à l’appelant contenant toutes les données à transmettre à la partie sur le nœud distant lorsque la connexion est fermée. Selon le support sous-jacent, ce pointeur peut avoir la valeur NULL.

[in] Size

Spécifie la taille, en octets, à La mémoire tampon, zéro si La mémoire tampon a la valeur NULL.

Valeur retournée

Lorsque NdisClCloseCall retourne autre chose que NDIS_STATUS_PENDING, le client doit effectuer un appel interne à son Fonction ProtocolClCloseCallComplete . Sinon, NDIS appelle la fonction ProtocolClCloseCallComplete du client lorsque cette opération est terminée.

Remarques

Les clients appellent généralement NdisClCloseCall dans l’une des circonstances suivantes :

  • Pour fermer un appel établi, que l’appel ait été lancé par le client avec NdisClMakeCall ou qu’il ait été proposé par un homologue distant et accepté par le client Fonction ProtocolClIncomingCall .
  • Dans la liste Fonction ProtocolClIncomingCloseCall pour supprimer un appel établi.

    Cela se produit lorsque la partie distante ferme un appel entrant que la partie distante a lancé à l’origine et que le client a accepté. Pour les appels sortants initiés par le client, cela se produit soit lorsque la partie distante ferme la connexion point à point sur le nœud distant, soit lorsque la dernière partie restante d’un vc multipoint ferme l’appel sur le nœud distant.

  • Dans la liste Fonction ProtocolClMakeCallComplete pour supprimer une tentative lancée par le client d’effectuer un appel sortant.

    Cela se produit si le gestionnaire d’appels a modifié les paramètres d’appel spécifiés par le client passés à NdisClMakeCall et que le client trouve ces modifications inacceptables.

  • À partir de la fonction ProtocolClIncomingQoSChange pour supprimer un appel établi.

    Cela se produit si une modification qoS proposée par l’autre partie sur le vc est inacceptable pour le client.

  • Dans la liste Fonction ProtocolClModifyCallQoSComplete pour supprimer un appel établi.

    Cela se produit si une modification de QoS proposée par le client sur le vc n’est pas acceptée et que la qualité de service modifiée par CM retournée à ProtocolClModifyCallQoSComplete n’est pas acceptable pour le client.

Avant d’appeler NdisClCloseCall, un protocole doit s’assurer que tous ses paquets d’envoi en attente ont été retournés à son Fonction ProtocolCoSendNetBufferListsComplete . (Les paquets envoyés via NdisCoSendNetBufferLists sont toujours retournés de manière asynchrone à ProtocolCoSendNetBufferListsComplete.) Après avoir appelé NdisClCloseCall, un protocole ne doit pas appeler NdisCoSendNetBufferLists pour envoyer des paquets sur le VC référencé par NdisClCloseCall.

L’appel d’un client à NdisClCloseCall amène NDIS à marquer le NdisVcHandle comme fermant et à appeler la fonction ProtocolCmCloseCall du CM.

Pour supprimer un appel établi sur un vc multipoint créé par le client, le client doit appeler NdisClDropParty une ou plusieurs fois pour libérer tous les tiers sauf la dernière partie sur le vc avant d’appeler NdisClCloseCall. Le gestionnaire d’appels échouera la demande du client de fermer un appel multipoint si le vc donné a encore plusieurs parties connectées. Le NdisPartyHandle passé à NdisClCloseCall peut être n’importe quel handle valide que le client a obtenu à partir de ses appels précédents à NdisClAddParty ou NdisClMakeCall avec le NdisVcHandle donné .

En tant que parties distantes à une demande d’appel multipoint initiée par le client pour que leurs connexions soient fermées, NDIS appelle la fonction ProtocolClDropParty de ce client tant qu’il existe plusieurs parties en suspens sur le vc multipoint créé par le client. Lorsque la dernière partie distante restante ferme sa connexion, NDIS appelle le client Fonction ProtocolClIncomingCloseCall à la place. Par conséquent, la fonction ProtocolClIncomingCloseCall de tout client qui configure des connexions multipoints doit identifier la dernière partie restante sur ses machines virtuelles multipoints et passer le NdisPartyHandle approprié à NdisClCloseCall.

Une fois que le client a publié un NdisPartyHandle avec NdisClCloseCall, il peut libérer (ou réinitialiser pour réutilisation) les ressources pour l’état par partie qu’il maintenait. Toutefois, le client ne peut pas libérer ou réutiliser ses ressources par vc de la même manière à l’issue de l’opération qu’il a lancée avec NdisClCloseCall , car le NdisVcHandle, qui ne peut pas être réutilisé pour effectuer un autre appel car il est marqué comme fermant, est toujours valide tant que le VC n’est pas détruit. Soit le client doit appeler NdisCoDeleteVc s’il a créé le vc pour un appel sortant avant de libérer ou de réinitialiser ses ressources par vc, soit le client doit différer la mise en production ou la réinitialisation de ces ressources jusqu’à ce que sa fonction ProtocolCoDeleteVc soit appelée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisClCloseCall (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (consultez NdisClCloseCall (NDIS 5.1)) dans Windows XP.
Plateforme cible Desktop (Expérience utilisateur)
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI Irql_Protocol_Driver_Function(ndis)

Voir aussi

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete