COM+ が戻り値を変更する方法
COM+ は、エラーを示す HRESULT の戻り値 (E_UNEXPECTED や E_FAIL など) を変更しません。 ただし、COM+ 機能を使用するオブジェクトが、成功を示す HRESULT 値 (S_OK、S_FALSE、NOERROR など) を返した場合、COM+ は呼び出し元に戻る前に HRESULT を COM+ エラー コードに変換することがあります。
たとえば、IObjectContext::SetComplete を呼び出した後にアプリケーションから S_OK が返されると、オブジェクトがコミットに失敗したトランザクションのルートである場合、HRESULT は CONTEXT_E_ABORTED に変換されます。
COM+ が HRESULT 値を変換すると、メソッドのすべての出力パラメーターがクリアされます。 返された参照が解放され、返されたオブジェクト ポインターの値が NULL に設定されます。
関連トピック