Mercurial > hg > vboxdotnet
comparison 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 |
comparison
equal
deleted
inserted
replaced
1:55ca098c88d0 | 2:f1deea9c97a0 |
---|---|
4 using VirtualBox; | 4 using VirtualBox; |
5 | 5 |
6 namespace ConsoleApplication1 { | 6 namespace ConsoleApplication1 { |
7 public class VBoxXPCOM { | 7 public class VBoxXPCOM { |
8 private delegate UInt32 pfnGetVersionDelegate(); | 8 private delegate UInt32 pfnGetVersionDelegate(); |
9 private unsafe delegate void pfnComInitializeDelegate( | 9 private unsafe delegate void pfnComInitializeDelegate([MarshalAs(UnmanagedType.LPStr)] String pszVirtualBoxIID, out IntPtr ppVirtualBox, [MarshalAs(UnmanagedType.LPStr)] String pszSessionIID, out IntPtr ppSession); |
10 [MarshalAs(UnmanagedType.LPStr)] String pszVirtualBoxIID, | |
11 out IntPtr ppVirtualBox, | |
12 [MarshalAs(UnmanagedType.LPStr)] String pszSessionIID, | |
13 out IntPtr ppSession); | |
14 private delegate void pfnComUninitializeDelegate(); | 10 private delegate void pfnComUninitializeDelegate(); |
15 private delegate void pfnGetEventQueueDelegate(out IntPtr eventQueue); //void (*pfnGetEventQueue)(nsIEventQueue **eventQueue); | 11 private delegate void pfnGetEventQueueDelegate(out IntPtr eventQueue); //void (*pfnGetEventQueue)(nsIEventQueue **eventQueue); |
12 private delegate void pfnComUnallocMem(IntPtr pv); //void (*pfnComUnallocMem)(void *pv); | |
16 | 13 |
17 private struct VBOXXPCOMC { | 14 private struct VBOXXPCOMC { |
18 public UInt32 cb; //The size of the structure. | 15 public UInt32 cb; //The size of the structure. |
19 public UInt32 uVersion; //The structure version. | 16 public UInt32 uVersion; //The structure version. |
20 [MarshalAs(UnmanagedType.FunctionPtr)] | 17 [MarshalAs(UnmanagedType.FunctionPtr)] |
22 [MarshalAs(UnmanagedType.FunctionPtr)] | 19 [MarshalAs(UnmanagedType.FunctionPtr)] |
23 public pfnComInitializeDelegate pfnComInitialize; | 20 public pfnComInitializeDelegate pfnComInitialize; |
24 [MarshalAs(UnmanagedType.FunctionPtr)] | 21 [MarshalAs(UnmanagedType.FunctionPtr)] |
25 public pfnComUninitializeDelegate pfnComUninitialize; | 22 public pfnComUninitializeDelegate pfnComUninitialize; |
26 [MarshalAs(UnmanagedType.FunctionPtr)] | 23 [MarshalAs(UnmanagedType.FunctionPtr)] |
27 private pfnComUninitializeDelegate pfnComUnallocMem; //void (*pfnComUnallocMem)(void *pv); | 24 private pfnComUnallocMem pfnComUnallocMem; |
28 [MarshalAs(UnmanagedType.FunctionPtr)] | 25 [MarshalAs(UnmanagedType.FunctionPtr)] |
29 private pfnComUninitializeDelegate pfnUtf16Free; //void (*pfnUtf16Free)(PRUnichar *pwszString); | 26 private pfnComUnallocMem pfnUtf16Free; //void (*pfnUtf16Free)(PRUnichar *pwszString); |
30 [MarshalAs(UnmanagedType.FunctionPtr)] | 27 [MarshalAs(UnmanagedType.FunctionPtr)] |
31 private pfnComUninitializeDelegate pfnUtf8Free; //void (*pfnUtf8Free)(char *pszString); | 28 private pfnComUnallocMem pfnUtf8Free; //void (*pfnUtf8Free)(char *pszString); |
32 [MarshalAs(UnmanagedType.FunctionPtr)] | 29 [MarshalAs(UnmanagedType.FunctionPtr)] |
33 private pfnComUninitializeDelegate pfnUtf16ToUtf8; //int (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString); | 30 private pfnComUninitializeDelegate pfnUtf16ToUtf8; //int (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString); |
34 [MarshalAs(UnmanagedType.FunctionPtr)] | 31 [MarshalAs(UnmanagedType.FunctionPtr)] |
35 private pfnComUninitializeDelegate pfnUtf8ToUtf16; //int (*pfnUtf8ToUtf16)(const char *pszString, PRUnichar **ppwszString); | 32 private pfnComUninitializeDelegate pfnUtf8ToUtf16; //int (*pfnUtf8ToUtf16)(const char *pszString, PRUnichar **ppwszString); |
36 [MarshalAs(UnmanagedType.FunctionPtr)] | 33 [MarshalAs(UnmanagedType.FunctionPtr)] |
116 ~VBoxXPCOM() { | 113 ~VBoxXPCOM() { |
117 VirtualBox = null; | 114 VirtualBox = null; |
118 Session = null; | 115 Session = null; |
119 EventQueue = null; | 116 EventQueue = null; |
120 GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); | 117 GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); |
118 GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced); | |
121 FunctionTable.pfnComUninitialize(); | 119 FunctionTable.pfnComUninitialize(); |
122 } | 120 } |
123 } | 121 } |
124 } | 122 } |