GetVersionEx (kernel32)
Last changed: -74.212.48.23

.
Summary
Obtains extended information about the version of the operating system that is currently running.

C# Signatures:

// This must be used if OSVERSIONINFO is defined as a struct
[ DllImport( "kernel32" )]
static extern bool GetVersionEx( ref OSVERSIONINFO osvi );  

// This must be used if OSVERSIONINFO is defined as a class
[ DllImport( "kernel32" )]
static extern bool GetVersionEx( [In, Out] OSVERSIONINFO osvi );

VB.Net Signatures:

Shared <DllImport("kernel32")> Function GetVersionEx(osvi As OSVERSIONINFO) As Boolean

User-Defined Types:

OSVERSIONINFO

Notes:

None.

Tips & Tricks:

If you forget to set the OSVersionInfoSize field of the OSVERSIONINFO struct, the function will return false. GetLastError() will return:

127

ERROR_PROC_NOT_FOUND

"The specified procedure could not be found."

Sample Code:

Using the OSVERSIONINFO class and corresponding signature:

Console.WriteLine( "\nPassing OSVERSIONINFO as class" );

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

GetVersionEx( osvi );

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

Using the OSVERSIONINFO struct and corresponding signature:

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

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

GetVersionEx( ref osvi2 );

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

Alternative Managed API:

System.Environment.OSVersion property

Documentation