RpcServerRegisterIf3 関数 (rpcdce.h)

RpcServerRegisterIf3 関数は、RPC ランタイム ライブラリにインターフェイスを登録します。

構文

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

パラメーター

[in] IfSpec

登録するインターフェイスを示す MIDL によって生成された構造体。

[in, optional] MgrTypeUuid

MgrEpv パラメーターに関連付ける UUID 型へのポインター。 null パラメーター値 (または nil UUID) を指定すると、IfSpec が nil 型 UUID に登録されます。

[in, optional] MgrEpv

マネージャー ルーチンのエントリ ポイント ベクター (EPV)。 MIDL で生成された既定の EPV を使用するには、 null 値を指定します。 詳細については、「 RPC_MGR_EPV」を参照してください。

[in] Flags

フラグ。 フラグ値の一覧については、「 インターフェイス登録フラグ」を参照してください。

[in] MaxCalls

自動リッスン インターフェイスでサーバーが受け入れられる同時リモート プロシージャ コール要求の最大数。 MaxCalls パラメーターは、自動リッスン インターフェイスでのみ適用でき、自動リッスンではないインターフェイスでは無視されます。 RPC ランタイム ライブラリは、 MaxCalls で指定された呼び出し数よりも多くの同時呼び出し要求がサーバーで許可されないように最善を尽くします。 実際の数は大きくすることができ、プロトコル シーケンスごとに異なる場合があります。

他のインターフェイスでの呼び出しは、RpcServerListen 関数呼び出しで指定されたプロセス全体の MaxCalls パラメーターの値によって制御されます。

同時呼び出しの数が問題でない場合は、RPC_C_LISTEN_MAX_CALLS_DEFAULTを使用して既定値を指定することで、サーバー側のパフォーマンスをわずかに向上させることができます。 これにより、RPC ランタイム環境で不要な制限が適用されなくなります。

[in] MaxRpcSize

受信データ ブロックの最大サイズ (バイト単位)。 このパラメーターは、悪意のあるサービス拒否攻撃を防ぐのに役立ちます。 リモート プロシージャ コールのデータ ブロックが MaxRpcSize より大きい場合、RPC ランタイム ライブラリは呼び出しを拒否し、RPC_S_ACCESS_DENIED エラーをクライアントに送信します。 このパラメーターに値 (unsigned int) –1 を指定すると、受信データ ブロックのサイズの制限が解除されます。 このパラメーターは、 ncalrpc プロトコルを介した呼び出しには影響しません。

[in, optional] IfCallback

セキュリティ コールバック関数。コールバックがない場合は NULL 。 登録された各インターフェイスには、異なるコールバック関数を指定できます。 RpcServerRegisterIf2 の解説を参照してください。

[in, optional] SecurityDescriptor

RPC インターフェイスにアクセスするためのセキュリティ記述子。 登録された各インターフェイスは、異なるセキュリティ記述子を持つことができます。

戻り値

成功したRPC_S_OKを返します。

メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

注釈

RpcServerRegisterIf3 関数のパラメーターと効果は、RpcServerRegisterIf2 関数のパラメーターと効果を拡張します。 違いは、登録済みの RPC インターフェイスへのアクセスを制御するためのセキュリティ記述子を指定する機能です。

SecurityDescriptor と IfCallbackFn の両方を指定すると、SecurityDescriptor のセキュリティ記述子が最初にチェックされ、セキュリティ記述子に対するアクセスチェックが渡された後に IfCallbackFn のコールバックが呼び出されます。

SecurityDescriptor を NULL に設定して RpcServerRegisterIf3 を呼び出すか、RpcServerRegisterIf、RpcServerRegisterIf2、または RpcServerRegisterIfEx を呼び出してインターフェイスを登録する場合、既定のセキュリティ記述子が使用されます。 RPC サーバーが AppContainer プロセスでない場合、既定のセキュリティ記述子では、AppContainer プロセスからインターフェイスへのアクセスは許可されません。 RPC サーバーが AppContainer プロセスの場合、既定のセキュリティ記述子では、他の AppContainer プロセスのプロセスからインターフェイスへのアクセスは許可されません。 既定のセキュリティ記述子では、低整合性プロセスを含む通常のプロセスからのアクセスが許可されます。

要件

要件 値
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rpcdce.h (Rpc.h を含む)
Library Rpcrt4.lib
[DLL] Rpcrt4.dll

こちらもご覧ください

インターフェイスの登録

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx