Writes into a stream the data required to initialize a proxy object in some client process. The COM library in the client process calls the CoUnmarshalInterface function to extract the data and initialize the proxy. CoMarshalInterface can marshal only interfaces derived from IUnknown.
STDAPI CoMarshalInterface(
IStream *pStm, |
//Pointer to the stream used for marshaling |
REFIID riid, |
//Reference to the identifier of the interface |
IUnknown *pUnk, |
//Pointer to the interface to be marshaled |
DWORD dwDestContext, |
//Destination context |
void *pvDestContext, |
//Reserved for future use |
DWORD mshlflags |
//Reason for marshaling |
); |
Parameters
Return Values
This function supports the standard return values E_FAIL, E_OUTOFMEMORY, and E_UNEXPECTED, as well as the following:
Remarks
The CoMarshalInterface function marshals the interface referred to by riid on the object whose IUnknown implementation is pointed to by pUnk. To do so, the CoMarshalInterface function performs the following tasks:
If you are implementing existing COM interfaces or defining your own interfaces using the Microsoft Interface Definition Language (MIDL), the MIDL-generated proxies and stubs call CoMarshalInterface for you. If you are writing your own proxies and stubs, your proxy code and stub code should each call CoMarshalInterface to correctly marshal interface pointers. Calling IMarshal directly from your proxy and stub code is not recommended.
If you are writing your own implementation of IMarshal, and your proxy needs access to a private object, you can include an interface pointer to that object as part of the data you write to the stream. In such situations, if you want to use COM’s default marshaling implementation when passing the interface pointer, you can call CoMarshalInterface on the object to do so.
See Also
CoUnmarshalInterface, IMarshal::MarshalInterface