RpcServerUseAllProtseqsIf-Funktion (rpcdce.h)

Die RpcServerUseAllProtseqsIf-Funktion weist die RPC-Laufzeitbibliothek an, alle in der Schnittstellenspezifikation angegebenen Protokollsequenzen und Endpunkte für den Empfang von Remoteprozeduraufrufen zu verwenden.

Syntax

RPC_STATUS RpcServerUseAllProtseqsIf(
  unsigned int  MaxCalls,
  RPC_IF_HANDLE IfSpec,
  void          *SecurityDescriptor
);

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.

IfSpec

Schnittstelle, die die Protokollsequenzen und die entsprechenden Endpunktinformationen enthält, die beim Erstellen von Bindungshandles 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.

Rückgabewert

Wert Bedeutung
RPC_S_OK
Der Aufruf war erfolgreich.
RPC_S_NO_PROTSEQS
Es gibt keine unterstützten Protokollsequenzen.
RPC_S_INVALID_ENDPOINT_FORMAT
Das Endpunktformat.
RPC_S_OUT_OF_MEMORY
Das System hat nicht genügend Arbeitsspeicher.
RPC_S_DUPLICATE_ENDPOINT
Der Endpunkt ist ein Duplikat.
RPC_S_INVALID_SECURITY_DESC
Der Sicherheitsdeskriptor ist zu kurz.
RPC_S_INVALID_RPC_PROTSEQ
Rpc-Protokollsequenz ungültig.
 
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 mainstreamer Protokollsequenzen. Es wird empfohlen, dass Server nur auf Standardprotokollsequenzen lauschen.
 
Eine Serveranwendung ruft RpcServerUseAllProtseqsIf auf, um alle Protokollsequenzen und zugehörigen Endpunktadresseninformationen in der IDL-Datei bei der RPC-Laufzeitbibliothek zu registrieren. Eine Liste der RPC-unterstützten Protokollsequenzen finden Sie unter Zeichenfolgenbindung.

Zum Empfangen von Remoteprozeduraufrufanforderungen muss ein Server mindestens eine Protokollsequenz bei der RPC-Laufzeitbibliothek 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.

Hinweis Die Verwendung der RpcServerUseAllProtseqsIf-Funktion bewirkt nicht, dass der Server auf die folgenden Protokollsequenzen lauscht:
 
Hinweis Um auf 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 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. Um ausgewählte Protokollsequenzen zu registrieren, die in der IDL-Datei angegeben sind, ruft ein Server RpcServerUseProtseqIf auf.

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

RpcBindingVectorFree

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingExport

RpcServerInqBindings

RpcServerListen

RpcServerRegisterWenn

RpcServerRegisterIfEx

RpcServerUseAllProtseqs

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf