訓練
字串系結
字串系結是由代表系結物件 UUID、RPC 通訊協定順序、網路位址和端點選項的字串所組成的不帶正負號字元字串。
ObjectUUID@ProtocolSequence:NetworkAddress[Endpoint,Option]
-
ObjectUUID
-
遠端程序呼叫所操作物件的UUID。 在伺服器上,RPC 執行時間程式庫會將物件類型對應至管理員進入點向量, (函式指標陣列) 叫用正確的管理員常式。 如需如何將物件 UUID 對應至管理員進入點向量的討論,請參閱 註冊介面。
-
ProtocolSequence
-
字元字串,代表 RPC 通訊協定 (的有效組合,例如 ncacn) 、TCP) 等傳輸通訊協定 (,以及 IP) 之類的網路通訊協定 (。 Microsoft RPC 支援通訊 協定序列常數中指定的下列通訊協定。
-
NetworkAddress
-
接收遠端程序呼叫的系統網路位址。
注意
Windows XP 不支援下列通訊協定序列:
網路位址的格式和內容取決於指定的通訊協定順序,如下所示。
通訊協定順序 網路位址 範例 ncacn_nb_tcp 電腦名稱 myserver ncacn_nb_ipx 電腦名稱 myserver ncacn_nb_nb 電腦名稱 myserver ncacn_ip_tcp 四八位網際網路位址或主機名稱。 如果已安裝 IPv6 網路堆疊,則完全支援 IPv6,也接受 IPv6 位址。 128.10.2.30 anynode.microsoft.com ncacn_np 伺服器名稱 (前置雙反斜線是選擇性的) myserver \\myotherserver ncacn_spx IPX 網際網路位址或伺服器名稱 ~0000000108002B30612C myserver ncacn_dnet_nsp 區域和節點語法 4.120 ncacn_at_dsp 電腦名稱稱,選擇性地後面接著 @ 和 AppleTalk 區功能變數名稱稱。 預設為 @*,如果未提供任何區域,則為用戶端的區域 servername@zonename servername ncacn_vns_spp 格式item@group@organization的 StreetTalk 伺服器名稱 printserver@sdkdocs@microsoft ncadg_mq 伺服器名稱 myserver ncacn_HTTP 網際網路位址 (四八位或易記名稱,或本機伺服器名稱 128.10.2.30 somesvr@anywhere.com mylocalsvr ncadg_ip_udp 四八位網際網路位址或主機名稱 128.10.2.30 anynode.microsoft.com ncadg_ipx IPX 網際網路位址或伺服器名稱 ~0000000108002B30612C myserver ncalrpc 電腦名稱 thismachine [網路位址] 欄位是選擇性的。 當您未指定網路位址時,字串系結會參考您的本機主機。 當您使用 ncalrpc 通訊協定序列時,可以指定本機電腦的名稱,不過這麼做完全不必要。
-
端點
-
接收遠端程序呼叫之進程的端點或位址。 端點前面可以加上關鍵字 endpoint=。 如果伺服器已向端點對應程式註冊其系結,則指定端點是選擇性的。 請參閱 RpcEpRegister。
端點的格式和內容取決於指定的通訊協定順序,如下列端點/選項表所示。
-
選項
-
通訊協定特定選項。 不需要選項欄位。 每個選項都是由使用語法選項名稱=選項值的{name, value} 配對所指定。 每個通訊協定順序都會定義選項,如下列 Endpoint/Option 資料表所示。
通訊協定順序 端點 範例 選項名稱 ncacn_nb_tcp 介於 1 到 254 之間的整數。 Microsoft 會保留介於 0 到 32 之間的許多值。 100 無 ncacn_nb_ipx 如上所示的 () 如上所示的 () 無 ncacn_nb_nb 如上 () 如上 () 無 ncacn_ip_tcp 網際網路埠號碼。 1025 無 ncacn_np 具名管道。 名稱開頭必須是 「\\pipe」。 \\pipe\\pipename 安全性 ncacn_spx 介於 1 到 65535 之間的整數。 5000 無 ncacn_dnet_nsp DECnet 階段 IV 物件編號 (前面必須加上 # 字元) 或物件名稱。 mailserver #17 無 ncacn_at_dsp 字元字串,最長為 22 個位元組。 myservicesendpoint 無 ncacn_vns_spp Vines SPP 埠號碼介於 250 到 511 之間。 500 無 ncadg_mq 介於 1 到 65535 之間的整數。 5000 無 ncacn_HTTP 網際網路埠號碼。 2215 HTTP 和 RPC Proxy 伺服器名稱、HttpConnection 選項 ncadg_ip_udp 網際網路埠號碼。 1025 無 ncadg_ipx 介於 1 到 65535 之間的整數。 5000 無 ncalrpc 指定應用程式或服務名稱的字串。 字串不能包含任何反斜線字元。 my_printer 安全性 ncacn_HTTP通訊協定序列支援的 HttpConnectionOption 選項名稱會採用下列值。
選項名稱 值 HttpConnectOption UseHttpProxy HttpConnectionOption可讓您在建立 HTTP 連線時引導 RPC 行為。 UseHttpProxy值會指示 RPC 隨時透過 Http Proxy 路由傳送其流量,包括當用戶端在 Internet Explorer 中設定為略過本機位址的 Proxy 伺服器時。 此選項會指示用戶端透過 Http Proxy 強制連線到 RPC Proxy。 這會加快建立連線的時間,因為它會略過直接在使用 HTTP Proxy 之前搜尋 RPC 伺服器的任何延遲。
如果使用這個 HttpConnectionOption 選項,且用戶端上的 Internet Explorer 未設定為使用該 Http Proxy, 則連線可能會因為RPC_S_INVALID_NETWORK_OPTIONS而失敗。
HttpConnectOption=UseHttpProxy
如需 HttpConnectionOption的詳細資訊,請參閱 使用 HTTP 作為 RPC 傳輸。
ncalrpc、ncacn_np、ncadg_ip_udp和ncadg_ipx通訊協定序列支援的 [安全性 ] 選項名稱會採用下列選項值。
選項名稱 選項值 安全性 {identification | anonymous | impersonation}{dynamic | static}{true | false} 如果指定安全性選項名稱,也必須提供每個安全性選項值集合中的一個專案。 選項值必須以單一空白字元分隔。 例如,下列 [選項 ] 欄位有效:
Security=identification dynamic true Security=impersonation static true
安全性選項值具有下列意義。
安全性選項值 描述 匿名 用戶端對伺服器而言是匿名。 動態 當伺服器使用傳輸安全性時,伺服器會看到用戶端安全性身分識別的變更。 這是 LRPC (ncalrpc) 傳輸層級安全性的預設模式,以及本機具名管道 (ncacn_np) 傳輸層級安全性。 False Effective = FALSE;所有權杖許可權設定,包括設定為 OFF 的設定都會包含在伺服器上的權杖中,而且可由伺服器啟用。 許可權僅適用于同一部電腦 RPC 呼叫。 識別 伺服器具有用戶端的相關資訊,但無法模擬。 模擬 伺服器可以代表本機系統內的用戶端, (傳輸層級安全性不支援委派) 。 靜態 當伺服器使用傳輸安全性時,伺服器不會看到用戶端安全性身分識別的變更。 這是遠端具名管道 (ncacn_np) 傳輸層級安全性的唯一模式。 呼叫端的身分識別會在該系結控制碼的第一個遠端程序呼叫期間儲存,而不是在建立系結控制碼時儲存。 True Effective = TRUE;只有設定為 ON 的權杖許可權設定才會包含在伺服器上的權杖中。 如果使用此選項,伺服器就無法開啟設定為 OFF 的許可權。 許可權僅適用于同一部電腦 RPC 呼叫。 如需安全性選項的詳細資訊, 請參閱安全性。
除非 Option 語法需要,否則字串系結中不允許空白字元。 NetworkAddress、Endpoint和Option欄位的預設設定會根據ProtocolSequence成員的值而有所不同。
對於所有字串系結欄位,單一反斜線字元 (\) 會解譯為逸出字元。 若要指定單一常值反斜線字元,您必須提供兩個反斜線字元 (\\) 。
字串系結包含系結控制碼的字元表示,以及系結控制碼的偶數部分。 字串系結很方便表示系結控制碼的部分,但無法用於進行遠端程序呼叫。 必須先呼叫 RpcBindingFromStringBindingBinding,才能將它們轉換成系結控制碼。
此外,字串系結不包含系結控制碼中的所有資訊。 例如,如果有任何與系結控制碼相關聯的驗證資訊,則不會轉譯為透過呼叫 RpcBindingToStringBinding 傳回的字串系結。
在分散式應用程式開發期間,伺服器可以使用字串系結將其系結資訊傳達給用戶端,以建立用戶端-伺服器關聯性,而不需使用端點對應資料庫或名稱服務資料庫。 若要建立這類關聯性,請使用 RpcBindingToStringBinding 函式,將一或多個系結控制碼從系結控制碼向量轉換成字串系結,並提供字串系結給用戶端。
以下是有效字串系結的範例。 在這些範例中, obj-uuid 可用來方便表示字串格式的有效 UUID。 範例會顯示 obj-uuid,而不是顯示 UUID 308FB580-1EB2-11CA-923B-08002B1075A7。
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
其他資源
文件
-
RpcStringBindingComposeW 函式 (rpcdce.h) - Win32 apps
RpcStringBindingComposeW (Unicode) 函式 (rpcdce.h) 會建立字串系結句柄。
-
RpcBindingFromStringBinding 函式 (rpcdce.h) - Win32 apps
RpcBindingFromStringBinding 函式 (rpcdce.h) 會從系結句柄的字串表示傳回系結句柄。
-
rpcStringBindingCompose 函式 (rpcdce.h) - Win32 apps
rpcStringBindingCompose 函式 (rpcdce.h) 會建立字串系結句柄。