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.
| Method | Description |
|---|---|
| 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 |
|
|
IDL |
|
|
IID |
IID_ICallFrame is defined as D573B4B0-894E-11d2-B8B6-00C04FB9618A |