Compartilhar via


IMessageFilter::RetryRejectedCall (Compact 2013)

3/26/2014

This client-based method gives the application an opportunity to display a dialog box so the user can retry or cancel the call, or switch to the task identified by threadIDCallee.

Syntax

DWORD RetryRejectedCall(
  HTASK threadIDCallee,
  DWORD dwTickCount,
  DWORD dwRejectType 
);

Parameters

  • threadIDCallee
    [in] Handle of the server task that rejected the call.
  • dwTickCount
    [in] Number of elapsed ticks since the call was made.
  • dwRejectType
    [in] Specifies either SERVERCALL_REJECTED or SERVERCALL_RETRYLATER, as returned by the object application.

Return Value

  • -1
    The call should be canceled. COM then returns RPC_E_CALL_REJECTED from the original method call.
  • Value >= 0 and <100
    The call is to be retried immediately.
  • Value >= 100
    COM will wait for this many milliseconds and then retry the call.

Remarks

COM calls RetryRejectedCall on the caller's IMessageFilter immediately after receiving SERVERCALL_RETRYLATER or SERVERCALL_REJECTED from the IMessageFilter::HandleInComingCall method on the callee's IMessageFilter.

If a called task rejects a call, the application is probably in a state where it cannot handle such calls, possibly only temporarily. When this occurs, COM returns to the caller and issues IMessageFilter::RetryRejectedCall to determine if it should retry the rejected call.

Applications should silently retry calls that have returned with SERVERCALL_RETRYLATER.

If, after a reasonable amount of time has passed, about 30 seconds, the application should display the busy dialog box; a standard implementation of this dialog box is available in the OLEDLG library.

The callee can momentarily be in a state where calls can be handled.

The option to wait and retry is provided for special kinds of calling applications, such as background tasks executing macros or scripts, so they can retry the calls in a nonintrusive way.

If, after a dialog box is displayed, the user chooses to cancel, RetryRejectedCall returns -1 and the call will appear to fail with RPC_E_CALL_REJECTED.

If a client implements IMessageFilter and calls a server method on a remote machine, RetryRejectedCall will not be called.

To determine whether the platform supports this interface, see Determining Supported COM APIs.

Requirements

Header

objidl.h,
objidl.idl

Library

ole32.lib,
uuid.lib

See Also

Reference

IMessageFilter