FIX: Calling IUnknown Across Computer Boundaries Causes Loss of Extended Error Information

This article was previously published under Q255733
This article has been archived. It is offered "as is" and will no longer be updated.
When you run a Visual Basic client, the Err.Description property has a value of 'Method "~" of object "~" failed' after a call to a remote object that supports extended error information fails.

When you run a C or C++ client, a call to GetErrorInfo to retrieve extended error information from a remote object returns S_FALSE after a call to IUnknown is made on the object.
The standard COM proxy-stub implementation is clearing extended error information that is associated with the logical thread when a call is made to the remote object through the IUnknown interface.
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 theMicrosoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack
Visual Basic users can work around the problem by not using the Err.Raise mechanism to propagate extended error information back to the client.

C and C++ users can work around the problem by not using the ErrorInfo object to propagate extended error information back to the client.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was corrected in Windows 2000 Service Pack 1.
COM objects are said to support extended error information if they return error information through the IErrorInfo interface.

The problem only affects calls between remote computers.

Identyfikator artykułu: 255733 — ostatni przegląd: 10/20/2013 17:49:17 — zmiana: 1.1

Microsoft COM+ 1.0

  • kbnosurvey kbarchive kbhotfixserver kbqfe kbbug kberrmsg kbfix kbqfe KB255733
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)