다음을 통해 공유


RpcServerUseProtseqEpEx 함수(rpcdce.h)

RpcServerUseProtseqEpEx 함수는 RPC 런타임 라이브러리에 지정된 엔드포인트와 결합된 지정된 프로토콜 시퀀스를 사용하여 원격 프로시저 호출을 받도록 지시합니다.

구문

RPC_STATUS RpcServerUseProtseqEpEx(
  RPC_WSTR     Protseq,
  unsigned int MaxCalls,
  RPC_WSTR     Endpoint,
  void         *SecurityDescriptor,
  PRPC_POLICY  Policy
);

매개 변수

Protseq

RPC 런타임 라이브러리에 등록할 프로토콜 시퀀스의 문자열 식별자에 대한 포인터입니다.

MaxCalls

ncacn_ip_tcp 프로토콜 시퀀스의 백로그 큐 길이입니다. 다른 모든 프로토콜 시퀀스는 이 매개 변수를 무시합니다. RPC_C_PROTSEQ_MAX_REQS_DEFAULT 사용하여 기본값을 지정합니다. 설명 부분을 참조하세요.

Endpoint

Protseq에서 지정한 프로토콜 시퀀스에 대한 바인딩을 만드는 데 사용할 엔드포인트 주소 정보에 대한 포인터입니다.

SecurityDescriptor

보안 하위 시스템에 대해 제공되는 선택적 매개 변수에 대한 포인터입니다. ncacn_npncalrpc 프로토콜 시퀀스에만 사용됩니다. 다른 모든 프로토콜 시퀀스는 이 매개 변수를 무시합니다. 서버를 안전하게 만들기 위해 엔드포인트에서 보안 설명자를 사용하지 않는 것이 좋습니다. 이 매개 변수는 이 API의 DCE 사양에 표시되지 않습니다.

Policy

전송별 특성을 설정하는 플래그가 포함된 RPC_POLICY 구조체에 대한 포인터입니다. ncadg_mq 전송의 경우 이러한 플래그는 서버 프로세스-수신 큐의 속성을 지정합니다. ncacn_ip_tcp 또는 ncadg_ip_udp 전송의 경우 이러한 플래그는 동적 포트에 대한 포트 할당을 제한하고 다중 호스트 컴퓨터가 네트워크 인터페이스 카드에 선택적으로 바인딩되도록 허용합니다.

정책 필드의 플래그 설정은 ncacn_ip_tcp, ncadg_ip_udp 또는 ncadg_mq 프로토콜 시퀀스가 사용 중인 경우에만 적용됩니다. 다른 모든 프로토콜 시퀀스의 경우 RPC 런타임은 이러한 값을 무시합니다.

참고 포트가 엔드포인트 자체에 지정되므로 RpcServerUseProtseqEpEx 함수가 호출될 때 동적 엔드포인트와 연결된 정책의 일부가 무시됩니다.
 

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RPC_S_PROTSEQ_NOT_SUPPORTED
프로토콜 시퀀스는 이 호스트에서 지원되지 않습니다.
RPC_S_INVALID_RPC_PROTSEQ
프로토콜 시퀀스가 잘못되었습니다.
RPC_S_INVALID_ENDPOINT_FORMAT
엔드포인트 형식이 잘못되었습니다.
RPC_S_OUT_OF_MEMORY
시스템이 메모리가 부족합니다.
RPC_S_DUPLICATE_ENDPOINT
엔드포인트가 중복되었습니다.
RPC_S_INVALID_SECURITY_DESC
보안 설명자가 잘못되었습니다.
 
참고 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.
 

설명

RpcServerUseProtseqEpEx의 매개 변수 및 효과는 RpcServerUseProtseqEp의 매개 변수와 효과를 곱합니다. 차이점은 엔드포인트에서 특정 정책을 설정할 수 있는 Policy 매개 변수입니다. RPC_POLICY 구조체의 NICFlags 필드를 0으로 설정하면 이 확장 함수는 ncacn_ip_tcp 또는 ncadg_ip_udp 전송과 함께 사용할 때 원래 RpcServerUseProtseqEp과 동일합니다.

서버 애플리케이션은 RpcServerUseProtseqEpEx 를 호출하여 RPC 런타임 라이브러리에 하나의 프로토콜 시퀀스를 등록합니다. 각 프로토콜 시퀀스 등록 시 RpcServerUseProtseqEpEx 에는 지정된 엔드포인트 주소 정보가 포함됩니다.

원격 프로시저 호출 요청을 받으려면 서버가 RPC 런타임 라이브러리에 프로토콜 시퀀스를 하나 이상 등록해야 합니다. 서버 애플리케이션은 이 루틴을 여러 번 호출하여 추가 프로토콜 시퀀스 및 엔드포인트를 등록할 수 있습니다. 서버에서 등록한 각 프로토콜 시퀀스에 대해 RPC 런타임 라이브러리는 서버가 원격 프로시저 호출 요청을 수신하는 하나 이상의 엔드포인트를 만듭니다. RPC 런타임 라이브러리는 각 프로토콜 시퀀스에 대해 서로 다른 엔드포인트를 만듭니다. 그러나 프로세스의 각 인터페이스는 모든 엔드포인트를 통해 액세스할 수 있습니다. 자세한 내용은 보안 RPC 클라이언트 또는 서버 작성을 참조하세요.

MaxCalls의 경우 애플리케이션에서 제공하는 값은 힌트일 뿐입니다. RPC 런타임 또는 Windows 소켓 공급자가 값을 재정의할 수 있습니다. 예를 들어 Windows XP 또는 Windows 2000 Professional에서는 값이 5로 제한됩니다. 5보다 큰 값은 무시되고 5는 대신 사용됩니다. Windows Server 2003 및 Windows 2000 Server에서 값이 적용됩니다.

애플리케이션은 MaxCalls에서 적절한 값을 전달하도록 주의해야 합니다. 서버, 고급 서버 또는 데이터 센터 서버의 값이 크면 페이징되지 않은 풀 메모리가 많이 사용될 수 있습니다. 너무 작은 값을 사용하면 백로그 큐가 소진될 경우 서버에서 TCP RST가 TCP SYN 패킷을 충족할 수 있으므로 불리합니다. 애플리케이션 개발자는 MaxCalls에 대한 적절한 값을 결정할 때 메모리 공간과 확장성 요구 사항의 균형을 유지해야 합니다.

컴퓨터가 선택적 바인딩을 사용하도록 구성된 경우 성공적인 반환은 서버가 컴퓨터에 있는 모든 네트워크 인터페이스에 대한 엔드포인트를 생성했음을 보장하지 않습니다. RPC 런타임은 선택적 바인딩 설정에 따라 일부 네트워크 인터페이스에서 수신 대기할 수 없습니다. 또한 인터페이스가 DHCP를 사용하여 IP 주소를 아직 받지 못한 경우 RPC 서버는 DHCP 주소가 할당될 때까지 네트워크 인터페이스에서 수신 대기하지 않습니다. 반환이 성공하면 서버가 하나 이상의 네트워크 인터페이스에서 수신 대기하고 있음을 의미합니다. RpcServerInqBindings 함수를 호출하여 원격 프로시저 호출을 받을 수 있는 바인딩 핸들의 전체 목록입니다.

자세한 내용은 서버 쪽 바인딩, 문자열 바인딩, 포트 할당 및 선택적 바인딩에 대한 레지스트리 구성, RPC 메시지 큐 및 MIDL 참조 페이지 메시지ncadg_mq 참조하세요.

요구 사항

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

추가 정보

RPC_POLICY

RpcServerUseAllProtseqsEx

RpcServerUseAllProtseqsIfEx

RpcServerUseProtseqEx

RpcServerUseProtseqIfEx

보안 RPC 클라이언트 또는 서버 작성