RpcServerUseProtseqIfEx-Funktion (rpcdce.h)
Die RpcServerUseProtseqIfEx-Funktion weist die RPC-Laufzeitbibliothek an, die angegebene Protokollsequenz in Kombination mit den Endpunkten in der Schnittstellenspezifikation zum Empfangen von Remoteprozeduraufrufen zu verwenden.
Syntax
RPC_STATUS RpcServerUseProtseqIfEx(
RPC_CSTR Protseq,
unsigned int MaxCalls,
RPC_IF_HANDLE IfSpec,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Parameter
Protseq
Zeiger auf einen Zeichenfolgenbezeichner der Protokollsequenz, um sich bei der RPC-Laufzeitbibliothek zu registrieren.
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.
IfSpec
Schnittstelle mit Endpunktinformationen, die beim Erstellen einer Bindung für die Protokollsequenz verwendet werden sollen, die im Protseq-Parameter angegeben ist.
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 für den 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, um die Portzuordnung für dynamische Ports einzuschränken, und die es mehreren Computern ermöglichen, selektiv an Netzwerkschnittstellenkarten zu binden.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
Der Endpunkt für diese Protokollsequenz wird in der IDL-Datei nicht angegeben. |
|
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 Sicherheitsdeskriptor ist zu kurz. |
Hinweise
Die Parameter und Auswirkungen von RpcServerUseProtseqIfEx erweitern diejenigen von RpcServerUseProtseqIf. Der Unterschied ist der Policy-Parameter , mit dem Sie die Portzuordnung für dynamische Ports einschränken können und es mehreren Computern ermöglicht, selektiv an Netzwerkschnittstellenkarten zu binden.
Wenn Sie das Feld NICFlags der RPC_POLICY-Struktur auf 0 festlegen, entspricht diese erweiterte API funktionell dem ursprünglichen RpcServerUseProtseqIf, und der Server bindet basierend auf den Einstellungen in der Systemregistrierung an NICs. Informationen dazu, wie die Registrierungseinstellungen die verfügbaren Internet- und Intranetports definieren, finden Sie unter Konfigurieren der Registrierung für Portzuordnungen und selektive Bindung.
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 zu registrieren.
Für jede von einem Server registrierte Protokollsequenz erstellt die RPC-Laufzeitbibliothek einen oder mehrere Endpunkte, über die der Server Remoteprozeduraufrufanforderungen empfängt. Die RPC-Laufzeitbibliothek erstellt unterschiedliche Endpunkte für jede Protokollsequenz. 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 den Wert möglicherweise. 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, angemessene 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 Poolspeicher verwendet wird. Die Verwendung eines zu kleinen Werts ist ebenfalls ungünstig, da dies dazu führen kann, dass TCP SYN-Pakete von TCP RST vom Server erfüllt werden, wenn die Backlogwarteschlange erschöpft ist. Ein Anwendungsentwickler sollte bei der Ermittlung 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 auf dem Computer vorhandenen Netzwerkschnittstellen erstellt hat. Die RPC-Laufzeit lauscht möglicherweise nicht an einigen Netzwerkschnittstellen, abhängig von den Einstellungen für die selektive Bindung. Wenn eine Schnittstelle noch keine IP-Adresse über DHCP empfangen hat, lauscht der RPC-Server nicht an der Netzwerkschnittstelle, bis ihr eine DHCP-Adresse zugewiesen ist. Eine erfolgreiche Rückgabe bedeutet, dass der Server mindestens eine Netzwerkschnittstelle lauscht. Die vollständige Liste der Bindungshandles, über die Remoteprozeduraufrufe empfangen werden können, kann mit einem Aufruf der RpcServerInqBindings-Funktion abgerufen werden.
Um alle Protokollsequenzen aus der IDL-Datei zu registrieren, ruft ein Server RpcServerUseAllProtseqsIfEx auf. Weitere Informationen finden Sie unter Serverseitige Bindung. Eine Liste der von Microsoft RPC unterstützten Protokollsequenzen finden Sie unter Zeichenfolgenbindung.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | rpcdce.h (include Rpc.h) |
Bibliothek | Rpcrt4.lib |
DLL | Rpcrt4.dll |
Weitere Informationen
Schreiben eines sicheren RPC-Clients oder -Servers