Partager via


Fonction RpcServerUseAllProtseqsIfEx (rpcdce.h)

La fonction RpcServerUseAllProtseqsIfEx indique à la bibliothèque d’exécution RPC d’utiliser toutes les séquences de protocole et points de terminaison spécifiés dans la spécification d’interface pour recevoir des appels de procédure distante.

Syntaxe

RPC_STATUS RpcServerUseAllProtseqsIfEx(
  unsigned int  MaxCalls,
  RPC_IF_HANDLE IfSpec,
  void          *SecurityDescriptor,
  PRPC_POLICY   Policy
);

Paramètres

MaxCalls

Longueur de la file d’attente du backlog pour la séquence de protocole ncacn_ip_tcp . Toutes les autres séquences de protocole ignorent ce paramètre. Utilisez RPC_C_PROTSEQ_MAX_REQS_DEFAULT pour spécifier la valeur par défaut. Consultez la section Notes.

IfSpec

Interface contenant les séquences de protocole et les informations de point de terminaison correspondantes à utiliser pour créer des handles de liaison.

SecurityDescriptor

Pointeur vers un paramètre facultatif fourni pour le sous-système de sécurité. Utilisé uniquement pour les séquences de protocole ncacn_np et ncalrpc . Toutes les autres séquences de protocole ignorent ce paramètre. L’utilisation d’un descripteur de sécurité sur le point de terminaison pour sécuriser un serveur n’est pas recommandée. Ce paramètre n’apparaît pas dans la spécification DCE pour cette API.

Policy

Pointeur vers la structure RPC_POLICY , qui contient des indicateurs pour restreindre l’allocation de port pour les ports dynamiques et autoriser les ordinateurs multilocats à se lier de manière sélective aux cartes d’interface réseau.

Valeur retournée

Valeur Signification
RPC_S_OK
L’appel a réussi.
RPC_S_NO_PROTSEQS
Il n’existe aucune séquence de protocole prise en charge.
RPC_S_INVALID_ENDPOINT_FORMAT
Format du point de terminaison.
RPC_S_OUT_OF_MEMORY
La mémoire du système est insuffisante.
RPC_S_DUPLICATE_ENDPOINT
Le point de terminaison est un doublon.
RPC_S_INVALID_SECURITY_DESC
Le descripteur de sécurité n'est pas valide.
RPC_S_INVALID_RPC_PROTSEQ
Séquence de protocole RPC non valide.
 
Note Pour obtenir la liste des codes d’erreur valides, consultez Valeurs de retour RPC.
 

Remarques

Note L’écoute de toutes les séquences de protocole prises en charge n’est pas recommandée, car cela oblige le serveur à écouter toutes les séquences de protocole, y compris les séquences de protocole non standard. Il est recommandé que les serveurs écoutent uniquement les séquences de protocole standard .
 
Les paramètres et effets de RpcServerUseAllProtseqsIfEx subsument ceux de RpcServerUseAllProtseqsIf. La différence est le champ Stratégie , qui vous permet de restreindre l’allocation de ports pour les ports dynamiques et permet aux machines multihomed de se lier de manière sélective aux cartes d’interface réseau.

Si vous définissez le champ NICFlags de la structure RPC_POLICY sur zéro, cette fonction étendue est fonctionnellement équivalente au RpcServerUseAllProtseqsIfEx d’origine, et le serveur est lié aux cartes réseau en fonction des paramètres du registre système. Pour plus d’informations sur la façon dont les paramètres du Registre définissent les ports Internet et intranet disponibles, consultez Configuration du Registre pour les allocations de ports et la liaison sélective.

Note Les paramètres d’indicateur dans le champ Stratégie ne sont effectifs que lorsque la séquence de protocole ncacn_ip_tcp ou ncadg_ip_udp est en cours d’utilisation. Pour toutes les autres séquences de protocole, le temps d’exécution RPC ignore ces valeurs.
 
Une application serveur appelle RpcServerUseAllProtseqsIfEx pour inscrire auprès de la bibliothèque d’exécution RPC toutes les séquences de protocole et les informations d’adresse de point de terminaison associées fournies dans le fichier IDL.

Pour recevoir des demandes d’appel de procédure distante, un serveur doit inscrire au moins une séquence de protocole auprès de la bibliothèque d’exécution RPC. Pour chaque séquence de protocole inscrite par un serveur, la bibliothèque d’exécution RPC crée un ou plusieurs points de terminaison via lesquels le serveur reçoit des demandes d’appel de procédure distante. La bibliothèque d’exécution RPC crée des points de terminaison différents pour chaque séquence de protocole.

Note L’utilisation de la fonction RpcServerUseAllProtseqsIfEx n’entraîne pas l’écoute du serveur sur les séquences de protocole suivantes :
 
Note Pour écouter l’une de ces séquences de protocole, chaque séquence doit être sélectionnée individuellement.
 
Pour MaxCalls, la valeur fournie par l’application n’est qu’un indicateur. L’heure d’exécution RPC ou le fournisseur de sockets Windows peut remplacer la valeur. Par exemple, sur Windows XP ou Windows 2000 Professionnel, la valeur est limitée à 5. Les valeurs supérieures à 5 sont ignorées et 5 est utilisée à la place. Sur Windows Server 2003 et Windows 2000 Server, la valeur est respectée.

Les applications doivent veiller à passer des valeurs raisonnables dans MaxCalls. Des valeurs volumineuses sur le serveur, le serveur avancé ou le serveur de centre de données peuvent entraîner l’utilisation d’une grande quantité de mémoire de pool non paginée. L’utilisation d’une valeur trop petite est également défavorable, car cela peut entraîner la mise en place de paquets TCP SYN par TCP RST à partir du serveur si la file d’attente du backlog est épuisée. Un développeur d’applications doit équilibrer l’empreinte mémoire et les exigences de scalabilité lors de la détermination de la valeur appropriée pour MaxCalls.

Lorsque l’ordinateur est configuré pour utiliser la liaison sélective, un retour réussi ne garantit pas que le serveur a créé des points de terminaison pour toutes les interfaces réseau présentes sur l’ordinateur. L’exécution RPC peut ne pas écouter sur certaines interfaces réseau en fonction des paramètres de liaison sélective. En outre, si une interface n’a pas encore reçu d’adresse IP à l’aide de DHCP, le serveur RPC n’écoute pas sur l’interface réseau tant qu’une adresse DHCP ne lui est pas affectée. Un retour réussi implique que le serveur écoute au moins une interface réseau ; la liste complète des handles de liaison sur lesquels les appels de procédure distante peuvent être reçus peut être obtenue avec un appel à la fonction RpcServerInqBindings .

Pour inscrire les séquences de protocole sélectionnées spécifiées dans le fichier IDL, un serveur appelle RpcServerUseProtseqIfEx. Pour plus d’informations, consultez Liaison côté serveur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête rpcdce.h (inclure Rpc.h)
Bibliothèque Rpcrt4.lib
DLL Rpcrt4.dll

Voir aussi

RpcServerUseAllProtseqsEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx