Partager via


PROTOCOL_CL_INCOMING_CLOSE_CALL fonction de rappel (ndis.h)

La fonction ProtocolClIncomingCloseCall est utilisée par tous les clients NDIS orientés connexion. Tous ces clients doivent avoir des fonctions ProtocolClIncomingCloseCall entièrement fonctionnelles .

Note Vous devez déclarer la fonction à l’aide du type PROTOCOL_CL_INCOMING_CLOSE_CALL . Pour plus d’informations, consultez la section Exemples suivante.
 

Syntaxe

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

Paramètres

[in] CloseStatus

Spécifie la status qui indique la cause de la désactivation de la connexion, qui est généralement NDIS_STATUS_SUCCESS pour indiquer que la partie distante à l’appel a demandé que la connexion soit fermée. Toute autre valeur indique que des problèmes sur le réseau ont provoqué l’arrêt de la connexion par le gestionnaire d’appels.

[in] ProtocolVcContext

Spécifie le handle de la zone de contexte par vc du client pour le vc sur lequel la connexion est fermée. Quelle que soit la valeur de CloseStatus, le client ne peut ni envoyer ni recevoir de données sur le vc désigné par le NdisVcHandle qu’il a stocké dans cette zone de contexte.

[in] CloseData

Pointeur vers une mémoire tampon contenant un message de fermeture spécifique au protocole, éventuellement fourni par le client distant que le gestionnaire d’appels a reçu sur le réseau, ou ce paramètre peut avoir la valeur NULL.

Lorsque CloseStatus est NDIS_STATUS_SUCCESS, ce paramètre a la valeur NULL si le support réseau sous-jacent ne prend pas en charge les transferts de données lors de la fermeture d’une connexion. Toutefois, un gestionnaire d’appels particulier peut définir une structure pour transmettre des informations de diagnostic supplémentaires à ses clients lors des coupures d’appel provoquées par des problèmes sur le réseau.

[in] Size

Spécifie la taille en octets de la mémoire tampon dans CloseData, zéro si CloseData a la valeur NULL.

Valeur de retour

None

Remarques

Un appel à ProtocolClIncomingCloseCall indique que l’un des éléments suivants s’est produit :

  • Le gestionnaire d’appels a reçu une demande sur le réseau pour fermer une connexion établie, identifiée par le NdisVcHandle que le client a stocké dans sa zone de contexte par vc sur ProtocolVcContext .
  • Le gestionnaire d’appels a détecté que des problèmes réseau empêchent d’autres transferts de données sur la connexion établie.
Dans les deux cas, ProtocolClIncomingCloseCall doit effectuer toutes les opérations déterminées par le protocole, telles que la notification du ou des propres clients du client que la connexion est interrompue. Par exemple, si l’appel à fermer est un vc multipoint créé par le client, ProtocolClIncomingCloseCall doit appeler NdisClDropParty une ou plusieurs fois jusqu’à ce qu’une seule partie reste sur son vc multipoint.

Que le vc donné soit une connexion monopoint ou multipoint, ProtocolClIncomingCloseCall doit appeler NdisClCloseCall pour confirmer que le client n’essaiera pas d’envoyer ou de s’attendre à recevoir des données sur ce vc particulier. Si le gestionnaire d’appels a créé ce vc, ProtocolClIncomingCloseCall doit retourner le contrôle après l’appel de NdisClCloseCall. Il est de la responsabilité du gestionnaire d’appels de détruire ou de réutiliser les justificatifs vérifiables qu’il a créés.

Si le client a initialement créé ce vc pour un appel sortant, ProtocolClIncomingCloseCall peut effectuer l’une des opérations suivantes après avoir appelé NdisClDropParty autant de fois que nécessaire, le cas échéant, et NdisClCloseCall :

  • Si CloseStatus est NDIS_STATUS_SUCCESS, démontez le vc avec NdisCoDeleteVc et libérez la zone de contexte par vc du client ou préparez-la à la réutiliser lors d’un appel ultérieur à NdisCoCreateVc.
  • Si CloseStatus est NDIS_STATUS_SUCCESS, conservez le vc créé par le client et préparez sa zone de contexte par vc pour la réutilisation dans un appel ultérieur à NdisClMakeCall.
  • Sinon, démontez le vc avec NdisCoDeleteVc et relâchez sa zone de contexte par vc si le gestionnaire d’appels a indiqué que le réseau est devenu inopérant.

Exemples

Pour définir une fonction ProtocolClIncomingCloseCall , vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonction permet à l’analyse du code pour les pilotes, au vérificateur de pilotes statiques (SDV) et à d’autres outils de vérification de trouver des erreurs. Il s’agit d’une exigence pour l’écriture de pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction ProtocolClIncomingCloseCall nommée « MyClIncomingCloseCall », utilisez le type PROTOCOL_CL_INCOMING_CLOSE_CALL comme indiqué dans cet exemple de code :

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

Le type de fonction PROTOCOL_CL_INCOMING_CLOSE_CALL est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lors de l’exécution des outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction PROTOCOL_CL_INCOMING_CLOSE_CALL dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir ProtocolClIncomingCloseCall (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir ProtocolClIncomingCloseCall (NDIS 5.1)) dans Windows XP.
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc