Python exceptions through COM custom interface

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Philip Rittenhouse

    Python exceptions through COM custom interface

    I have one last issue with pywin32 to report. The problem occurs with
    Python COM servers raising COM exceptions across a custom interface.

    Using the dispatch interface works fine, but in the custom interface
    the exception's error information is lost. The problem appears to be
    in PyGatewayBase:: InterfaceSuppor tsErrorInfo() in PyGatewayBase.c pp. It
    is called to determine whether the GetErrorInfo API should be used to
    extract an error after an error HRESULT is returned from an interface.

    The function is passed an IID of an interface, the code compares this to
    the return value of GetIID() which is always IID_IUnknown. The
    comparison fails, so the function returns S_FALSE and no error info is
    extracted.

    The comment above the definition of GetIID() says:
    // Currently this is used only for ISupportErrorIn fo,
    // so hopefully this will never be called in this base class.
    // (however, this is not a rule, so we wont assert or anything!)

    But it appears that it is called in the base class (or at least
    not overloaded by anyone inheriting from it).

    Everything seems to work fine if you just change
    InterfaceSuppor tsErrorInfo() to always return S_OK.

    Can anyone tell me how this code is meant to work? Why is the check
    against GetIID() in there at all?

    Thanks!
    Phil


Working...