using System.Reflection;
using System.Threading;
-#if NET_2_0
using System.Runtime.ConstrainedExecution;
-#if !NET_2_1
+#if !MOONLIGHT
using System.Runtime.InteropServices.ComTypes;
#endif
-#endif
-#if !NET_2_1
+#if !MOONLIGHT
using Mono.Interop;
#endif
namespace System.Runtime.InteropServices
{
[SuppressUnmanagedCodeSecurity ()]
- public
-#if NET_2_0
- static
-#else
- sealed
-#endif
- class Marshal
+ public static class Marshal
{
/* fields */
public static readonly int SystemMaxDBCSCharSize = 2; // don't know what this is
SystemDefaultCharSize = Environment.OSVersion.Platform == PlatformID.Win32NT ? 2 : 1;
}
-#if !NET_2_0
- private Marshal () {}
-#endif
-
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static int AddRefInternal (IntPtr pUnk);
public extern static IntPtr AllocCoTaskMem (int cb);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.MayFail)]
-#endif
public extern static IntPtr AllocHGlobal (IntPtr cb);
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.MayFail)]
-#endif
public static IntPtr AllocHGlobal (int cb)
{
return AllocHGlobal ((IntPtr)cb);
}
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern static void copy_to_unmanaged (Array source, int startIndex,
- IntPtr destination, int length);
+ internal extern static void copy_to_unmanaged (Array source, int startIndex,
+ IntPtr destination, int length);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- extern static void copy_from_unmanaged (IntPtr source, int startIndex,
- Array destination, int length);
+ internal extern static void copy_from_unmanaged (IntPtr source, int startIndex,
+ Array destination, int length);
public static void Copy (byte[] source, int startIndex, IntPtr destination, int length)
{
copy_to_unmanaged (source, startIndex, destination, length);
}
-#if NET_2_0
public static void Copy (IntPtr[] source, int startIndex, IntPtr destination, int length)
{
copy_to_unmanaged (source, startIndex, destination, length);
}
-#endif
public static void Copy (IntPtr source, byte[] destination, int startIndex, int length)
{
copy_from_unmanaged (source, startIndex, destination, length);
}
-#if NET_2_0
public static void Copy (IntPtr source, IntPtr[] destination, int startIndex, int length)
{
copy_from_unmanaged (source, startIndex, destination, length);
{
throw new NotImplementedException ();
}
-#endif
-#if !NET_2_1
+#if !MOONLIGHT
public static object CreateWrapperOfType (object o, Type t)
{
__ComObject co = o as __ComObject;
#endif
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ComVisible (true)]
-#endif
public extern static void DestroyStructure (IntPtr ptr, Type structuretype);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static void FreeCoTaskMem (IntPtr ptr);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public extern static void FreeHGlobal (IntPtr hglobal);
-#if NET_2_0
-
static void ClearBSTR (IntPtr ptr)
{
int len = ReadInt32 (ptr, -4);
ClearUnicode (s);
FreeHGlobal (s);
}
-#endif
-#if !NET_2_1
+#if !MOONLIGHT
public static Guid GenerateGuidForType (Type type)
{
return type.GUID;
return pItf;
}
-#if NET_2_0
[MonoTODO]
public static IntPtr GetComInterfaceForObjectInContext (object o, Type t)
{
throw new NotImplementedException ();
}
-#endif
[MonoNotSupportedAttribute ("MSDN states user code should never need to call this method.")]
public static object GetComObjectData (object obj, object key)
public static int GetComSlotForMethodInfo (MemberInfo m)
{
if (m == null)
-#if NET_2_0
throw new ArgumentNullException ("m");
-#else
- throw new ArgumentNullException (null, "Value cannot be null.");
-#endif
if (!(m is MethodInfo))
throw new ArgumentException ("The MemberInfo must be an interface method.", "m");
if (!m.DeclaringType.IsInterface)
}
[MonoTODO]
-#if NET_2_0
[ComVisible (true)]
-#endif
public static IntPtr GetExceptionPointers()
{
throw new NotImplementedException ();
}
[MonoTODO]
-#if NET_2_0
[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static int GetHRForLastWin32Error()
{
throw new NotImplementedException ();
}
-#if !NET_2_1
+#if !MOONLIGHT
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static IntPtr GetIDispatchForObjectInternal (object o);
return pUnk;
}
-#if NET_2_0
[MonoTODO]
public static IntPtr GetIDispatchForObjectInContext (object o)
{
throw new NotImplementedException ();
}
-#endif
[MonoTODO]
public static IntPtr GetITypeInfoForType (Type t)
return pUnk;
}
-#if NET_2_0
[MonoTODO]
public static IntPtr GetIUnknownForObjectInContext (object o)
{
throw new NotImplementedException ();
}
-#endif
[MonoTODO]
-#if NET_2_0
[Obsolete ("This method has been deprecated")]
-#endif
public static IntPtr GetManagedThunkForUnmanagedMethodPtr (IntPtr pfnMethodToWrap, IntPtr pbSignature, int cbSignature)
{
throw new NotImplementedException ();
}
[MonoTODO]
-#if NET_2_0
[Obsolete ("This method has been deprecated")]
-#endif
public static Thread GetThreadFromFiberCookie (int cookie)
{
throw new NotImplementedException ();
throw new NotImplementedException ();
}
-#if NET_2_0
[Obsolete]
-#endif
[MonoTODO]
public static string GetTypeInfoName (UCOMITypeInfo pTI)
{
throw new NotImplementedException ();
}
-#if NET_2_0
public static string GetTypeInfoName (ITypeInfo typeInfo)
{
throw new NotImplementedException ();
}
-#endif
-#if NET_2_0
[Obsolete]
-#endif
[MonoTODO]
public static Guid GetTypeLibGuid (UCOMITypeLib pTLB)
{
throw new NotImplementedException ();
}
-#if NET_2_0
[MonoTODO]
public static Guid GetTypeLibGuid (ITypeLib typelib)
{
throw new NotImplementedException ();
}
-#endif
[MonoTODO]
public static Guid GetTypeLibGuidForAssembly (Assembly asm)
throw new NotImplementedException ();
}
-#if NET_2_0
[Obsolete]
-#endif
[MonoTODO]
public static int GetTypeLibLcid (UCOMITypeLib pTLB)
{
throw new NotImplementedException ();
}
-#if NET_2_0
[MonoTODO]
public static int GetTypeLibLcid (ITypeLib typelib)
{
throw new NotImplementedException ();
}
-#endif
-#if NET_2_0
[Obsolete]
-#endif
[MonoTODO]
public static string GetTypeLibName (UCOMITypeLib pTLB)
{
throw new NotImplementedException ();
}
-#if NET_2_0
[MonoTODO]
public static string GetTypeLibName (ITypeLib typelib)
{
{
throw new NotImplementedException ();
}
-#endif
[MonoTODO]
-#if NET_2_0
[Obsolete ("This method has been deprecated")]
-#endif
public static IntPtr GetUnmanagedThunkForManagedMethodPtr (IntPtr pfnMethodToWrap, IntPtr pbSignature, int cbSignature)
{
throw new NotImplementedException ();
#endif // !NET_2_1
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static extern int GetLastWin32Error();
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static string PtrToStringBSTR (IntPtr ptr);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ComVisible (true)]
-#endif
public extern static void PtrToStructure (IntPtr ptr, object structure);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
-#if NET_2_0
[ComVisible (true)]
-#endif
public extern static object PtrToStructure (IntPtr ptr, Type structureType);
[MethodImplAttribute (MethodImplOptions.InternalCall)]
throw new NotImplementedException ();
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static int ReadInt32 (IntPtr ptr)
{
return ReadInt32 (ptr, 0);
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static int ReadInt32 (IntPtr ptr, int ofs);
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MonoTODO]
public static int ReadInt32 ([In, MarshalAs(UnmanagedType.AsAny)] object ptr, int ofs)
{
throw new NotImplementedException ();
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static long ReadInt64 (IntPtr ptr)
{
return ReadInt64 (ptr, 0);
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static long ReadInt64 (IntPtr ptr, int ofs);
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MonoTODO]
public static long ReadInt64 ([In, MarshalAs (UnmanagedType.AsAny)] object ptr, int ofs)
{
throw new NotImplementedException ();
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static IntPtr ReadIntPtr (IntPtr ptr)
{
return ReadIntPtr (ptr, 0);
}
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static IntPtr ReadIntPtr (IntPtr ptr, int ofs);
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MonoTODO]
public static IntPtr ReadIntPtr ([In, MarshalAs (UnmanagedType.AsAny)] object ptr, int ofs)
{
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static IntPtr ReAllocHGlobal (IntPtr pv, IntPtr cb);
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static int ReleaseInternal (IntPtr pUnk);
-#if NET_2_0
[ReliabilityContract (Consistency.WillNotCorruptState, Cer.Success)]
-#endif
public static int Release (IntPtr pUnk)
{
if (pUnk == IntPtr.Zero)
return ReleaseInternal (pUnk);
}
-#if !NET_2_1
+#if !MOONLIGHT
[MethodImplAttribute (MethodImplOptions.InternalCall)]
private extern static int ReleaseComObjectInternal (object co);
return ReleaseComObjectInternal (o);
}
-#if NET_2_0
[Obsolete]
-#endif
[MonoTODO]
public static void ReleaseThreadCache()
{
}
#endif // !NET_2_1
-#if NET_2_0
[ComVisible (true)]
-#endif
public static int SizeOf (object structure)
{
return SizeOf (structure.GetType ());
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static IntPtr StringToHGlobalUni (string s);
-#if NET_2_0
+#if !MOONLIGHT
public static IntPtr SecureStringToBSTR (SecureString s)
{
if (s == null)
}
#endif
-#if NET_2_0
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.MayFail)]
[ComVisible (true)]
-#endif
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static void StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld);
throw new NotImplementedException ();
}
-#if NET_2_0
- public
-#else
- internal
-#endif
- static Exception GetExceptionForHR (int errorCode) {
+ public static Exception GetExceptionForHR (int errorCode) {
return GetExceptionForHR (errorCode, IntPtr.Zero);
}
-#if NET_2_0
- public
-#else
- internal
-#endif
- static Exception GetExceptionForHR (int errorCode, IntPtr errorInfo) {
+ public static Exception GetExceptionForHR (int errorCode, IntPtr errorInfo) {
const int E_OUTOFMEMORY = unchecked ((int)0x8007000EL);
const int E_INVALIDARG = unchecked ((int)0X80070057);
return null;
}
-#if NET_2_0 && !NET_2_1
+#if !MOONLIGHT
public static int FinalReleaseComObject (object o)
{
while (ReleaseComObject (o) != 0);
return 0;
}
#endif
-#if NET_2_0
+
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern Delegate GetDelegateForFunctionPointerInternal (IntPtr ptr, Type t);
return GetFunctionPointerForDelegateInternal (d);
}
-#endif
}
}