ICallIndirect interface (callobj.h)

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.

Inheritance

The ICallIndirect interface inherits from the IUnknown interface. ICallIndirect also has these types of members:

Methods

The ICallIndirect interface has these methods.

 
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.

Remarks

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.

Requirements

Requirement Value
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

ICallInterceptor