Strong/Weak Marshaling of Proxies Is Not Supported (148374)
The information in this article applies to:
- Microsoft OLE Libraries, when used with:
- the operating system: Microsoft Windows NT 3.51
- the operating system: Microsoft Windows NT 4.0
- the operating system: Microsoft Windows 95
- the operating system: Microsoft Windows 2000
This article was previously published under Q148374 SUMMARY
Marshaling a proxy of an interface belonging to another thread or process
is supported with MSHLFLAGS_NORMAL, but it is not supported with
MSHLFLAGS_TABLESTRONG or MSHLFLAGS_TABLEWEAK. This means that
CoMarshalInterface with MSHLFLAGS_TABLESTRONG/MSHLFLAGS_TABLEWEAK and
IRunningObjectTable::Register will return E_INVALIDARG for proxies.
MORE INFORMATION
When an interface is marshaled to another thread or process, a proxy of
the interface is created in that thread or process. This proxy cannot be
marshaled again using the MSHLFLAGS_TABLESTRONG or MSHLFLAGS_TABLEWEAK
values of the MSHLFLAGS enumerator. However it can be marshaled using
MSHLFLAGS_NORMAL. Marshaling of interfaces that are not proxies are
supported using any of the MSHLFLAGS enumerator values.
IRunningObjectTable::Register will marshal the interface pointer given to
it by using MSHLFLAGS_TABLESTRONG or MSHLFLAGS_TABLEWEAK, as specified by
the grfFlags parameter. Consequently IRunningObjectTable::Register will
fail with E_INVALIDARG if is asked to register a proxy.
Windows 3.x supported marshaling of proxies using MSHLFLAGS_TABLESTRONG and
MSHLFLAGS_TABLEWEAK. This is not supported on Windows 95 or Windows NT.
| Modification Type: | Major | Last Reviewed: | 12/3/2003 |
|---|
| Keywords: | KB148374 |
|---|
|