Zeichenfolgenbindung

Die Zeichenfolgenbindung ist eine Zeichenfolge ohne Vorzeichen, die aus Zeichenfolgen besteht, die die Bindungsobjekt-UUID, die RPC-Protokollsequenz, die Netzwerkadresse sowie die Endpunkt- und Endpunktoptionen darstellen.

ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]

Parameter

ObjectUUID

UUID des Objekts, das durch den Remoteprozeduraufruf betrieben wird. Auf dem Server ordnet die RPC-Laufzeitbibliothek den Objekttyp einem Manager-Einstiegspunktvektor (ein Array von Funktionszeigern) zu, um die richtige Managerroutine aufzurufen. Eine Erläuterung zum Zuordnen von Objekt-UUIDs zu Manager-Einstiegspunktvektoren finden Sie unter Registrieren von Schnittstellen.

ProtocolSequence

Zeichenfolge, die eine gültige Kombination aus einem RPC-Protokoll (z. B. ncacn), einem Transportprotokoll (z. B. TCP) und einem Netzwerkprotokoll (z. B. IP) darstellt. Microsoft RPC unterstützt die folgenden Protokolle, die unter Protokollsequenzkonstanten angegeben sind.

Networkaddress

Netzwerkadresse des Systems zum Empfangen von Remoteprozeduraufrufen.

Hinweis

Die folgenden Protokollsequenzen werden ab Windows XP nicht unterstützt:

Format und Inhalt der Netzwerkadresse hängen wie folgt von der angegebenen Protokollsequenz ab.

Protokollsequenz Netzwerkadresse Beispiele
ncacn_nb_tcp Computername Myserver
ncacn_nb_ipx Computername Myserver
ncacn_nb_nb Computername Myserver
Ncacn_ip_tcp Internetadresse mit vier Oktettn oder Hostnamen. Wenn der IPv6-Netzwerkstapel installiert ist, wird IPv6 vollständig unterstützt, und eine IPv6-Adresse wird ebenfalls akzeptiert. 128.10.2.30 anynode.microsoft.com
ncacn_np Servername (führende doppelte umgekehrte Schrägstriche sind optional) myserver \\myotherserver
ncacn_spx IPX-Internetadresse oder Servername ~00000000108002B30612C myserver
ncacn_dnet_nsp Bereichs- und Knotensyntax 4.120
ncacn_at_dsp Computername, optional gefolgt von @ und dem Namen der AppleTalk-Zone. Der Standardwert ist @*, die Zone des Clients, wenn keine Zone angegeben ist. servername@zonename Servername
ncacn_vns_spp StreetTalk-Servername im Format item@group@organization printserver@sdkdocs@microsoft
ncadg_mq Servername Myserver
ncacn_http Internetadresse (entweder vier Oktett- oder Anzeigename oder lokaler Servername) 128.10.2.30 somesvr@anywhere.com mylocalsvr
ncadg_ip_udp Internetadresse oder Hostname mit vier Oktetten 128.10.2.30 anynode.microsoft.com
ncadg_ipx IPX-Internetadresse oder Servername ~00000000108002B30612C myserver
ncalrpc Computername thismachine

Das Feld netzwerkadresse ist optional. Wenn Sie keine Netzwerkadresse angeben, bezieht sich die Zeichenfolgenbindung auf Ihren lokalen Host. Es ist möglich, den Namen des lokalen Computers anzugeben, wenn Sie die ncalrpc-Protokollsequenz verwenden. Dies ist jedoch völlig unnötig.

Endpunkt

Endpunkt oder Adresse des Prozesses zum Empfangen von Remoteprozeduraufrufen. Einem Endpunkt kann der Schlüsselwort (keyword) endpoint=vorangestellt werden. Die Angabe des Endpunkts ist optional, wenn der Server seine Bindungen bei der Endpunktzuordnung registriert hat. Weitere Informationen finden Sie unter RpcEpRegister.

Das Format und der Inhalt eines Endpunkts hängen von der angegebenen Protokollsequenz ab, wie in der folgenden Endpunkt-/Optionstabelle gezeigt.

Option

Protokollspezifische Optionen. Das Optionsfeld ist nicht erforderlich. Jede Option wird durch ein {name, value}-Paar angegeben, das denOptionswert der Syntaxoption verwendet=. Optionen werden für jede Protokollsequenz definiert, wie in der folgenden Tabelle "Endpunkt/Option" gezeigt.

Protokollsequenz Endpunkt Beispiele Optionsname
ncacn_nb_tcp Ganze Zahl zwischen 1 und 254. Viele Werte zwischen 0 und 32 sind von Microsoft reserviert. 100 Keine
ncacn_nb_ipx (wie oben) (wie oben) Keine
ncacn_nb_nb (wie oben) (wie oben) Keine
Ncacn_ip_tcp Internetportnummer. 1025 Keine
ncacn_np Named Pipe. Der Name muss mit "\\pipe" beginnen. \\pipe\\pipename Sicherheit
ncacn_spx Ganze Zahl zwischen 1 und 65535. 5.000 Keine
ncacn_dnet_nsp DECnet Phase IV Objektnummer (muss das #-Zeichen vorangestellt werden) oder Objektname. mailserver #17 Keine
ncacn_at_dsp Eine Zeichenfolge mit einer Länge von bis zu 22 Bytes. myservicesendpoint Keine
ncacn_vns_spp Vines SPP Portnummer zwischen 250 und 511. 500 Keine
ncadg_mq Ganze Zahl zwischen 1 und 65535. 5.000 Keine
ncacn_http Internetportnummer. 2215 HTTP- und RPC-Proxyservernamen, HttpConnection-Option
ncadg_ip_udp Internetportnummer. 1025 Keine
ncadg_ipx Ganze Zahl zwischen 1 und 65535. 5.000 Keine
ncalrpc Zeichenfolge, die den Anwendungs- oder Dienstnamen angibt. Die Zeichenfolge darf keine umgekehrten Schrägstriche enthalten. my_printer Sicherheit

Der Name der HttpConnectionOption-Option , der für die ncacn_http-Protokollsequenz unterstützt wird, hat den folgenden Wert.

Optionsname Wert
HttpConnectOption UseHttpProxy

Mit der HttpConnectionOption können Sie das Verhalten von RPC beim Herstellen von HTTP-Verbindungen anleiten. Der Wert UseHttpProxy weist RPC an, seinen Datenverkehr jederzeit über den HTTP-Proxy weiterzuleiten, auch wenn für den Client die Internetoptionen in Internet Explorer auf Proxyserver für lokale Adressen umgehen festgelegt sind. Diese Option weist den Client an, eine erzwungene Verbindung mit dem RPC-Proxy über den HTTP-Proxy herzustellen. Dadurch wird die Zeit zum Herstellen einer Verbindung beschleunigt, da jede Verzögerung bei der Suche nach dem RPC-Server vor der Verwendung des HTTP-Proxys umgangen wird.

Wenn diese HttpConnectionOption-Option verwendet wird und internet Explorer auf dem Client nicht für die Verwendung dieses HTTP-Proxys konfiguriert ist, können Verbindungen mit RPC_S_INVALID_NETWORK_OPTIONS fehlschlagen.

HttpConnectOption=UseHttpProxy

Weitere Informationen zur HttpConnectionOption finden Sie unter Verwenden von HTTP als RPC-Transport.

Der Name der Sicherheitsoption , der für die Protokollsequenzen ncalrpc, ncacn_np, ncadg_ip_udp und ncadg_ipx unterstützt wird, verwendet die folgenden Optionswerte.

Optionsname Optionswert
Security {identification | anonym | identitätswechsel} {dynamic | static} {true | false}

Wenn der Name der Sicherheitsoption angegeben ist, muss auch ein Eintrag aus jedem Satz von Sicherheitsoptionswerten angegeben werden. Die Optionswerte müssen durch ein Einzelnes Leerzeichen getrennt werden. Beispielsweise sind die folgenden Optionsfelder gültig:

Security=identification dynamic true
Security=impersonation static true

Die Werte der Sicherheitsoption haben die folgende Bedeutung.

Wert der Sicherheitsoption Beschreibung
Anonym Der Client ist gegenüber dem Server anonym.
Dynamisch Änderungen an der Clientsicherheitsidentität werden vom Server erkannt, wenn der Server Transportsicherheit verwendet. Dies ist der Standardmodus für die Sicherheit auf LRPC-Transportebene (ncalrpc) und für die Sicherheit der lokalen Named Pipe (ncacn_np) auf Transportebene.
False Effektiv = FALSE; Alle Einstellungen für Tokenberechtigungen, einschließlich der Einstellungen, die auf OFF festgelegt sind, sind im Token auf dem Server enthalten und können vom Server aktiviert werden. Berechtigungen sind nur für RPC-Aufrufe mit demselben Computer relevant.
Identifikation Der Server verfügt über Informationen zum Client, kann jedoch keine Identität annehmen.
Identitätswechsel Der Server kann im Auftrag des Clients innerhalb des lokalen Systems handeln (Die Sicherheit auf Transportebene unterstützt keine Delegierung).
Statisch Änderungen an der Clientsicherheitsidentität werden vom Server nicht erkannt, wenn der Server Transportsicherheit verwendet. Dies ist der einzige Modus, der für die Remote-Named Pipe-Sicherheit (ncacn_np) auf Transportebene verfügbar ist. Die Identität des Aufrufers wird während des ersten Remoteprozeduraufrufs für dieses Bindungshandle gespeichert, nicht zum Zeitpunkt der Erstellung des Bindungshandles.
Wahr Effektiv = TRUE; das Token auf dem Server enthält nur die Einstellungen für Tokenberechtigungen, die auf ON festgelegt sind. Berechtigungen, die auf OFF festgelegt sind, können vom Server nicht aktiviert werden, wenn diese Option verwendet wird. Berechtigungen sind nur für RPC-Aufrufe mit demselben Computer relevant.

Weitere Informationen zu Sicherheitsoptionen unter Sicherheit.

Bemerkungen

Leerzeichen sind in Zeichenfolgenbindungen nicht zulässig, es sei denn, dies ist für die Option-Syntax erforderlich. Die Standardeinstellungen für die Felder NetworkAddress, Endpoint und Option variieren je nach Wert des ProtocolSequence-Elements .

Für alle Zeichenfolgenbindungsfelder wird ein einzelner umgekehrter Schrägstrich (\) als Escapezeichen interpretiert. Zum Angeben eines einzelnen literalen umgekehrten Schrägstrichs müssen Sie zwei umgekehrte Schrägstriche (\\) angeben.

Eine Zeichenfolgenbindung enthält die Zeichendarstellung eines Bindungshandles und gelegentlich Teile eines Bindungshandles. Zeichenfolgenbindungen eignen sich für die Darstellung von Teilen eines Bindungshandles, können aber nicht für Remoteprozeduraufrufe verwendet werden. Sie müssen zunächst durch Aufrufen von RpcBindingFromStringBinding in ein Bindungshandle konvertiert werden.

Darüber hinaus enthält eine Zeichenfolgenbindung nicht alle Informationen aus einem Bindungshandle. Beispielsweise werden die einem Bindungshandle zugeordneten Authentifizierungsinformationen nicht in die Zeichenfolgenbindung übersetzt, die durch Aufrufen von RpcBindingToStringBinding zurückgegeben wird.

Während der Entwicklung einer verteilten Anwendung können Server ihre Bindungsinformationen mithilfe von Zeichenfolgenbindungen an Clients kommunizieren, um eine Client-Server-Beziehung herzustellen, ohne die Endpunktzuordnungsdatenbank oder die Name-Dienst-Datenbank zu verwenden. Um eine solche Beziehung herzustellen, verwenden Sie die Funktion RpcBindingToStringBinding , um ein oder mehrere Bindungshandles von einem Bindungshandlevektor in eine Zeichenfolgenbindung zu konvertieren und die Zeichenfolgenbindung für den Client bereitzustellen.

Beispiele

Im Folgenden sind Beispiele für gültige Zeichenfolgenbindungen aufgeführt. In diesen Beispielen wird obj-uuid aus Gründen der Einfachheit verwendet, um eine gültige UUID in Zeichenfolgenform darzustellen. Anstatt die UUID 308FB580-1EB2-11CA-923B-08002B1075A7 anzuzeigen, zeigen die Beispiele obj-uuid.

obj-uuid@ncadg_mq:mymqserver
obj-uuid@ncacn_http:major7.microsoft.com[2225]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80]
obj_uuid@ncacn_http:major7.microsoft.com[,HttpProxy=proxysvr:80,
    RpcProxy=websvr1.microsoft.com:80,HttpConnectOption=UseHttpProxy]
obj-uuid@ncacn_ip_tcp:16.20.16.27[2001]
obj-uuid@ncacn_ip_tcp:16.20.16.27[endpoint=2001]
obj-uuid@ncacn_nb_nb:
obj-uuid@ncacn_nb_nb:[100]
obj-uuid@ncacn_np:
obj-uuid@ncacn_np:[\\pipe\\p3,Security=impersonation static true]
obj-uuid@ncacn_np:\\\\marketing[\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\marketing[endpoint=\\pipe\\p2\\p3\\p4]
obj-uuid@ncacn_np:\\\\sales
obj-uuid@ncacn_np:\\\\sales[\\pipe\\p1,Security=identification dynamic true]
obj-uuid@ncalrpc:
obj-uuid@ncalrpc:[object1_name_demonstrating_that_these_can_be_lengthy]
obj-uuid@ncalrpc:[object2_name,Security=anonymous static true]
obj-uuid@ncacn_vns_spp:server@group@org[500]
obj-uuid@ncacn_dnet_nsp:took[elf_server]
obj-uuid@ncacn_dnet_nsp:took[endpoint=elf_server]
obj-uuid@ncadg_ip_udp:128.10.2.30
obj-uuid@ncadg_ip_udp:maryos.microsoft.com[1025]
obj-uuid@ncadg_ipx: ~0000000108002B30612C[5000]
obj-uuid@ncadg_ipx:printserver
obj-uuid@ncacn_spx:annaw[4390]
obj-uuid@ncacn_spx:~0000000108002B30612C

RpcBindingFromStringBinding

RpcBindingToStringBinding

RpcEpRegister

Verwenden von HTTP als RPC-Transport