ErrorWrapper Class

 

Wraps objects the marshaler should marshal as a VT_ERROR.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Runtime.InteropServices.ErrorWrapper

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class ErrorWrapper

NameDescription
System_CAPS_pubmethodErrorWrapper(Exception)

Initializes a new instance of the ErrorWrapper class with the HRESULT that corresponds to the exception supplied.

System_CAPS_pubmethodErrorWrapper(Int32)

Initializes a new instance of the ErrorWrapper class with the HRESULT of the error.

System_CAPS_pubmethodErrorWrapper(Object)

Initializes a new instance of the ErrorWrapper class with an object containing the HRESULT of the error.

NameDescription
System_CAPS_pubpropertyErrorCode

Gets the error code of the wrapper.

NameDescription
System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

By default, Object type arguments are marshaled as a VARIANT type, where the object type determines the VARTYPE value of the VARIANT.

The ErrorWrapper type must to be passed as an Object type to be marshaled as a VARIANT of type VT_ERROR, otherwise the ErrorWrapper type is marshaled as an integer.

The following table illustrates marshaling in a managed call to a native function, using platform invoke.

Managed signature parameter

pArr value

Marshaled as

ErrorWrapper[] pArr

ErrorWrapper[10] of ErrorWrapper(77)

Int[10]

Object[] pArr

ErrorWrapper[10] of ErrorWrapper(77)

VARIANT[10] of VT_ERROR

Object[] pArr

Object[10] of ErrorWrapper(77)

VARIANT[10] of VT_ERROR

The following table illustrates marshaling data in a managed call to a native function, using COM runtime callable wrappers (RCW).

Managed signature parameter

pArr value

Marshaled as

ErrorWrapper[] pArr

ErrorWrapper[10] of ErrorWrapper(77)

Int[10]

Object[] pArr

ErrorWrapper[10] of ErrorWrapper(77)

SafeArrayTypeMismatch exception

Object[] pArr

Object[10] of ErrorWrapper(77)

SAFEARRAY(VARIANT)

Note that ErrorWrapper objects are not marshaled as type VT_ERROR after they are passed back from COM. A single value is marshaled back from COM as type VT_I4, while arrays are marshaled back from COM as type VT_UI4.

For more information on VT_ERROR, please see the existing documentation for VARENUM::VT_ERROR in the MSDN library.

The following code example first demonstrates a lone Int32 object marshaled back from COM as an Int32 object. It then demonstrates an Int32 array marshaled back from COM as a UInt32 array.

// Scenario 1:
// Pass a single value.
Int32 x = 3;
Object o = new ErrorWrapper(x);
// Pass 'o' to COM.
// On the return trip, 'o' has been unwrapped and is still an Int32 object.
Int32 y = (Int32)o;
Scenario 2:
// Pass an array of values.
Int32[] arr = new Int32[3];
Object o = new ErrorWrapper(arr);
// Pass 'o' to COM.
// On the return trip, 'o' has been unwrapped and is now a UInt32[] array.
UInt32[ ] arr2 = (UInt32[])o;

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: