C # статический конструктор и GetVersion () какие-либо предложения? - PullRequest
0 голосов
/ 11 мая 2010

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 в другом месте (не в классе ОС), все в порядке?

Ответы [ 2 ]

8 голосов
/ 11 мая 2010

Вместо этого следует использовать свойство Environment.OSVersion.Platform .

0 голосов
/ 11 мая 2010

Чтобы ответить на вопрос, нужно позвонить GetVersionEx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...