Objects in .EXE Cannot be Aggregated (114598)
The information in this article applies to:
- Microsoft OLE Libraries for Windows and Win32s 2.0
- Microsoft OLE Libraries for Windows and Win32s 2.01
- Microsoft OLE Libraries, when used with:
- the operating system: Microsoft Windows NT 3.5
- the operating system: Microsoft Windows NT 3.51
- the operating system: Microsoft Windows 95
This article was previously published under Q114598
Attempting to create an aggregate object with a Non-Control object
implemented in another .EXE is not possible. Passing a value for the
punkOuter parameter of IClassFactory::CreateInstance() in this situation
results in the error value CLASS_E_NOAGGREGATION.
The proxy for IClassFactory returns this error value immediately, without
calling the CreateInstance() method in the object. According to the rules
of aggregation, the Non-Control Object must not reference count the pointer
to the controlling IUnknown. If the parts of the aggregate object reside in
separate process spaces, the proxy for the controlling IUnknown will be
freed prematurely due to the lack of this reference count. Without the
interface proxy, the pointer to the controlling IUnknown stored by the Non-
Control Object is no longer valid, causing problems when delegating calls
to the outer IUnknown.
For more information on the process of Aggregation, please refer to
the "OLE 2 Programmer's Reference", "Working with Windows's Objects".
Modification Type: | Minor | Last Reviewed: | 3/3/2005 |
---|
Keywords: | kbprogramming KB114598 |
---|
|