RpcServerUseProtseqEpExA, fonction (rpcdce.h)
La fonction RpcServerUseProtseqEpEx indique à la bibliothèque d’exécution RPC d’utiliser la séquence de protocole spécifiée combinée avec le point de terminaison spécifié pour recevoir des appels de procédure distante.
Syntaxe
RPC_STATUS RpcServerUseProtseqEpExA(
RPC_CSTR Protseq,
unsigned int MaxCalls,
RPC_CSTR Endpoint,
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 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. Voir les remarques.
Endpoint
Pointeur vers les informations d’adresse de point de terminaison à utiliser pour créer une liaison pour la séquence de protocole spécifiée par Protseq.
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 qui définissent des attributs spécifiques au transport. Dans le cas du transport ncadg_mq, ces indicateurs spécifient les propriétés de la file d’attente de réception du processus serveur. Dans le cas des transports ncacn_ip_tcp ou ncadg_ip_udp, ces indicateurs limitent l’allocation de ports pour les ports dynamiques et permettent aux ordinateurs multihomed de lier de manière sélective les cartes d’interface réseau.
Les paramètres d’indicateur dans le champ Stratégie sont effectifs uniquement lorsque les séquences de protocole ncacn_ip_tcp, ncadg_ip_udpou ncadg_mq sont utilisées. Pour toutes les autres séquences de protocole, l’heure d’exécution RPC ignore ces valeurs.
Valeur de retour
Valeur | Signification |
---|---|
|
L’appel a réussi. |
|
La séquence de protocole n’est pas prise en charge sur cet hôte. |
|
La séquence de protocole n’est pas valide. |
|
Le format du point de terminaison n’est pas valide. |
|
Le système est hors mémoire. |
|
Le point de terminaison est un doublon. |
|
Le descripteur de sécurité n’est pas valide. |
Remarques
Les paramètres et les effets de RpcServerUseProtseqEpEx les sous-énumérations de RpcServerUseProtseqEp. La différence est le paramètre Stratégie, qui vous permet de définir des stratégies spécifiques sur les points de terminaison. La définition du champ NICFlags de la structure RPC_POLICY sur zéro rend cette fonction étendue équivalente au RpcServerUseProtseqEp d’origine lorsqu’elle est utilisée avec les transports ncacn_ip_tcp ou ncadg_ip_udp.
Une application serveur appelle RpcServerUseProtseqEpEx pour inscrire une séquence de protocole auprès de la bibliothèque d’exécution RPC. Avec chaque inscription de séquence de protocole, RpcServerUseProtseqEpEx inclut les informations d’adresse de point de terminaison spécifiées.
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. Une application serveur peut appeler cette routine plusieurs fois pour inscrire des séquences de protocole et des points de terminaison supplémentaires. 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. Toutefois, chaque interface du processus est accessible via n’importe quel point de terminaison. Pour plus d’informations, consultez Écriture d’un client ou d’un serveur RPC sécurisé.
Pour MaxCalls, la valeur fournie par l’application n’est qu’un indicateur. L’heure d’exécution RPC ou le fournisseur Windows Sockets 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 sont utilisées à la place. Sur Windows Server 2003 et Windows 2000 Server, la valeur sera respectée.
Les applications doivent faire attention à passer des valeurs raisonnables dans MaxCalls. Les 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 rencontrés 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 d’extensibilité lors de la détermination de la valeur appropriée pour MaxCalls.
Lorsque l’ordinateur est configuré pour utiliser une liaison sélective, le 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électifs. En outre, si une interface n’a pas encore reçu d’adresse IP à l’aide du protocole DHCP, le serveur RPC n’écoute pas sur l’interface réseau tant qu’une adresse DHCP n’est pas affectée à celle-ci. 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 avec un appel à la fonction RpcServerInqBindings.
Pour plus d’informations, consultez Server-Sidede liaison, liaison de chaîne, Configuration du Registre pour les allocations de ports et lesde liaison sélective, et RPC Message Queuing et les pages de référence MIDL message et ncadg_mq.
Note
L’en-tête rpcdce.h définit RpcServerUseProtseqEpEx comme 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | rpcdce.h (inclure Rpc.h) |
bibliothèque | Rpcrt4.lib |
DLL | Rpcrt4.dll |
Voir aussi
Écriture d’un client ou d’un serveur RPC sécurisé