/// <summary> /// Gets the CPU architecture from a remote host. /// </summary> /// <param name="Host">Host to get the architecture information from.</param> /// <returns>CPU architecture.</returns> public static Task <OSArchitecture> GetRemoteArch(string Host) { Logger.Information("Reading OS Architecture..."); return(Task.Run(() => { try { ManagementScope scope = new ManagementScope(GetBestManagementScope(Host)); scope.Connect(); ObjectQuery query = new ObjectQuery("SELECT OSArchitecture FROM Win32_OperatingSystem"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection collection = searcher.Get(); foreach (ManagementObject manObj in collection) { string rawArch = (string)manObj["OSArchitecture"]; OSArchitecture arch = OSArchitecture.X86; if (rawArch.Contains("64")) { arch = OSArchitecture.X64; } Logger.Information("OS Architecture is: " + arch + "."); return arch; } } catch (Exception e) { Logger.Exception(e, "Failed to read the OS Architecture from host: " + Host + "."); } return OSArchitecture.Unknown; })); }
public IEnumerable <ICpuId> CreateAll() { OSArchitecture architecture = Win32.GetArchitecture(); switch (architecture) { case OSArchitecture.x64: case OSArchitecture.x86: case OSArchitecture.x86_x64: LoadLibrary(); X86CpuIdFactory factory = new X86CpuIdFactory(); IEnumerable <ICpuId> cpus = factory.CreateAll(); foreach (ICpuId cpu in cpus) { if (cpu is ICpuIdX86 x86cpu) { x86cpu.Topology.CoreTopology.IsReadOnly = true; } } return(cpus); default: throw new PlatformNotSupportedException("Architecture is not supported"); } }
public static void SetArchitectureForPlatform(BuildTarget buildTarget, OSArchitecture architecture) { EditorUserBuildSettings.SetPlatformSettings(BuildPipeline.GetBuildTargetName(buildTarget), EditorUserBuildSettings.kSettingArchitecture, architecture.ToString().ToLower()); }