NdisClRegisterSap, fonction (ndis.h)
NdisClRegisterSap inscrit un SAP sur lequel le client peut recevoir des appels entrants à partir d’un nœud distant.
Syntaxe
NDIS_STATUS NdisClRegisterSap(
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_HANDLE ProtocolSapContext,
[in] PCO_SAP Sap,
[out] PNDIS_HANDLE NdisSapHandle
);
Paramètres
[in] NdisAfHandle
Spécifie le handle retourné par NdisClOpenAddressFamilyEx, qui identifie implicitement le gestionnaire d’appels avec lequel inscrire le SAP.
[in] ProtocolSapContext
Spécifie le handle d’une zone de contexte résident fournie par l’appelant dans laquelle le client conserve l’état de ce SAP après son ouverture. NDIS transmet ce handle au client dans tous les appels suivants concernant ce SAP si l’appel à NdisClRegisterSap réussit.
[in] Sap
Pointeur vers une spécification fournie par le client pour l’ouverture de SAP, mise en forme en tant que structure de type CO_SAP.
[out] NdisSapHandle
Pointeur vers une variable dans laquelle un handle au sap nouvellement inscrit est retourné si cet appel réussit.
Valeur retournée
Lorsque NdisClRegisterSap retourne autre chose que NDIS_STATUS_PENDING, le client doit effectuer un appel interne à son Fonction ProtocolClRegisterSapComplete . Sinon, NDIS appelle la fonction ProtocolClRegisterSapComplete du client lorsque cette opération est terminée.
Remarques
Avec un appel à NdisClRegisterSap, un client demande des notifications d’appels entrants sur un SAP particulier. NDIS transfère les informations SAP fournies à la fonction ProtocolCmRegisterSap du gestionnaire d’appels pour validation. Si le SAP donné est déjà utilisé ou si le gestionnaire d’appels ne reconnaît pas la spécification fournie par le client sur Sap, le gestionnaire d’appels échoue à cette requête.
Le format SAP dépend de moyennement et est spécifique à la famille d’adresses prise en charge par le gestionnaire d’appels, qui utilise des sap inscrits par la suite pour acheminer les appels entrants vers le client approprié. Un gestionnaire d’appels peut inscrire des sap pour les PVC établis sans contacter d’autres composants réseau, en fonction du support sous-jacent.
Si son appel à NdisClRegisterSap réussit, le client doit enregistrer le handle retourné dans NdisSapHandle , car il s’agit d’un paramètre obligatoire pour NdisClDeregisterSap. Les appelants de NdisClRegisterSap passent généralement un pointeur vers une variable dans la zone d’état allouée par le client sur ProtocolSapContext afin que NDIS puisse la définir sur NdisSapHandle si cet appel réussit. NDIS transmet le ProtocoleSapContext donné aux fonctions ProtocolCl/CoXxx inscrites du client dans tous les appels suivants concernant ce SAP jusqu’à ce que le client appelle NdisClDeregisterSap.
En règle générale, un client appelle NdisClRegisterSap à partir de sa fonction ProtocolAfRegisterNotify après son appel réussi à NdisClOpenAddressFamilyEx. L’inscription d’un ou de plusieurs SAP permet au client de recevoir ses appels entrants dès que le gestionnaire d’appels les reçoit sur le réseau.
Contrairement aux appels sortants lancés par le client, un client n’appelle pas NdisCoCreateVc avant d’appeler NdisClRegisterSap. Pour les appels entrants, le gestionnaire d’appels lance la création du vc, comme suit :
- À la réception d’un appel entrant sur un sap inscrit, le gestionnaire d’appels appelle d’abord NdisCoCreateVc, ce qui amène NDIS à appeler la fonction ProtocolCoCreateVc du client.
- Une fois le vc a été configuré et activé, le gestionnaire d’appels appelle NdisCmDispatchIncomingCall, ce qui provoque l’appel du client par NDIS. Fonction ProtocolClIncomingCall .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Pris en charge pour les pilotes NDIS 6.0 et NDIS 5.1 (voir NdisClRegisterSap (NDIS 5.1)) dans Windows Vista. Pris en charge pour les pilotes NDIS 5.1 (voir NdisClRegisterSap (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) |