IMessageFilter::HandleInComingCall
An
object-based method that provides the ability to filter or reject incoming
calls (or call backs) to an object or a process. This method is called prior to
each method invocation originating outside the current process.
DWORD HandleInComingCall(
DWORD dwCallType, |
//Type of incoming call |
HTASK threadIDCaller, |
//Task handle calling this task |
DWORD dwTickCount, |
//Elapsed tick count |
LPINTERFACEINFO lpInterfaceInfo |
//Pointer to INTERFACEINFO structure |
); |
|
Parameters
dwCallType
[in] Kind of
incoming call that has been received. Valid values are from the enumeration CALLTYPE
threadIDCaller
[in] Handle
of the task calling this task.
dwTickCount
[in] Elapsed
tick count since the outgoing call was made if dwCallType is not
CALLTYPE_TOPLEVEL. If dwCallType is CALLTYPE_TOPLEVEL, dwTickCount
should be ignored.
lpInterfaceInfo
[in] Pointer
to an INTERFACEINFO structure, which identifies the object, the
interface, and the method making the call. In the case of DDE calls, lpInterfaceInfo
can be NULL because the DDE layer does not return interface information.
Return Values
SERVERCALL_ISHANDLED
The application
might be able to process the call.
SERVERCALL_REJECTED
The
application cannot handle the call due to an unforeseen problem, such as
network unavailability, or if it is in the process of terminating.
SERVERCALL_RETRYLATER
The
application cannot handle the call at this time. For example, an application
might return this value when it is in a user-controlled modal state.
Remarks
If
implemented, IMessageFilter::HandleInComingCall is called by OLE when an
incoming OLE message is received.
Depending
on an application s current state, a call is either accepted and processed or
rejected (permanently or temporarily). If SERVERCALL_ISHANDLED is returned, the
application may be able to process the call, though success depends on the
interface for which the call is destined. If the call cannot be processed, OLE
returns RPC_E_CALL_REJECTED.
Input-synchronized
and asynchronous calls are dispatched even if the application returns
SERVERCALL_REJECTED or SERVERCALL_RETRYLATER.
IMessageFilter::HandleInComingCall
should not be used to hold off
updates to objects during operations such as band printing. For that purpose,
use IViewObject::Freeze
You
can also use IMessageFilter::HandleInComingCall to set up the application s
state so the call can be processed in the future.
See Also