ICallIndirect interface

Invokes an object with an indirect reference to the invocations arguments, rather than the traditional direct call. An instance of ICallIndirect supports indirect invocations for only one interface ID.


The ICallIndirect interface has these methods.

Method Description
ICallIndirect::CallIndirect Invokes one of the methods in the interface with an indirect reference to the arguments of the invocation.
ICallIndirect::GetIID Retrieves the interface id supported by this ICallIndirect implementation.
ICallIndirect::GetMethodInfo Retrieves information about the interface method from the call frame.
ICallIndirect::GetStackSize Retrieves the number of bytes that should be popped from the stack in order to return from an invocation of the method.


The actual detailed semantics of how to carry out an indirect call are independent of the ICallIndirect interface itself; they are instead specific to the implementation of the interface. For example, implementations of ICallIndirect found in call interceptors carry out the call by constructing and appropriate ICallFrame instance and then invoking ICallFrameEvents::OnCall in the registered sink. Other implementations might do some appropriate munging of the invocations arguments, then forward the call on to some actual specific object, presumably one previously registered with the ICallIndirect using some implementation-specific means.


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header callobj.h

See Also