public OSDependency(System.Deployment.Application.NativeMethods.OSVersionInfoEx osvi) { this.dwMajorVersion = osvi.dwMajorVersion; this.dwMinorVersion = osvi.dwMinorVersion; this.dwMajorVersion = osvi.dwBuildNumber; this.dwMajorVersion = osvi.wServicePackMajor; this.dwMajorVersion = osvi.wServicePackMinor; this.suiteName = PlatformDetector.NameMap.MapMaskToName(osvi.wSuiteMask, PlatformDetector.Suites); this.productName = PlatformDetector.NameMap.MapMaskToName(osvi.bProductType, PlatformDetector.Products); }
public static bool VerifyOSDependency(ref OSDependency osd) { System.Deployment.Application.NativeMethods.OSVersionInfoEx ex; OperatingSystem oSVersion = Environment.OSVersion; if (oSVersion.Version.Major == 4L) { if (oSVersion.Version.Major < osd.dwMajorVersion) { return false; } return true; } ex = new System.Deployment.Application.NativeMethods.OSVersionInfoEx { dwOSVersionInfoSize = Marshal.SizeOf(ex), dwMajorVersion = osd.dwMajorVersion, dwMinorVersion = osd.dwMinorVersion, dwBuildNumber = osd.dwBuildNumber, dwPlatformId = 0, szCSDVersion = null, wServicePackMajor = osd.wServicePackMajor, wServicePackMinor = osd.wServicePackMinor, wSuiteMask = (osd.suiteName != null) ? ((ushort) NameMap.MapNameToMask(osd.suiteName, Suites)) : ((ushort) 0), bProductType = (osd.productName != null) ? ((byte) NameMap.MapNameToMask(osd.productName, Products)) : ((byte) 0), bReserved = 0 }; ulong conditionMask = 0L; uint dwTypeMask = (uint) ((((((2 | ((osd.dwMinorVersion != 0) ? 1 : 0)) | ((osd.dwBuildNumber != 0) ? 4 : 0)) | ((osd.suiteName != null) ? 0x40 : 0)) | ((osd.productName != null) ? 0x80 : 0)) | ((osd.wServicePackMajor != 0) ? 0x20 : 0)) | ((osd.wServicePackMinor != 0) ? 0x10 : 0)); conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 2, 3); if (osd.dwMinorVersion != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 1, 3); } if (osd.dwBuildNumber != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 4, 3); } if (osd.suiteName != null) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x40, 6); } if (osd.productName != null) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x80, 1); } if (osd.wServicePackMajor != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x20, 3); } if (osd.wServicePackMinor != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x10, 3); } bool flag = System.Deployment.Application.NativeMethods.VerifyVersionInfo(ex, dwTypeMask, conditionMask); if (!flag) { int error = Marshal.GetLastWin32Error(); if (error != 0x47e) { throw new Win32Exception(error); } } return flag; }
public static bool VerifyOSDependency(ref OSDependency osd) { System.Deployment.Application.NativeMethods.OSVersionInfoEx ex; OperatingSystem oSVersion = Environment.OSVersion; if (oSVersion.Version.Major == 4L) { if (oSVersion.Version.Major < osd.dwMajorVersion) { return(false); } return(true); } ex = new System.Deployment.Application.NativeMethods.OSVersionInfoEx { dwOSVersionInfoSize = Marshal.SizeOf(ex), dwMajorVersion = osd.dwMajorVersion, dwMinorVersion = osd.dwMinorVersion, dwBuildNumber = osd.dwBuildNumber, dwPlatformId = 0, szCSDVersion = null, wServicePackMajor = osd.wServicePackMajor, wServicePackMinor = osd.wServicePackMinor, wSuiteMask = (osd.suiteName != null) ? ((ushort)NameMap.MapNameToMask(osd.suiteName, Suites)) : ((ushort)0), bProductType = (osd.productName != null) ? ((byte)NameMap.MapNameToMask(osd.productName, Products)) : ((byte)0), bReserved = 0 }; ulong conditionMask = 0L; uint dwTypeMask = (uint)((((((2 | ((osd.dwMinorVersion != 0) ? 1 : 0)) | ((osd.dwBuildNumber != 0) ? 4 : 0)) | ((osd.suiteName != null) ? 0x40 : 0)) | ((osd.productName != null) ? 0x80 : 0)) | ((osd.wServicePackMajor != 0) ? 0x20 : 0)) | ((osd.wServicePackMinor != 0) ? 0x10 : 0)); conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 2, 3); if (osd.dwMinorVersion != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 1, 3); } if (osd.dwBuildNumber != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 4, 3); } if (osd.suiteName != null) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x40, 6); } if (osd.productName != null) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x80, 1); } if (osd.wServicePackMajor != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x20, 3); } if (osd.wServicePackMinor != 0) { conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x10, 3); } bool flag = System.Deployment.Application.NativeMethods.VerifyVersionInfo(ex, dwTypeMask, conditionMask); if (!flag) { int error = Marshal.GetLastWin32Error(); if (error != 0x47e) { throw new Win32Exception(error); } } return(flag); }