Freigeben über


RpcServerUseAllProtseqsEx-Funktion (rpcdce.h)

Die RpcServerUseAllProtseqsEx-Funktion weist die RPC-Laufzeitbibliothek an, alle unterstützten Protokollsequenzen für den Empfang von Remoteprozeduraufrufen zu verwenden.

Syntax

RPC_STATUS RpcServerUseAllProtseqsEx(
  unsigned int MaxCalls,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

Parameter

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.

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 , mit der Sie die Standardrichtlinien für die dynamische Portzuordnung und -bindung an Netzwerkschnittstellenkarten (NICs) auf mehreren Computern (Computer mit mehreren Netzwerkkarten) überschreiben können.

Rückgabewert

Wert Bedeutung
RPC_S_OK
Der Aufruf war erfolgreich.
RPC_S_NO_PROTSEQS
Es gibt keine unterstützten Protokollsequenzen.
RPC_S_OUT_OF_MEMORY
Genügend Arbeitsspeicher ist nicht verfügbar.
RPC_S_INVALID_SECURITY_DESC
Der Sicherheitsdeskriptor ist zu kurz.
 
Hinweis Eine Liste der gültigen Fehlercodes finden Sie unter RPC-Rückgabewerte.
 

Hinweise

Hinweis Das Lauschen auf allen unterstützten Protokollsequenzen wird nicht empfohlen, da der Server auf alle Protokollsequenzen lauscht, einschließlich nicht gängiger Protokollsequenzen. Es wird empfohlen, dass Server nur auf Standardprotokollsequenzen lauschen.
 
Die Parameter und Auswirkungen von RpcServerUseAllProtseqsEx subsumieren diejenigen von RpcServerUseAllProtseqs. Der Unterschied ist der Policy-Parameter , mit dem Sie die Portzuordnung für dynamische Ports einschränken können und es multihomed-Computern ermöglicht, selektiv an angegebene NICs zu binden.

Wenn Sie das Feld NICFlags der RPC_POLICY Struktur auf 0 festlegen, entspricht diese erweiterte API funktionell dem ursprünglichen RpcServerUseAllProtseqs, 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.

Hinweis Die Flageinstellungen im Feld Richtlinie sind nur wirksam, wenn die ncacn_ip_tcp oder ncadg_ip_udp Protokollsequenz verwendet wird. Bei allen anderen Protokollsequenzen ignoriert die RPC-Laufzeit diese Werte.
 
Eine Serveranwendung ruft RpcServerUseAllProtseqsEx auf, um alle unterstützten Protokollsequenzen bei der RPC-Laufzeitbibliothek zu registrieren. Zum Empfangen von Remoteprozeduraufrufen muss ein Server mindestens eine Protokollsequenz bei der RPC-Laufzeitbibliothek 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. Der Endpunktname wird durch die RPC-Laufzeit oder das Betriebssystem generiert. Beispielsweise wird für ncacn_ip_tcp die Portnummer dynamisch durch die RPC-Laufzeit bestimmt, abhängig von der Verfügbarkeit und den Registrierungseinstellungen.

Hinweis Die Verwendung der RpcServerUseAllProtseqsEx-Funktion führt nicht dazu, dass der Server die folgenden Protokollsequenzen überwacht:
 
Hinweis Um eine dieser Protokollsequenzen zu lauschen, muss jede Sequenz einzeln ausgewählt werden.
 
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 Protokollsequenzen selektiv zu registrieren, ruft ein Server RpcServerUseProtseqEx, RpcServerUseProtseqIfEx oder RpcServerUseProtseqEpEx auf. Eine Beschreibung der Routinen, die ein Server normalerweise nach der Registrierung von Protokollsequenzen aufruft, finden Sie unter Serverseitige Bindung .

Anforderungen

   
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 (include Rpc.h)
Bibliothek Rpcrt4.lib
DLL Rpcrt4.dll

Weitere Informationen

Konfigurieren der Registrierung für Portzuordnungen und selektive Bindung

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx