diff VBoxFrontend/VBoxXPCOM.cs @ 2:f1deea9c97a0

Cleaned up the interop code generator, added wrapper application to initialize kernel driver and run mono
author Ivo Smits
date Wed, 04 May 2011 16:10:08 +0200
parents e1ec7bf71313
children
line wrap: on
line diff
--- a/VBoxFrontend/VBoxXPCOM.cs	Wed May 04 01:06:22 2011 +0200
+++ b/VBoxFrontend/VBoxXPCOM.cs	Wed May 04 16:10:08 2011 +0200
@@ -6,13 +6,10 @@
 namespace ConsoleApplication1 {
 	public class VBoxXPCOM {
 		private delegate UInt32 pfnGetVersionDelegate();
-		private unsafe delegate void pfnComInitializeDelegate(
-			[MarshalAs(UnmanagedType.LPStr)] String pszVirtualBoxIID,
-			out IntPtr ppVirtualBox,
-			[MarshalAs(UnmanagedType.LPStr)] String pszSessionIID,
-			out IntPtr ppSession);
+		private unsafe delegate void pfnComInitializeDelegate([MarshalAs(UnmanagedType.LPStr)] String pszVirtualBoxIID, out IntPtr ppVirtualBox, [MarshalAs(UnmanagedType.LPStr)] String pszSessionIID, out IntPtr ppSession);
 		private delegate void pfnComUninitializeDelegate();
 		private delegate void pfnGetEventQueueDelegate(out IntPtr eventQueue); //void  (*pfnGetEventQueue)(nsIEventQueue **eventQueue);
+		private delegate void pfnComUnallocMem(IntPtr pv); //void  (*pfnComUnallocMem)(void *pv);
 
 		private struct VBOXXPCOMC {
 			public UInt32 cb; //The size of the structure.
@@ -24,11 +21,11 @@
 			[MarshalAs(UnmanagedType.FunctionPtr)]
 			public pfnComUninitializeDelegate pfnComUninitialize;
 			[MarshalAs(UnmanagedType.FunctionPtr)]
-			private pfnComUninitializeDelegate pfnComUnallocMem; //void  (*pfnComUnallocMem)(void *pv);
+			private pfnComUnallocMem pfnComUnallocMem;
 			[MarshalAs(UnmanagedType.FunctionPtr)]
-			private pfnComUninitializeDelegate pfnUtf16Free; //void  (*pfnUtf16Free)(PRUnichar *pwszString);
+			private pfnComUnallocMem pfnUtf16Free; //void  (*pfnUtf16Free)(PRUnichar *pwszString);
 			[MarshalAs(UnmanagedType.FunctionPtr)]
-			private pfnComUninitializeDelegate pfnUtf8Free; //void  (*pfnUtf8Free)(char *pszString);
+			private pfnComUnallocMem pfnUtf8Free; //void  (*pfnUtf8Free)(char *pszString);
 			[MarshalAs(UnmanagedType.FunctionPtr)]
 			private pfnComUninitializeDelegate pfnUtf16ToUtf8; //int   (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString);
 			[MarshalAs(UnmanagedType.FunctionPtr)]
@@ -118,6 +115,7 @@
 			Session = null;
 			EventQueue = null;
 			GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
+			GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
 			FunctionTable.pfnComUninitialize();
 		}
 	}