IMessageFilter::RetryRejectedCall 메서드(objidl.h)

애플리케이션에 재시도, 취소 또는 작업 전환 옵션을 제공하는 대화 상자를 표시할 수 있는 기회를 제공합니다.

구문

DWORD RetryRejectedCall(
  [in] HTASK htaskCallee,
  [in] DWORD dwTickCount,
  [in] DWORD dwRejectType
);

매개 변수

[in] htaskCallee

호출된 애플리케이션의 스레드 ID입니다.

[in] dwTickCount

호출된 이후 경과된 틱의 수입니다.

[in] dwRejectType

개체 애플리케이션에서 반환한 대로 SERVERCALL_REJECTED 또는 SERVERCALL_RETRYLATER 지정합니다.

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 값 Description
-1
호출을 취소해야 합니다. 그런 다음 COM은 원래 메서드 호출에서 RPC_E_CALL_REJECTED 반환합니다.
0 ≤ < 100
호출은 즉시 다시 시도됩니다.
100 ≤
COM은 이 시간(밀리초)을 기다린 다음, 호출을 다시 시도합니다.

설명

COM은 호출자의 IMessageFilter 인터페이스에서 IMessageFilter::HandleInComingCall 메서드에서 SERVERCALL_RETRYLATER 또는 SERVERCALL_REJECTED 받은 직후 호출자의 IMessageFilter 인터페이스에서 RetryRejectedCall을 호출합니다.

호출된 태스크가 호출을 거부하는 경우 애플리케이션은 이러한 호출을 처리할 수 없는 상태일 수 있으며 일시적으로만 처리할 수 있습니다. 이 경우 COM은 호출자에게 반환하고 RetryRejectedCall 을 실행하여 거부된 호출을 다시 시도해야 하는지 여부를 결정합니다.

애플리케이션은 SERVERCALL_RETRYLATER 함께 반환된 호출을 자동으로 다시 시도해야 합니다. 적절한 시간이 경과한 후 약 30초가 지나면 애플리케이션에 사용 중인 대화 상자가 표시되어야 합니다. 이 대화 상자의 표준 구현은 OLEDLG 라이브러리에서 사용할 수 있습니다. 호출 수신자는 일시적으로 호출을 처리할 수 있는 상태에 있을 수 있습니다. 매크로 또는 스크립트를 실행하는 백그라운드 작업과 같은 특수한 종류의 호출 애플리케이션에 대해 대기하고 다시 시도하는 옵션이 제공되므로 방해받지 않는 방식으로 호출을 다시 시도할 수 있습니다.

대화 상자가 표시되면 사용자가 취소하도록 선택하면 RetryRejectedCall 은 -1을 반환하고 RPC_E_CALL_REJECTED 함께 호출이 실패하는 것처럼 보입니다.

클라이언트가 IMessageFilter를 구현하고 원격 컴퓨터에서 서버 메서드를 호출하는 경우 RetryRejectedCall 이 호출되지 않습니다.

참고htaskCallee 매개 변수는 HTASK로 형식화되지만 호출된 스레드의 스레드 ID를 포함합니다. IMessageFilter 인터페이스를 구현할 때 OpenThread 함수를 호출하여 htaskCallee 매개 변수에서 스레드 핸들을 가져오고 GetProcessIdOfThread 함수를 호출하여 프로세스 ID를 가져올 수 있습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h

추가 정보

IMessageFilter