Share via


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 인터페이스에 대한 액세스를 제어하기 위한 보안 설명자를 지정하는 기능입니다.

SecurityDescriptorIfCallbackFn을 모두 지정하면 SecurityDescriptor의 보안 설명자가 먼저 검사되고 보안 설명자에 대한 액세스 검사 통과한 후 IfCallbackFn의 콜백이 호출됩니다.

SecurityDescriptorNULL로 설정된 RpcServerRegisterIf3을 호출하거나 RpcServerRegisterIf, RpcServerRegisterIf2 또는 RpcServerRegisterIfEx를 호출하여 인터페이스를 등록하는 경우 기본 보안 설명자가 사용됩니다. RPC 서버가 AppContainer 프로세스가 아닌 경우 기본 보안 설명자는 AppContainer 프로세스에서 인터페이스로의 액세스를 허용하지 않습니다. RPC 서버가 AppContainer 프로세스인 경우 기본 보안 설명자는 다른 AppContainer 프로세스의 모든 프로세스에서 인터페이스로의 액세스를 허용하지 않습니다. 기본 보안 설명자는 낮은 무결성 프로세스를 비롯한 일반 프로세스의 액세스를 허용합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 rpcdce.h(Rpc.h 포함)
라이브러리 Rpcrt4.lib
DLL Rpcrt4.dll

추가 정보

인터페이스 등록

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx