ポート割り当てと選択的バインディング用のレジストリの構成

Windows 2000 以降では、windows Resource Kit の Rpccfg.exe というユーティリティを使用してバインドを設定する必要があります。 詳細については、適切なオペレーティング システムのバージョンについては、Windows リソース キットを参照してください。

Windows 2000 より前のバージョンの Windows の場合、次の表のレジストリ キーは、動的ポート割り当てとマルチホーム コンピューター上の NIC へのバインドのシステムの既定値を指定します。 最初にこれらのキーを作成してから、適切な設定を指定する必要があります。

RpcServerUseProtseqEx 関数を使用すると、これらの設定に影響します。 開発者は、このセクションで説明するレジストリ設定と、ポート割り当てを管理する際の RpcServerUseProtseqEx 関数について理解している必要があります。 次の表に、3 つの架空のアプリケーションを含む例を示し、これらの設定と RpcServerUseProtseqEx 関数の相互運用方法を示します。

キーがない場合、または無効な値が含まれている場合は、構成全体が無効としてマークされ、ncacn_ip_tcpまたはncadg_ip_udpに対するすべての RpcServerUseProtseq* 呼び出しは失敗します。

Note

プロセスに割り当てられたポートは、そのプロセスが終了するまで割り当てられたままになります。 使用可能なすべてのポートが使用されている場合、関数は RPC_S_OUT_OF_RESOURCESを返します。

 

ポート キー データ型 説明
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               Ports
REG_MULTI_SZ インターネットから使用可能なすべてのポートまたはインターネットから使用できないすべてのポートで構成される IP ポート範囲のセットを指定します。 各文字列は、1 つのポートまたは包括的なポートセット (たとえば、1000 から 1050、1984) を表します。 エントリが 0 から 65535 の範囲外の場合、または文字列を解釈できない場合、RPC ランタイムは構成全体を無効として扱います。
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               PortsInternetAvailable
REG_SZ Y または N (大文字と小文字は区別されません)。 Y の場合、[ポート] キーに一覧表示されているポートは、そのコンピューター上のすべてのインターネットで使用可能なポートです。 N の場合、[ポート] キーに一覧表示されているポートはすべて、インターネットで使用できないポートです。
HKEY_LOCAL_MACHINE   Software      Microsoft         Rpc            Internet               UseInternetPorts
REG_SZ Y または N (大文字と小文字は区別されません)。 システムの既定のポリシーを指定します。 Y の場合、既定を使用するプロセスには、上記で定義されているように、インターネットで使用可能なポートのセットからポートが割り当てられます。 N の場合、既定値を使用するプロセスには、イントラネット専用ポートのセットからポートが割り当てられます。
HKEY_LOCAL_MACHINE   System      CurrentControlSet         Services            Rpc               Linkage                  Bind
REG_MULTI_SZ 既定でバインドするすべての NIC のデバイス名を一覧表示します (たとえば、\Device\AMDPCN1)。 キーが存在しない場合、サーバーはすべての NIC にバインドされます。 キーが存在する場合、NICFlags フィールドが RPC_C_BIND_TO_ALL_NICS に設定されていない限り、サーバーはキーで指定された NIC にバインドされます。 キーに null ("") 値がある場合、構成は無効としてマークされ、ncacn_ip_tcpまたはncadg_ip_udpに対するすべての RpcServerUseProtseq* の呼び出しは失敗します。

 

次の表は、前の表で定義した設定によって 3 つのサンプル アプリケーションがどのように影響を受けるか、および RpcServerUseProtseqEx 関数を使用して適用された設定にも影響を与える方法を示しています。

この例では、次の 3 つの架空のアプリケーションが考慮されます。

  • InternetApp: このアプリケーションはインターネットへの公開を目的としており、RpcServerUseProtseqEx 関数に渡されるRPC_POLICY構造体の EndpointFlags メンバーでRPC_C_USE_INTERNET_PORTを指定しています。
  • LocalApp: このアプリケーションはインターネットへの公開を目的とせず、RpcServerUseProtseqEx 関数に渡されるRPC_POLICY構造体の EndpointFlags メンバーにRPC_C_USE_INTRANET_PORTを指定しています。
  • DefaultApp: このアプリケーションは、RpcServerUseProtseqEx 関数に渡されるRPC_POLICY構造体の EndpointFlags メンバーに 0 を指定します。

次の表では、前の表で説明したレジストリ エントリで指定された値に基づいて、これらの設定に与える影響について説明します。 書式設定に関する考慮事項として、次のコードが割り当てられます。

PIA = PortsInternetAvailable キー値

UIP = UseInternetPorts キー値

この例のために、ポート キーの値は、エントリごとに 5000 から 5100 です。

Application PIA Uip 結果
InternetApp Y Y 5000 ~ 5100 のポートを使用します
LocalApp Y Y 5000 ~ 5100 の範囲外のポートを使用します
DefaultApp Y Y 5000 ~ 5100 のポートを使用します
InternetApp Y N 5000 ~ 5100 のポートを使用します
LocalApp Y N 5000 ~ 5100 の範囲外のポートを使用します
DefaultApp Y N 5000 ~ 5100 の範囲外のポートを使用します
InternetApp N Y 5000 ~ 5100 の範囲外のポートを使用します
LocalApp N Y 5000 ~ 5100 のポートを使用します
DefaultApp N Y 5000 ~ 5100 の範囲外のポートを使用します
InternetApp N N 5000 ~ 5100 の範囲外のポートを使用します
LocalApp N N 5000 ~ 5100 のポートを使用します
DefaultApp N N 5000 ~ 5100 のポートを使用します

 

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqEpEx

RpcServerUseProtseqIfEx

ncacn_ip_tcp

ncadg_ip_udp