1 // System.Runtime.InteropServices.Marshal
3 // Sean MacIsaac (macisaac@ximian.com)
4 // Paolo Molaro (lupus@ximian.com)
5 // Dietmar Maurer (dietmar@ximian.com)
7 // (C) 2001-2002 Ximian, Inc.
9 using System.Runtime.CompilerServices;
11 using System.Security;
12 using System.Reflection;
13 using System.Threading;
15 namespace System.Runtime.InteropServices
17 [SuppressUnmanagedCodeSecurity ()]
18 public sealed class Marshal
21 public static readonly int SystemMaxDBCSCharSize = 2; // don't know what this is
22 public static readonly int SystemDefaultCharSize = 2;
27 public static int AddRef (IntPtr pUnk) {
28 throw new NotImplementedException ();
31 public static IntPtr AllocCoTaskMem (int cb) {
32 throw new NotImplementedException ();
35 [MethodImplAttribute(MethodImplOptions.InternalCall)]
36 public extern static IntPtr AllocHGlobal (IntPtr cb);
38 public static IntPtr AllocHGlobal (int cb) {
39 return AllocHGlobal ((IntPtr)cb);
43 public static object BindToMoniker (string monikerName) {
44 throw new NotImplementedException ();
48 public static void ChangeWrapperHandleStrength (object otp, bool fIsWeak) {
49 throw new NotImplementedException ();
52 [MethodImplAttribute(MethodImplOptions.InternalCall)]
53 extern static void copy_to_unmanaged (Array source, int startIndex,
54 IntPtr destination, int length);
56 [MethodImplAttribute(MethodImplOptions.InternalCall)]
57 extern static void copy_from_unmanaged (IntPtr source, int startIndex,
58 Array destination, int length);
60 public static void Copy (byte[] source, int startIndex, IntPtr destination, int length) {
61 copy_to_unmanaged (source, startIndex, destination, length);
64 public static void Copy (char[] source, int startIndex, IntPtr destination, int length) {
65 copy_to_unmanaged (source, startIndex, destination, length);
68 public static void Copy (short[] source, int startIndex, IntPtr destination, int length) {
69 copy_to_unmanaged (source, startIndex, destination, length);
72 public static void Copy (int[] source, int startIndex, IntPtr destination, int length) {
73 copy_to_unmanaged (source, startIndex, destination, length);
76 public static void Copy (long[] source, int startIndex, IntPtr destination, int length) {
77 copy_to_unmanaged (source, startIndex, destination, length);
80 public static void Copy (float[] source, int startIndex, IntPtr destination, int length) {
81 copy_to_unmanaged (source, startIndex, destination, length);
84 public static void Copy (double[] source, int startIndex, IntPtr destination, int length) {
85 copy_to_unmanaged (source, startIndex, destination, length);
88 public static void Copy (IntPtr source, byte[] destination, int startIndex, int length) {
89 copy_from_unmanaged (source, startIndex, destination, length);
92 public static void Copy (IntPtr source, char[] destination, int startIndex, int length) {
93 copy_from_unmanaged (source, startIndex, destination, length);
96 public static void Copy (IntPtr source, short[] destination, int startIndex, int length) {
97 copy_from_unmanaged (source, startIndex, destination, length);
100 public static void Copy (IntPtr source, int[] destination, int startIndex, int length) {
101 copy_from_unmanaged (source, startIndex, destination, length);
104 public static void Copy (IntPtr source, long[] destination, int startIndex, int length) {
105 copy_from_unmanaged (source, startIndex, destination, length);
108 public static void Copy (IntPtr source, float[] destination, int startIndex, int length) {
109 copy_from_unmanaged (source, startIndex, destination, length);
112 public static void Copy (IntPtr source, double[] destination, int startIndex, int length) {
113 copy_from_unmanaged (source, startIndex, destination, length);
117 public static object CreateWrapperOfType (object o, Type t) {
118 throw new NotImplementedException ();
121 [MethodImplAttribute(MethodImplOptions.InternalCall)]
122 public extern static void DestroyStructure (IntPtr ptr, Type structuretype);
125 public static void FreeBSTR (IntPtr ptr) {
126 throw new NotImplementedException ();
130 public static void FreeCoTaskMem (IntPtr ptr) {
131 throw new NotImplementedException ();
134 [MethodImplAttribute(MethodImplOptions.InternalCall)]
135 public extern static void FreeHGlobal (IntPtr hglobal);
138 public static Guid GenerateGuidForType (Type type) {
139 throw new NotImplementedException ();
143 public static string GenerateProgIdForType (Type type) {
144 throw new NotImplementedException ();
148 public static object GetActiveObject (string progID) {
149 throw new NotImplementedException ();
153 public static IntPtr GetComInterfaceForObject (object o, Type T) {
154 throw new NotImplementedException ();
158 public static object GetComObjectData (object obj, object key) {
159 throw new NotImplementedException ();
163 public static int GetComSlotForMethodInfo (MemberInfo m) {
164 throw new NotImplementedException ();
168 public static int GetEndComSlot (Type t) {
169 throw new NotImplementedException ();
173 public static int GetExceptionCode() {
174 throw new NotImplementedException ();
178 public static IntPtr GetExceptionPointers() {
179 throw new NotImplementedException ();
183 public static IntPtr GetHINSTANCE (Module m) {
184 throw new NotImplementedException ();
188 public static int GetHRForException (Exception e) {
189 throw new NotImplementedException ();
193 public static int GetHRForLastWin32Error() {
194 throw new NotImplementedException ();
198 public static IntPtr GetIDispatchForObject (object o) {
199 throw new NotImplementedException ();
203 public static IntPtr GetITypeInfoForType (Type t) {
204 throw new NotImplementedException ();
208 public static IntPtr GetIUnknownForObject (object o) {
209 throw new NotImplementedException ();
212 [MethodImplAttribute(MethodImplOptions.InternalCall)]
213 public static extern int GetLastWin32Error();
216 public static IntPtr GetManagedThunkForUnmanagedMethodPtr (IntPtr pfnMethodToWrap, IntPtr pbSignature, int cbSignature) {
217 throw new NotImplementedException ();
221 public static MemberInfo GetMethodInfoForComSlot (Type t, int slot, ref ComMemberType memberType) {
222 throw new NotImplementedException ();
226 public static void GetNativeVariantForObject (object obj, IntPtr pDstNativeVariant) {
227 throw new NotImplementedException ();
231 public static object GetObjectForIUnknown (IntPtr pUnk) {
232 throw new NotImplementedException ();
236 public static object GetObjectForNativeVariant (IntPtr pSrcNativeVariant) {
237 throw new NotImplementedException ();
241 public static object[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars) {
242 throw new NotImplementedException ();
246 public static int GetStartComSlot (Type t) {
247 throw new NotImplementedException ();
251 public static Thread GetThreadFromFiberCookie (int cookie) {
252 throw new NotImplementedException ();
256 public static object GetTypedObjectForIUnknown (IntPtr pUnk, Type t) {
257 throw new NotImplementedException ();
261 public static Type GetTypeForITypeInfo (IntPtr piTypeInfo) {
262 throw new NotImplementedException ();
266 public static string GetTypeInfoName (UCOMITypeInfo pTI) {
267 throw new NotImplementedException ();
271 public static Guid GetTypeLibGuid (UCOMITypeLib pTLB) {
272 throw new NotImplementedException ();
276 public static Guid GetTypeLibGuidForAssembly (Assembly asm) {
277 throw new NotImplementedException ();
281 public static int GetTypeLibLcid (UCOMITypeLib pTLB) {
282 throw new NotImplementedException ();
286 public static string GetTypeLibName (UCOMITypeLib pTLB) {
287 throw new NotImplementedException ();
291 public static IntPtr GetUnmanagedThunkForManagedMethodPtr (IntPtr pfnMethodToWrap, IntPtr pbSignature, int cbSignature) {
292 throw new NotImplementedException ();
296 public static bool IsComObject (object o) {
297 throw new NotImplementedException ();
301 public static bool IsTypeVisibleFromCom (Type t) {
302 throw new NotImplementedException ();
306 public static int NumParamBytes (MethodInfo m) {
307 throw new NotImplementedException ();
310 [MethodImplAttribute(MethodImplOptions.InternalCall)]
311 public extern static IntPtr OffsetOf (Type t, string fieldName);
313 [MethodImplAttribute(MethodImplOptions.InternalCall)]
314 public extern static void Prelink (MethodInfo m);
316 [MethodImplAttribute(MethodImplOptions.InternalCall)]
317 public extern static void PrelinkAll (Type c);
319 [MethodImplAttribute(MethodImplOptions.InternalCall)]
320 public extern static string PtrToStringAnsi (IntPtr ptr);
322 [MethodImplAttribute(MethodImplOptions.InternalCall)]
323 public extern static string PtrToStringAnsi (IntPtr ptr, int len);
325 [MethodImplAttribute(MethodImplOptions.InternalCall)]
326 public extern static string PtrToStringAuto (IntPtr ptr);
328 [MethodImplAttribute(MethodImplOptions.InternalCall)]
329 public extern static string PtrToStringAuto (IntPtr ptr, int len);
331 [MethodImplAttribute(MethodImplOptions.InternalCall)]
332 public extern static string PtrToStringUni (IntPtr ptr);
334 [MethodImplAttribute(MethodImplOptions.InternalCall)]
335 public extern static string PtrToStringUni (IntPtr ptr, int len);
337 [MethodImplAttribute(MethodImplOptions.InternalCall)]
338 public extern static string PtrToStringBSTR (IntPtr ptr);
340 [MethodImplAttribute(MethodImplOptions.InternalCall)]
341 public extern static void PtrToStructure (IntPtr ptr, object structure);
343 [MethodImplAttribute(MethodImplOptions.InternalCall)]
344 public extern static object PtrToStructure (IntPtr ptr, Type structureType);
347 public static int QueryInterface (IntPtr pUnk, ref Guid iid, out IntPtr ppv) {
348 throw new NotImplementedException ();
351 public static byte ReadByte (IntPtr ptr) {
352 return ReadByte (ptr, 0);
355 [MethodImplAttribute(MethodImplOptions.InternalCall)]
356 public extern static byte ReadByte (IntPtr ptr, int ofs);
359 public static byte ReadByte ([In] object ptr, int ofs) {
360 throw new NotImplementedException ();
363 public static short ReadInt16 (IntPtr ptr) {
364 return ReadInt16 (ptr, 0);
367 [MethodImplAttribute(MethodImplOptions.InternalCall)]
368 public extern static short ReadInt16 (IntPtr ptr, int ofs);
371 public static short ReadInt16 ([In] object ptr, int ofs) {
372 throw new NotImplementedException ();
375 public static int ReadInt32 (IntPtr ptr) {
376 return ReadInt32 (ptr, 0);
379 [MethodImplAttribute(MethodImplOptions.InternalCall)]
380 public extern static int ReadInt32 (IntPtr ptr, int ofs);
383 public static int ReadInt32 ([In] object ptr, int ofs) {
384 throw new NotImplementedException ();
387 public static long ReadInt64 (IntPtr ptr) {
388 return ReadInt64 (ptr, 0);
391 [MethodImplAttribute(MethodImplOptions.InternalCall)]
392 public extern static long ReadInt64 (IntPtr ptr, int ofs);
395 public static long ReadInt64([In] object ptr, int ofs) {
396 throw new NotImplementedException ();
399 public static IntPtr ReadIntPtr (IntPtr ptr) {
400 return ReadIntPtr (ptr, 0);
403 [MethodImplAttribute(MethodImplOptions.InternalCall)]
404 public extern static IntPtr ReadIntPtr (IntPtr ptr, int ofs);
407 public static IntPtr ReadIntPtr([In] object ptr, int ofs) {
408 throw new NotImplementedException ();
412 public static IntPtr ReAllocCoTaskMem (IntPtr pv, int cb) {
413 throw new NotImplementedException ();
416 [MethodImplAttribute(MethodImplOptions.InternalCall)]
417 public extern static IntPtr ReAllocHGlobal (IntPtr pv, IntPtr cb);
420 public static int Release (IntPtr pUnk) {
421 throw new NotImplementedException ();
425 public static int ReleaseComObject (object o) {
426 throw new NotImplementedException ();
430 public static void ReleaseThreadCache() {
431 throw new NotImplementedException ();
435 public static bool SetComObjectData (object obj, object key, object data) {
436 throw new NotImplementedException ();
439 public static int SizeOf (object structure) {
440 return SizeOf (structure.GetType ());
443 [MethodImplAttribute(MethodImplOptions.InternalCall)]
444 public extern static int SizeOf (Type t);
447 public static IntPtr StringToBSTR (string s) {
448 throw new NotImplementedException ();
452 public static IntPtr StringToCoTaskMemAnsi (string s) {
453 throw new NotImplementedException ();
457 public static IntPtr StringToCoTaskMemAuto (string s) {
458 throw new NotImplementedException ();
462 public static IntPtr StringToCoTaskMemUni (string s) {
463 throw new NotImplementedException ();
466 [MethodImplAttribute(MethodImplOptions.InternalCall)]
467 public extern static IntPtr StringToHGlobalAnsi (string s);
469 [MethodImplAttribute(MethodImplOptions.InternalCall)]
470 public extern static IntPtr StringToHGlobalAuto (string s);
472 [MethodImplAttribute(MethodImplOptions.InternalCall)]
473 public extern static IntPtr StringToHGlobalUni (string s);
475 [MethodImplAttribute(MethodImplOptions.InternalCall)]
476 public extern static void StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld);
479 public static void ThrowExceptionForHR (int errorCode) {
480 throw new NotImplementedException ();
484 public static void ThrowExceptionForHR (int errorCode, IntPtr errorInfo) {
485 throw new NotImplementedException ();
489 public static IntPtr UnsafeAddrOfPinnedArrayElement (Array arr, int index) {
490 throw new NotImplementedException ();
493 public static void WriteByte (IntPtr ptr, byte val) {
494 WriteByte (ptr, 0, val);
497 [MethodImplAttribute(MethodImplOptions.InternalCall)]
498 public extern static void WriteByte (IntPtr ptr, int ofs, byte val);
501 public static void WriteByte([In,Out] object ptr, int ofs, byte val) {
502 throw new NotImplementedException ();
505 public static void WriteInt16 (IntPtr ptr, short val) {
506 WriteInt16 (ptr, 0, val);
509 [MethodImplAttribute(MethodImplOptions.InternalCall)]
510 public extern static void WriteInt16 (IntPtr ptr, int ofs, short val);
513 public static void WriteInt16([In,Out] object ptr, int ofs, short val) {
514 throw new NotImplementedException ();
517 public static void WriteInt32 (IntPtr ptr, int val) {
518 WriteInt32 (ptr, 0, val);
521 [MethodImplAttribute(MethodImplOptions.InternalCall)]
522 public extern static void WriteInt32 (IntPtr ptr, int ofs, int val);
525 public static void WriteInt32([In,Out] object ptr, int ofs, int val) {
526 throw new NotImplementedException ();
529 public static void WriteInt64 (IntPtr ptr, long val) {
530 WriteInt64 (ptr, 0, val);
533 [MethodImplAttribute(MethodImplOptions.InternalCall)]
534 public extern static void WriteInt64 (IntPtr ptr, int ofs, long val);
537 public static void WriteInt64([In] object ptr, int ofs, long val) {
538 throw new NotImplementedException ();
541 public static void WriteIntPtr (IntPtr ptr, IntPtr val) {
542 WriteIntPtr (ptr, 0, val);
545 [MethodImplAttribute(MethodImplOptions.InternalCall)]
546 public extern static void WriteIntPtr (IntPtr ptr, int ofs, IntPtr val);
549 public static void WriteIntPtr([In] object ptr, int ofs, IntPtr val) {
550 throw new NotImplementedException ();