Use this wrapper to pass a managed object into unmanaged code as type VT_UNKNOWN .
public sealed class UnknownWrapper { // Public Constructors public UnknownWrapper (object obj ); // Public Instance Properties public object WrappedObject {get; } }