#if !FULL_AOT_RUNTIME
public static int GetHRForException (Exception e)
{
+#if FEATURE_COMINTEROP
var errorInfo = new ManagedErrorInfo(e);
SetErrorInfo (0, errorInfo);
- return e.hresult;
+ return e._HResult;
+#else
+ return -1;
+#endif
}
[MonoTODO]
return *(short*)addr;
short s;
- String.memcpy ((byte*)&s, (byte*)ptr, 2);
+ Buffer.Memcpy ((byte*)&s, (byte*)ptr, 2);
return s;
}
return *(short*)addr;
short s;
- String.memcpy ((byte*)&s, addr, 2);
+ Buffer.Memcpy ((byte*)&s, addr, 2);
return s;
}
return *(int*)addr;
int s;
- String.memcpy ((byte*)&s, addr, 4);
+ Buffer.Memcpy ((byte*)&s, addr, 4);
return s;
}
return *(int*)addr;
else {
int s;
- String.memcpy ((byte*)&s, addr, 4);
+ Buffer.Memcpy ((byte*)&s, addr, 4);
return s;
}
}
return *(long*)ptr;
long s;
- String.memcpy ((byte*)&s, addr, 8);
+ Buffer.Memcpy ((byte*)&s, addr, 8);
return s;
}
return *(long*)addr;
long s;
- String.memcpy ((byte*)&s, addr, 8);
+ Buffer.Memcpy ((byte*)&s, addr, 8);
return s;
}
return SizeOf (structure.GetType ());
}
+ internal static uint SizeOfType (Type type)
+ {
+ return (uint) SizeOf (type);
+ }
+
+ internal static uint AlignedSizeOf<T> () where T : struct
+ {
+ uint size = SizeOfType (typeof (T));
+ if (size == 1 || size == 2)
+ return size;
+ if (IntPtr.Size == 8 && size == 4)
+ return size;
+ return (size + 3) & (~((uint)3));
+ }
+
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static IntPtr StringToBSTR (string s);
if (((uint)addr & 1) == 0)
*(short*)addr = val;
else
- String.memcpy (addr, (byte*)&val, 2);
+ Buffer.Memcpy (addr, (byte*)&val, 2);
}
public static unsafe void WriteInt16 (IntPtr ptr, int ofs, short val)
if (((uint)addr & 1) == 0)
*(short*)addr = val;
else {
- String.memcpy (addr, (byte*)&val, 2);
+ Buffer.Memcpy (addr, (byte*)&val, 2);
}
}
if (((uint)addr & 3) == 0)
*(int*)addr = val;
else {
- String.memcpy (addr, (byte*)&val, 4);
+ Buffer.Memcpy (addr, (byte*)&val, 4);
}
}
if (((uint)addr & 3) == 0)
*(int*)addr = val;
else {
- String.memcpy (addr, (byte*)&val, 4);
+ Buffer.Memcpy (addr, (byte*)&val, 4);
}
}
if (((uint)addr & 7) == 0)
*(long*)addr = val;
else
- String.memcpy (addr, (byte*)&val, 8);
+ Buffer.Memcpy (addr, (byte*)&val, 8);
}
public static unsafe void WriteInt64 (IntPtr ptr, int ofs, long val)
if (((uint)addr & 7) == 0)
*(long*)addr = val;
else
- String.memcpy (addr, (byte*)&val, 8);
+ Buffer.Memcpy (addr, (byte*)&val, 8);
}
[MonoTODO]
return null;
}
+#if FEATURE_COMINTEROP
[DllImport ("oleaut32.dll", CharSet=CharSet.Unicode, EntryPoint = "SetErrorInfo")]
static extern int _SetErrorInfo (int dwReserved,
[MarshalAs(UnmanagedType.Interface)] IErrorInfo pIErrorInfo);
}
return retVal;
}
-
+#endif
public static Exception GetExceptionForHR (int errorCode)
{
return GetExceptionForHR (errorCode, IntPtr.Zero);
public static Exception GetExceptionForHR (int errorCode, IntPtr errorInfo)
{
-#if !MOBILE
+#if FEATURE_COMINTEROP
IErrorInfo info = null;
if (errorInfo != (IntPtr)(-1)) {
if (errorInfo == IntPtr.Zero) {
}
}
- if (info is ManagedErrorInfo && ((ManagedErrorInfo) info).Exception.hresult == errorCode) {
+ if (info is ManagedErrorInfo && ((ManagedErrorInfo) info).Exception._HResult == errorCode) {
return ((ManagedErrorInfo) info).Exception;
}