GetVersionEx (kernel32)
Last changed: -74.212.48.23

.
Summary

C# Signature:

[ DllImport( "kernel32" )]
public static extern bool GetVersionEx( [In, Out] OSVersionInfo osvi );

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

using System;

using System.Runtime.InteropServices;

namespace APIGetVersionEx

{

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
        [ DllImport( "kernel32" )]
        public static extern bool GetVersionEx( [In, Out] OSVersionInfo osvi );

        [STAThread]
        static void Main(string[] args)
        {
            Console.WriteLine( "\nPassing OSVersionInfo as class" );

            OSVersionInfo osvi = new OSVersionInfo();
            osvi.OSVersionInfoSize = Marshal.SizeOf( osvi );

            LibWrap.GetVersionEx( osvi );

            Console.WriteLine( "Class size:    {0}", osvi.OSVersionInfoSize );

                Console.WriteLine( "\nPassing OSVersionInfo as struct" );

            OSVersionInfo2 osvi2 = new OSVersionInfo2();
            osvi2.OSVersionInfoSize = Marshal.SizeOf( osvi2 );

            LibWrap.GetVersionEx2( ref osvi2 );
            Console.WriteLine( "Struct size:   {0}", osvi2.OSVersionInfoSize );

        }
    }

    [ StructLayout( LayoutKind.Sequential )]
    public class OSVersionInfo
    {
        public int OSVersionInfoSize;

        [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]    
        public String versionString;
    }
    [ StructLayout( LayoutKind.Sequential )]  
    public struct OSVersionInfo2
    {
        public int OSVersionInfoSize;

        [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]
        public String versionString;
    }
    public class LibWrap
    {
        [ DllImport( "kernel32" )]
        public static extern bool GetVersionEx( [In, Out] OSVersionInfo osvi );

        [ DllImport( "kernel32", EntryPoint="GetVersionEx" )]
        public static extern bool GetVersionEx2( ref OSVersionInfo2 osvi );  
    }

}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation