[StructLayout(LayoutKind.Sequential)]
struct MULTI_QI
{
[MarshalAs(UnmanagedType.LPStruct)] public Guid pIID;
[MarshalAs(UnmanagedType.Interface)] public object pItf;
public int hr;
}
None.
Marshal.SizeOf() refuses to deal the pIID member as it is specified, perhaps because it cannot manage the pointer.
Change public Guid pIID to IntPtr and marshal your guid directly to an allocated memory block and this struct will work with CoCreateInstanceEx.