Export (0) Print
Expand All

ICallFrame interface

Enables manipulation of call frames such as stack frames. The call frame is the body of information that a procedure must save to allow it to properly return to its caller. A call frame may exist on the stack or in registers. A stack frame maintains its caller's context information on the stack.

An instance of the ICallFrame interface can perform various transformations on a call frame. The call can be marshaled or persisted. The instance of this interface is bound and has an associated method number.

When to implement

You do not need to implement this interface. However, to receive an instance of ICallFrame, the client must create an interceptor. To create an interceptor for a given interface or to find its unmarshaler, instantiate the proxy-stub class for the object using the CoCreateInstance function and set the appropriate IID for the interface. Then query for the ICallInterceptor or ICallUnmarshal interface. Calling ICallInterceptor creates an instance of ICallFrame object. When the user calls ICallUnmarshal an instance of an unmarshaled class is created for the specified interface and method number.

When to use

You can use ICallFrame for marshaling, call frame persistence, and interface-pointer swizzling. For example, you can construct a generic implementation of interfaced proxies and stubs that operate by dispatching operations to an instance of ICallFrame. The interface proxy or stub would contain generic logic to drive the marshalling process and therefore use the services from ICallFrame to carry out the interface-specific work.

Members

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

Methods

The ICallFrame interface has these methods.

MethodDescription
Copy

Creates a copy of this call frame and all of its associated data.

Free

Frees the frame copy to avoid a memory leak.

FreeParam

Frees the specified parameter in the frame.

GetIIDAndMethod

Retrieves the interface ID or the method number.

GetInfo

Retrieves information about the call frame.

GetMarshalSizeMax

Retrieves an upper bound on the number of bytes needed to marshal the call frame.

GetNames

Retrieves the method or interface name of this call.

GetParam

Retrieves the value of a specified parameter in the call frame.

GetParamInfo

Retrieves the information for the specified parameter.

GetReturnValue

Retrieves the return value stored in the call frame.

GetStackLocation

Retrieves the stack location onto which this call frame is bound.

Invoke

Applies this activation record to an object.

Marshal

Marshals the call frame by turning its reachable data into a flat buffer without disturbing the frame.

ReleaseMarshalData

Releases resources that are held by interface pointers residing in a packet of marshaled data.

SetParam

Sets the value of a specified parameter in the call frame.

SetReturnValue

Sets the return value within the call frame.

SetStackLocation

Sets the stack location onto which this call frame is bound.

Unmarshal

Unmarshals a packet of data containing the previously marshaled [out] parameters of a call into this already existing activation record.

WalkFrame

Searches for interface pointers that are reachable from [in], [in, out], or [out] parameters of the frame.

 

Requirements

Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]

Header

Callobj.h

IDL

Callobj.idl

IID

IID_ICallFrame is defined as D573B4B0-894E-11d2-B8B6-00C04FB9618A

 

 

Community Additions

ADD
Show:
© 2014 Microsoft