RpcServerUseProtseqEpExW-Funktion (rpcdce.h)
Die RpcServerUseProtseqEpEx-Funktion weist die RPC-Laufzeitbibliothek an, die angegebene Protokollsequenz in Kombination mit dem angegebenen Endpunkt für den Empfang von Remoteprozeduraufrufen zu verwenden.
Syntax
RPC_STATUS RpcServerUseProtseqEpExW(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_WSTR Endpoint,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Parameter
Protseq
Zeiger auf einen Zeichenfolgenbezeichner der Protokollsequenz, die bei der RPC-Laufzeitbibliothek registriert werden soll.
MaxCalls
Backlogwarteschlangenlänge für die ncacn_ip_tcp Protokollsequenz. Alle anderen Protokollsequenzen ignorieren diesen Parameter. Verwenden Sie RPC_C_PROTSEQ_MAX_REQS_DEFAULT, um den Standardwert anzugeben. Siehe Hinweise.
Endpoint
Zeiger auf die Endpunktadresseninformationen, die beim Erstellen einer Bindung für die von Protseq angegebene Protokollsequenz verwendet werden sollen.
SecurityDescriptor
Zeiger auf einen optionalen Parameter, der für das Sicherheitssubsystem bereitgestellt wird. Wird nur für ncacn_np - und ncalrpc-Protokollsequenzen verwendet. Alle anderen Protokollsequenzen ignorieren diesen Parameter. Die Verwendung eines Sicherheitsdeskriptors auf dem Endpunkt, um einen Server zu schützen, wird nicht empfohlen. Dieser Parameter wird in der DCE-Spezifikation für diese API nicht angezeigt.
Policy
Zeiger auf die RPC_POLICY-Struktur , die Flags enthält, die transportspezifische Attribute festlegen. Im Fall des ncadg_mq Transports geben diese Flags die Eigenschaften der Serverprozess-Empfangswarteschlange an. Im Fall der ncacn_ip_tcp oder ncadg_ip_udp Transporte beschränken diese Flags die Portzuordnung für dynamische Ports und ermöglichen es mehreren Computern, selektiv an Netzwerkschnittstellenkarten zu binden.
Die Flageinstellungen im Feld Richtlinie sind nur wirksam, wenn die ncacn_ip_tcp, ncadg_ip_udp oder ncadg_mq Protokollsequenzen verwendet werden. Bei allen anderen Protokollsequenzen ignoriert die RPC-Laufzeit diese Werte.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
Die Protokollsequenz wird auf diesem Host nicht unterstützt. |
|
Die Protokollsequenz ist ungültig. |
|
Das Endpunktformat ist ungültig. |
|
Das System hat nicht genügend Arbeitsspeicher. |
|
Der Endpunkt ist ein Duplikat. |
|
Der Sicherheitsdeskriptor ist zu kurz. |
Hinweise
Die Parameter und Effekte von RpcServerUseProtseqEpEx subsumieren die von RpcServerUseProtseqEp. Der Unterschied ist der Policy-Parameter , mit dem Sie bestimmte Richtlinien an den Endpunkten festlegen können. Wenn Sie das Feld NICFlags der RPC_POLICY-Struktur auf 0 (null) festlegen, entspricht diese erweiterte Funktion der ursprünglichen RpcServerUseProtseqEp , wenn sie mit dem ncacn_ip_tcp oder ncadg_ip_udp Transporten verwendet wird.
Eine Serveranwendung ruft RpcServerUseProtseqEpEx auf, um eine Protokollsequenz bei der RPC-Laufzeitbibliothek zu registrieren. Bei jeder Protokollsequenzregistrierung enthält RpcServerUseProtseqEpEx die angegebenen Endpunktadresseninformationen.
Zum Empfangen von Remoteprozeduraufrufanforderungen muss ein Server mindestens eine Protokollsequenz bei der RPC-Laufzeitbibliothek registrieren. Eine Serveranwendung kann diese Routine mehrmals aufrufen, um zusätzliche Protokollsequenzen und Endpunkte zu registrieren. Für jede Protokollsequenz, die von einem Server registriert wird, erstellt die RPC-Laufzeitbibliothek einen oder mehrere Endpunkte, über die der Server Remoteprozeduraufrufanforderungen empfängt. Die RPC-Laufzeitbibliothek erstellt für jede Protokollsequenz unterschiedliche Endpunkte. Auf jede Schnittstelle im Prozess kann jedoch über einen beliebigen Endpunkt zugegriffen werden. Weitere Informationen finden Sie unter Schreiben eines sicheren RPC-Clients oder -Servers.
Für MaxCalls ist der von der Anwendung bereitgestellte Wert nur ein Hinweis. Die RPC-Laufzeit oder der Windows Sockets-Anbieter überschreiben möglicherweise den Wert. Unter Windows XP oder Windows 2000 Professional ist der Wert beispielsweise auf 5 beschränkt. Werte, die größer als 5 sind, werden ignoriert, und stattdessen wird 5 verwendet. Unter Windows Server 2003 und Windows 2000 Server wird der Wert berücksichtigt.
Anwendungen müssen darauf achten, vernünftige Werte in MaxCalls zu übergeben. Große Werte auf Server, Advanced Server oder Datacenter Server können dazu führen, dass eine große Menge an nicht ausgelagertem Poolarbeitsspeicher verwendet wird. Die Verwendung eines zu kleinen Werts ist ebenfalls ungünstig, da dies dazu führen kann, dass TCP SYN-Pakete vom Server erfüllt werden, wenn die Backlogwarteschlange erschöpft ist. Ein Anwendungsentwickler sollte bei der Bestimmung des richtigen Werts für MaxCalls zwischen Arbeitsspeicherbedarf und Skalierbarkeitsanforderungen abwägen.
Wenn der Computer für die Verwendung der selektiven Bindung konfiguriert ist, garantiert die erfolgreiche Rückgabe nicht, dass der Server Endpunkte für alle Netzwerkschnittstellen erstellt hat, die auf dem Computer vorhanden sind. Abhängig von den Einstellungen für die selektive Bindung lauscht die RPC-Laufzeit möglicherweise nicht an einigen Netzwerkschnittstellen. Wenn eine Schnittstelle noch keine IP-Adresse mit DHCP empfangen hat, lauscht der RPC-Server außerdem erst an der Netzwerkschnittstelle, wenn ihr eine DHCP-Adresse zugewiesen wurde. Eine erfolgreiche Rückgabe impliziert, dass der Server auf mindestens einer Netzwerkschnittstelle lauscht. Die vollständige Liste der Bindungshandles, über die Remoteprozeduraufrufe empfangen werden können, kann mit einem Aufruf der RpcServerInqBindings-Funktion abgerufen werden.
Weitere Informationen finden Sie unter Serverseitige Bindung, Zeichenfolgenbindung, Konfigurieren der Registrierung für Portzuordnungen und selektive Bindung sowie RPC Message Queuing und die MIDL-Referenzseiten undncadg_mq.
Hinweis
Der rpcdce.h-Header definiert RpcServerUseProtseqEpEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | rpcdce.h (rpc.h einschließen) |
Bibliothek | Rpcrt4.lib |
DLL | Rpcrt4.dll |
Weitere Informationen
Schreiben eines sicheren RPC-Clients oder -Servers
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für