Fonction RpcServerUseProtseqExW (rpcdce.h)
La fonction RpcServerUseProtseqEx indique à la bibliothèque d’exécution RPC d’utiliser la séquence de protocole spécifiée pour recevoir des appels de procédure distante.
Syntaxe
RPC_STATUS RpcServerUseProtseqExW(
RPC_WSTR Protseq,
unsigned int MaxCalls,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Paramètres
Protseq
Pointeur vers un identificateur de chaîne de la séquence de protocole à inscrire auprès de la bibliothèque d’exécution RPC.
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.
SecurityDescriptor
Pointeur vers un paramètre facultatif fourni pour le sous-système de sécurité Windows XP/2000/NT. 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. La structure RPC_POLICY permet à l’appelant d’indiquer à la bibliothèque d’exécution RPC d’utiliser un port intranet ou un port Internet, entre autres options.
Valeur retournée
Valeur | Signification |
---|---|
|
L’appel a réussi. |
|
La séquence de protocole n’est pas prise en charge sur cet hôte. |
|
Séquence de protocole. |
|
La mémoire du système est insuffisante. |
|
Le descripteur de sécurité n'est pas valide. |
Remarques
Les paramètres et effets de RpcServerUseProtseqEx sont inférieurs à ceux de RpcServerUseProtseq. 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 RpcServerUseProtseq d’origine, et le serveur est lié aux cartes réseau en fonction des paramètres du registre système. Pour plus d’informations, consultez Configuration du Registre pour les allocations de ports et la liaison sélective.
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. Le nom du point de terminaison est généré par l’heure d’exécution RPC ou par le système d’exploitation. Par exemple, pour ncacn_ip_tcp, le numéro de port est déterminé dynamiquement par la durée d’exécution RPC, en fonction des paramètres de disponibilité et du Registre.
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 toutes les séquences de protocole, un serveur appelle la routine RpcServerUseAllProtseqsEx .
Pour plus d’informations, consultez Liaison côté serveur.
Notes
L’en-tête rpcdce.h définit RpcServerUseProtseqEx comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | rpcdce.h (inclure Rpc.h) |
Bibliothèque | Rpcrt4.lib |
DLL | Rpcrt4.dll |