[DllImport("kernel32", SetLastError = true)]
public static extern void GetSystemInfo(out SYSTEM_INFO lpSystemInfo);
Declare Function GetSystemInfo Lib "coredll.dll" (ByVal lpSystemInfo AS SYSTEM_INFO)
Public Enum ProcessorArchitecture As Int16
PROCESSOR_ARCHITECTURE_INTEL = 0
PROCESSOR_ARCHITECTURE_MIPS = 1
PROCESSOR_ARCHITECTURE_ALPHA = 2
PROCESSOR_ARCHITECTURE_PPC = 3
PROCESSOR_ARCHITECTURE_SHX = 4
PROCESSOR_ARCHITECTURE_ARM = 5
PROCESSOR_ARCHITECTURE_IA64 = 6
PROCESSOR_ARCHITECTURE_ALPHA64 = 7
PROCESSOR_ARCHITECTURE_UNKNOWN = &hFFFF;
End Enum
SYSTEM_INFO on MSDN
/// <summary>
/// http://msdn.microsoft.com/en-us/library/ms942639.aspx
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_INFO_WCE30
{
[MarshalAs(UnmanagedType.U4)]
public int dwOemId;
[MarshalAs(UnmanagedType.U2)]
public short wProcessorArch;
[MarshalAs(UnmanagedType.U2)]
public short wReserved;
[MarshalAs(UnmanagedType.U4)]
public int dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
[MarshalAs(UnmanagedType.U4)]
public int dwActiveProcessorMask;
[MarshalAs(UnmanagedType.U4)]
public int dwNumberOfProcessors;
[MarshalAs(UnmanagedType.U4)]
public int dwProcessorType;
[MarshalAs(UnmanagedType.U4)]
public int dwAllocationGranularity;
[MarshalAs(UnmanagedType.U2)]
public short dwProcessorLevel;
[MarshalAs(UnmanagedType.U2)]
public short dwProcessorRevision;
}
/// <summary>
/// http://msdn.microsoft.com/en-us/library/aa450921.aspx
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_INFO_WCE50
{
[MarshalAs(UnmanagedType.U2)]
public short wProcessorArch;
[MarshalAs(UnmanagedType.U2)]
public short wReserved;
[MarshalAs(UnmanagedType.U4)]
public int dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
[MarshalAs(UnmanagedType.U4)]
public int dwActiveProcessorMask;
[MarshalAs(UnmanagedType.U4)]
public int dwNumberOfProcessors;
[MarshalAs(UnmanagedType.U4)]
public int dwProcessorType;
[MarshalAs(UnmanagedType.U4)]
public int dwAllocationGranularity;
[MarshalAs(UnmanagedType.U2)]
public short dwProcessorLevel;
[MarshalAs(UnmanagedType.U2)]
public short dwProcessorRevision;
}
Do you know one? Please contribute it!
Please add some!
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
public enum ProcessorArchitecture : int
{
PROCESSOR_ARCHITECTURE_INTEL = 0,
PROCESSOR_ARCHITECTURE_MIPS = 1,
PROCESSOR_ARCHITECTURE_ALPHA = 2,
PROCESSOR_ARCHITECTURE_PPC = 3,
PROCESSOR_ARCHITECTURE_SHX = 4,
PROCESSOR_ARCHITECTURE_ARM = 5,
PROCESSOR_ARCHITECTURE_IA64 = 6,
PROCESSOR_ARCHITECTURE_ALPHA64 = 7,
PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF,
}
public class SysInfo
{
[DllImport("kernel32", EntryPoint = "GetSystemInfo", SetLastError = true)]
public static extern void GetSystemInfo30(out SYSTEM_INFO_WCE30 pSi);
[DllImport("kernel32", EntryPoint = "GetSystemInfo", SetLastError = true)]
public static extern void GetSystemInfo50(out SYSTEM_INFO_WCE50 pSi);
public static ProcessorArchitecture GetProcessorArch()
{
if (Environment.OSVersion.Platform != PlatformID.WinCE)
return ProcessorArchitecture.PROCESSOR_ARCHITECTURE_UNKNOWN; // probably no coredll
if (Environment.OSVersion.Version.Major >= 5)
{
SYSTEM_INFO_WCE50 si;
GetSystemInfo50(out si);
return (ProcessorArchitecture)si.wProcessorArch;
}
else
{
SYSTEM_INFO_WCE30 si;
GetSystemInfo30(out si);
return (ProcessorArchitecture)si.wProcessorArch;
}
}
}