How COM+ Modifies Return Values
COM+ never changes the return value of an HRESULT that indicates failure, such as E_UNEXPECTED or E_FAIL. However, when an object using COM+ functionality returns an HRESULT value indicating success (such as S_OK, S_FALSE, or NOERROR), COM+ sometimes converts the HRESULT into a COM+ error code before it returns to the caller.
For example, when an application returns S_OK after calling IObjectContext::SetComplete, if the object is the root of a transaction that fails to commit, the HRESULT is converted to CONTEXT_E_ABORTED.
When COM+ converts an HRESULT value, it clears all of the method's output parameters. Returned references are released, and the values of the returned object pointers are set to NULL.
Related topics