Microsoft KB Archive/148374

= Strong/Weak Marshaling of Proxies Is Not Supported =

Article ID: 148374

Article Last Modified on 12/3/2003

-

APPLIES TO

 Microsoft OLE 4.0, when used with:  Microsoft Windows NT 3.51 Service Pack 5

 Microsoft Windows NT 4.0

 Microsoft Windows 95

 Microsoft Windows 2000 Standard Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q148374

<div class="summary_section">

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.

<div class="moreinformation_section">

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.

Additional query words: 2 OLE2 2.0 2.00

Keywords: KB148374

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.