When you use a COM object
from C#, the RCW makes a COM method
look like a normal C# instance method. In COM, methods normally
return an HRESULT to indicate success or failure and use an out
parameter to return a value. In C#, however, methods normally return
their result values and use exceptions to report errors. The RCW
handles this by checking the HRESULT returned from the call to a COM
method and throwing a C# exception when it finds a failure result.
With a success result, the RCW returns the parameter marked as the
return value in the COM method signature.
For more information on the argument modifiers and default mappings
from COM type library types to C# types, see Appendix A.