次の方法で共有


文字列バインディング

文字列バインディングは、バインド オブジェクト UUID、RPC プロトコル シーケンス、ネットワーク アドレス、エンドポイントとエンドポイントのオプションを表す文字列で構成される符号なし文字列です。

ObjectUUID@ProtocolSequence:NetworkAddress[エンドポイント,オプション]

パラメーター

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 4 オクテットのインターネット アドレスまたはホスト名。 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 サーバー名
ncacn_vns_spp フォーム item@group@organizationの StreetTalk サーバー名 printserver@sdkdocs@microsoft
ncadg_mq サーバー名 myserver
ncacn_http インターネット アドレス (4 オクテットまたはフレンドリ名、またはローカル サーバー名) 128.10.2.30 somesvr@anywhere.com mylocalsvr
ncadg_ip_udp 4 オクテットのインターネット アドレスまたはホスト名 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 の整数。 0 から 32 までの多くの値は、Microsoft によって予約されています。 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 250 ~ 511 の間のブドウの SPP ポート番号。 500 何一つ
ncadg_mq 1 ~ 65535 の整数。 5000 何一つ
ncacn_http インターネット ポート番号。 2215 HTTP および RPC プロキシ サーバー名、HttpConnection オプション
ncadg_ip_udp インターネット ポート番号。 1025 何一つ
ncadg_ipx 1 ~ 65535 の整数。 5000 何一つ
ncalrpc する アプリケーションまたはサービス名を指定する文字列。 文字列に円記号を含めることはできません。 my_printer 安全

ncacn_http プロトコル シーケンスでサポートされている HttpConnectionOption オプション名は、次の値を受け取ります。

オプション名 価値
HttpConnectOption UseHttpProxy

HttpConnectionOption を使用すると、HTTP 接続を行うときに RPC の動作を指示できます。 UseHttpProxy 値は、クライアントが Internet Explorer でインターネット オプションを設定してローカル アドレスのプロキシ サーバーをバイパスする場合など、常に HTTP プロキシ経由でトラフィックをルーティングするように RPC に指示します。 このオプションは、HTTP プロキシを介して RPC プロキシに強制的に接続するようにクライアントに指示します。 これにより、HTTP プロキシを使用する直前に RPC サーバーの遅延検索がバイパスされるため、接続を確立する時間が短縮されます。

この HttpConnectionOption オプションが使用され、クライアント上の Internet Explorer がその Http プロキシを使用するように構成されていない場合、RPC_S_INVALID_NETWORK_OPTIONSで接続が失敗する可能性があります。

HttpConnectOption=UseHttpProxy

HttpConnectionOptionの詳細については、「HTTP を RPC トランスポート として使用する」を参照してください。

ncalrpc、ncacn_np、ncadg_ip_udp、およびncadg_ipxプロトコル シーケンスでサポートされている Security オプション名は、次のオプション値を受け取ります。

オプション名 オプション値
セキュリティ {identification | anonymous | impersonation}{dynamic | static}{true | false}

セキュリティー・オプション名を指定する場合は、セキュリティー・オプション値の各セットから 1 つの項目も指定する必要があります。 オプション値は、単一スペース文字で区切る必要があります。 たとえば、次の Option フィールドは有効です。

Security=identification dynamic true
Security=impersonation static true

セキュリティ オプションの値には、次の意味があります。

セキュリティ オプションの値 形容
アノニマス クライアントはサーバーに対して匿名です。
動的 クライアント セキュリティ ID の変更は、サーバーがトランスポート セキュリティを使用するときにサーバーによって表示されます。 これは、LRPC (ncalrpc) トランスポート レベルのセキュリティと、ローカルの名前付きパイプ (ncacn_np) トランスポート レベルのセキュリティの既定のモードです。
false Effective = FALSE;OFF に設定されているものを含むすべてのトークン特権設定は、サーバー上のトークンに含まれており、サーバーで有効にすることができます。 権限は、同じマシンの RPC 呼び出しにのみ関連します。
識別 サーバーにはクライアントに関する情報がありますが、偽装することはできません。
偽装 サーバーは、ローカル システム内のクライアントに代わって動作できます (トランスポート レベルのセキュリティでは委任はサポートされません)。
静的 サーバーがトランスポート セキュリティを使用している場合、クライアント セキュリティ ID の変更はサーバーによって表示されません。 これは、リモートの名前付きパイプ (ncacn_np) トランスポート レベルのセキュリティで使用できる唯一のモードです。 呼び出し元の ID は、バインド ハンドルが作成された時点ではなく、そのバインド ハンドルに対する最初のリモート プロシージャ 呼び出し中に保存されます。
True Effective = TRUE;ON に設定されているトークン特権設定のみがサーバー上のトークンに含まれます。 このオプションを使用する場合、OFF に設定された権限はサーバーによって有効にできません。 権限は、同じマシンの RPC 呼び出しにのみ関連します。

セキュリティ オプションの詳細については、「セキュリティ」を参照してください。

備考

Option 構文で必要な場合を除き、文字列バインドでは空白は使用できません。 NetworkAddressEndpoint、および Option フィールドの既定の設定は、ProtocolSequence メンバーの値によって異なります。

すべての文字列バインド フィールドでは、1 つの円記号 (\) がエスケープ文字として解釈されます。 1 つのリテラル円記号文字を指定するには、2 つの円記号 (\\) を指定する必要があります。

文字列バインディングには、バインディング ハンドルの文字表現と、バインディング ハンドルの一部が含まれる場合があります。 文字列バインディングは、バインド ハンドルの一部を表す場合に便利ですが、リモート プロシージャ 呼び出しを行うために使用することはできません。 最初に、RpcBindingFromStringBinding呼び出して、バインド ハンドルに変換する必要があります。

さらに、文字列バインディングには、バインド ハンドルからのすべての情報が含まれているわけではありません。 たとえば、バインド ハンドルに関連付けられている認証情報がある場合、RpcBindingToStringBindingを呼び出すことによって返される文字列バインディングには変換されません。

分散アプリケーションの開発中、サーバーは、エンドポイント マップ データベースまたはネーム サービス データベースを使用せずに、文字列バインディングを使用してクライアントにバインディング情報を通信し、クライアントとサーバーの関係を確立できます。 このようなリレーションシップを確立するには、RpcBindingToStringBinding関数を使用して、1 つ以上のバインド ハンドルをバインド ハンドル ベクターから文字列バインドに変換し、文字列バインディングをクライアントに提供します。

有効な文字列バインディングの例を次に示します。 これらの例では、obj-uuid は、文字列形式で有効な UUID を表すために便利に使用されます。 UUID 308FB580-1EB2-11CA-923B-08002B1075A7 を示す代わりに、例は 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

RPC トランスポート として HTTP を使用する