2005-03-04 Lluis Sanchez Gual <lluis@novell.com>
[mono.git] / mono / tests / pinvoke17.cs
index 9159857a85102c94d4eb7e8f12636a24002a1963..4df6d561e78dcb05d76f6fc160ad3ce3ccaad291 100644 (file)
@@ -21,6 +21,9 @@ public class LibWrap
        [DllImport ("libtest")]                         
        public static extern int GetVersionEx ([In, Out] OSVersionInfo osvi);
 
+        [DllImport ("libtest")]
+       public static extern int BugGetVersionEx (int a, int b, int c, int d, int e, int f, int g, int h, [In, Out] OSVersionInfo osvi);
+    
        [DllImport ("libtest", EntryPoint="GetVersionEx" )] 
        public static extern int GetVersionEx2 (ref OSVersionInfo2 osvi);  
 }
@@ -65,6 +68,26 @@ public class Test
                Console.WriteLine( "A: {0}", osvi2.a);
                Console.WriteLine( "B: {0}", osvi2.b);
 
+               Console.WriteLine ("Testing with extra parameters at the beginning");
+
+               OSVersionInfo osvi3 = new OSVersionInfo();
+               osvi3.a = 1;
+               osvi3.b = 2;
+               
+               if (LibWrap.BugGetVersionEx (10, 10, 10, 10, 20, 20, 20, 20, osvi3) != 5)
+                       return 7;
+
+               if (osvi3.a != 2)
+                       return 8;
+               
+               if (osvi3.b != 3)
+                       return 9;
+               
+               Console.WriteLine( "A: {0}", osvi.a);
+               Console.WriteLine( "B: {0}", osvi.b);
+               
+               Console.WriteLine( "\nPassing OSVersionInfo as struct" );
+               
                return 0;
        }
 }