public IntPtr MarshalManagedToNative(object ManagedObj) { if (!(ManagedObj is string s)) { throw new InvalidCastException(); } var sr = new STRRET { uType = STRRET_TYPE.STRRET_WSTR }; sr.pOleStr.Assign(s); return(sr.StructureToPtr(Marshal.AllocCoTaskMem, out var _)); }