Microsoft KB Archive/291246

From BetaArchive Wiki

Article ID: 291246

Article Last Modified on 10/13/2006



APPLIES TO

  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Service Pack 2



This article was previously published under Q291246

SYMPTOMS

When you pass an XML Document Object Model (DOM) object as one of the parameters to a method on a queued component (QC) through the IDispatch interface (or late binding), the method to the QC component is not called, and the QC recorder does not pick up the queue message. Finally, they end in dead queue.

CAUSE

This problem occurs because of a bug in marshaling code of the IPersistSteam interface in the Ole32.dll file.

RESOLUTION

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack


This fix is included with the fixes that are described in the following Microsoft Knowledge Base article:


STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows 2000 Service Pack 3.

MORE INFORMATION

For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:

265173 The Datacenter Program and Windows 2000 Datacenter Server Product


For additional information about how to install multiple hotfixes with only one reboot, click the article number below to view the article in the Microsoft Knowledge Base:

296861 Use QChain.exe to Install Multiple Hotfixes with One Reboot


Here is the typical call stack:

00c1df1c 77a805ed comsvcs!CMarshalInterceptor__UnmarshalInterface+0x256 [.\marshalinterceptor.cpp @ 528]
00c1df98 77b2c8a7 ole32!CoUnmarshalInterface+0x6c [D:\nt\private\ole32\com\dcomrem\coapi.cxx @ 897]
00c1dfdc 77b2dc1e ole32!WdtpInterfacePointer_UserUnmarshalWorker+0xca
00c1e02c 779bccbb ole32!WdtpInterfacePointer_UserUnmarshal+0x3e
00c1e06c 779b329e OLEAUT32!SafeArrayCopyData+0x12d [d:\OA\src\dispatch\WIN32\i386\oleconva.asm @ 430]
00c1e0b8 7613eb1e OLEAUT32!VariantClear+0x15e [d:\OA\src\dispatch\variant.cpp @ 1277]
000b1950 00000064 TxfAux!__StublessClient_meth1023+0x9 [..\stublessclient.cpp @ 175]
                

Steps to Reproduce Behavior

  1. On a computer that is running Windows 2000 or Windows 2000 Service Pack 1 (SP1) with hotfix Q272722, make sure that MSMQ 2.0 is installed.
  2. Install a new component with one method that takes the XML DOM parameter into the COM+ application.
  3. Mark the application and component method as Queued.
  4. Run the test client. Notice that the server method is never called, and the queue message ends up in a dead queue.



Additional query words: kbIISCom

Keywords: kbbug kbfix kbwin2000presp3fix kbcomplusqc kbwin2000sp3fix KB291246