您如何在C#中告诉您在Windows-CE中运行的体系结构?

时间:2017-11-16 17:06:53

标签: c# x86 arm windows-ce

我正在编写WEC7应用程序的安装程序,该应用程序在多个设备上运行,每个设备都有不同的架构,甚至可能有不同的操作系统版本。由于历史原因,该应用程序是用C ++编写的。这意味着将为每个OS /体系结构版本编译应用程序。安装程序包的所有版本都是resouces。我只需要确定要安装哪一个。 OS版本可以在System.Environment.OSVersion.Version.Major中获得,但我无法区分ARM和x86架构。

我遇到的可能解决方案包括:

SYSTEM_INFO si;
GetSystemInfo(&si);
return si.wProcessorArchitecture;

然而,这是C ++代码,因此遇到了同样的问题,即:两个编译版本(ARM& x86),您必须知道要加载哪个...但这就是我想运行代码的原因。

我还调查了System.Management,但我无法在WEC7上找到它。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以随时P /调用GetSystemInfo来电:

[DllImport("coredll.dll")]
public static extern void GetSystemInfo(out SystemInfo info);

public enum ProcessorArchitecture
{
    Intel = 0,
    Mips = 1,
    Shx = 4,
    Arm = 5,
    Unknown = 0xFFFF,
}

[StructLayout(LayoutKind.Sequential)]
public struct SystemInfo
{
    public ProcessorArchitecture ProcessorArchitecture;
    public uint PageSize;
    public IntPtr MinimumApplicationAddress;
    public IntPtr MaximumApplicationAddress;
    public IntPtr ActiveProcessorMask;
    public uint NumberOfProcessors;
    public uint ProcessorType;
    public uint AllocationGranularity;
    public ushort ProcessorLevel;
    public ushort ProcessorRevision;
}