2010-05-11 2 views
0

Статический конструктор C# и GetVersion() любые предложения?Статический конструктор C# и GetVersion() любые предложения?

Привет, я определил-структуру, как это в отдельных OSVERSIONINFO.cs файлов, как это:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] 
public struct OSVERSIONINFO 
{ 
    public static int SizeOf 
    { 
     get 
     { 
      return Marshal.SizeOf (typeof(OSVERSIONINFO)); 
     } 
    } 

    public uint dwOSVersionInfoSize; 
    public uint dwMajorVersion; 
    public uint dwMinorVersion; 
    public uint dwBuildNumber; 
    public uint dwPlatformId; 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] 
    public string szCSDVersion; 
} 

Также у меня есть этот файл OS.cs, в котором я определил следующий класс:

public static class OS 
{ 
    static OS() 
    { 
     OSVERSIONINFO info = new OSVERSIONINFO(); 
     info.dwOSVersionInfoSize = (uint)OSVERSIONINFO.SizeOf; 

     if (!OS.GetVersion(ref info)) 
     { 
      Console.WriteLine("Error!!!"); 
     } 

    } 

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    public static extern bool GetVersion (ref OSVERSIONINFO lpVersionInfo); 
} 

Путь в статическом конструкторе класса OS-класса информации (экземпляр структуры OSVERSIONINFO) не удается? Если я вызываю OS.GetVersion в другом ладони (не в классе ОС), все в порядке?

+6

Вы не указали код для OS.GetVersion, и вы не сказали, каким образом он терпит неудачу. –

+0

Является ли GetVersion() объявленным статическим? – Simon

+0

Есть ли причина, по которой вы не можете использовать 'Environment.OSVersion' для доступа к информации о версии ОС? – LBushkin

ответ

0

Чтобы ответить на вопрос, вам необходимо позвонить по телефону GetVersionEx.

+0

Из MSDN (http://msdn.microsoft.com/en-us/library/ms724439%28VS.85%29.aspx) о GetVersion: эта функция был заменен GetVersionEx. Новые приложения должны использовать GetVersionEx или VerifyVersionInfo. Позор мне, я должен сначала прочитать MSDN. Спасибо за ваш ответ и время. –

Смежные вопросы