2 using System.Runtime.InteropServices;
4 [StructLayout (LayoutKind.Sequential)]
5 public class OSVersionInfo
11 [StructLayout (LayoutKind.Sequential)]
12 public struct OSVersionInfo2
21 [DllImport ("libtest")]
22 public static extern int GetVersionEx ([In, Out] OSVersionInfo osvi);
24 [DllImport ("libtest", EntryPoint="GetVersionEx" )]
25 public static extern int GetVersionEx2 (ref OSVersionInfo2 osvi);
30 public static int Main()
32 Console.WriteLine( "\nPassing OSVersionInfo as class" );
34 OSVersionInfo osvi = new OSVersionInfo();
38 if (LibWrap.GetVersionEx (osvi) != 5)
47 Console.WriteLine( "A: {0}", osvi.a);
48 Console.WriteLine( "B: {0}", osvi.b);
50 Console.WriteLine( "\nPassing OSVersionInfo as struct" );
52 OSVersionInfo2 osvi2 = new OSVersionInfo2();
56 if (LibWrap.GetVersionEx2 (ref osvi2) != 5)
65 Console.WriteLine( "A: {0}", osvi2.a);
66 Console.WriteLine( "B: {0}", osvi2.b);