实验环境: pc操作系统:windows xp
          开发工具:Microsoft Visual C# .NET 2003 
异常:未处理的“System.EntryPointNotFoundException”类型的异常出现在 ESServer.exe 中。其他信息: 无法在 DLL CoreDll.dll 中找到名为 GetSystemMemoryDivision 的入口点。
          
实验过程:我参照MSDN 上的方法获取设备内存 ,下面是网址
http://msdn2.microsoft.com/zh-cn/library/ms172518.aspx实现代码:
c#:
public struct MEMORYSTATUS
{
    public uint dwLength;
    public uint dwMemoryLoad;
    public uint dwTotalPhys;
    public uint dwAvailPhys;
    public uint dwTotalPageFile;
    public uint dwAvailPageFile;
    public uint dwTotalVirtual;
    public uint dwAvailVirtual;
}[DllImport("CoreDll.dll")]
public static extern void GlobalMemoryStatus
(
    MEMORYSTATUS lpBuffer
);[DllImport("CoreDll.dll")]
public static extern int GetSystemMemoryDivision
(
    ref uint lpdwStorePages,
    ref uint lpdwRamPages,
    ref uint lpdwPageSize
);public void ShowMemory()
{
    uint storePages = 0;
    uint ramPages = 0;
    uint pageSize = 0;
    int res = GetSystemMemoryDivision(ref storePages, 
        ref ramPages, ref pageSize);    // Call the native GlobalMemoryStatus method
    // with the defined structure.
    MEMORYSTATUS memStatus = new MEMORYSTATUS();
    GlobalMemoryStatus(memStatus);    // Use a StringBuilder for the message box string.
    StringBuilder MemoryInfo = new StringBuilder();
    MemoryInfo.Append("Memory Load: " 
        + memStatus.dwMemoryLoad.ToString() + "\n");
    MemoryInfo.Append("Total Physical: " 
        + memStatus.dwTotalPhys.ToString() + "\n");
    MemoryInfo.Append("Avail Physical: " 
        + memStatus.dwAvailPhys.ToString() + "\n");
    MemoryInfo.Append("Total Page File: " 
        + memStatus.dwTotalPageFile.ToString() + "\n");
    MemoryInfo.Append("Avail Page File: " 
        + memStatus.dwAvailPageFile.ToString() + "\n");
    MemoryInfo.Append("Total Virtual: " 
        + memStatus.dwTotalVirtual.ToString() + "\n");
    MemoryInfo.Append("Avail Virtual: " 
        + memStatus.dwAvailVirtual.ToString() + "\n");    // Show the available memory.
    MessageBox.Show(MemoryInfo.ToString());
  
}
我的系统没有CoreDll.dll,我在网上找了一个

解决方案 »

  1.   

    www.dll-files.com网站上有,你到参考资料中下载吧。
    参考资料:http://www.dll-files.com/dllindex/dll-files.shtml?coredll
      

  2.   

    我是把CoreDll.dll放在C:\WINDOWS\system32 下 ,因为我对API 没什么了解,系统的 API函数是不是都在那个目录下?
      

  3.   

    我按luqinghua(Action)提供的网址下载的还是不能用,也有去其它地方载,好象都不行,
    谁有用:Visual C# .NET 2003 实现这个获取设备内存,可不可以共享一下!
      

  4.   

    这个示例是.Net Compact Framework上的,也就是运行于Windows CE, Pocket PC 2003等上。那个CoreDll.dll库也是Win CE的核心库,并非你从网上下载的那个,所以你不能成功运行。
    要想试验这个项目,首先必须安装了VS 的SmartDevice 开发包,默认应该是安装的。然后新建一个Visual C# \ Smart Device \ Pocket PC 2003 \ Console Application 项目,把示例代码复制到生成的类中,并using相应的命名空间以及加入对System.Windows.Forms的reference. 源代码中有一处错误,GlobalMemoryStatus应该声明为 
            [DllImport("CoreDll.dll")]
            public static extern void GlobalMemoryStatus
            (
                ref MEMORYSTATUS lpBuffer
            );相应的使用它的语句应该改成:
                GlobalMemoryStatus(ref memStatus);然后编译,调试运行,这时VS会打开设备模拟器(Device Emulator)窗口模拟运行Pocket PC 2003,等待几分钟后模拟器的设备会弹出消息框显示设备的内存情况。
      

  5.   

    public struct MEMORYSTATUS布局上有限制的吧?
      

  6.   

    jjcheung(张) 说的
    然后新建一个Visual C# \ Smart Device \ Pocket PC 2003 \ Console Application 项目
    是怎么一回事?
    用Visual C#怎么建?
      

  7.   

    那我怎么样才能在window上实现获取设备内存的功能呢?
      

  8.   

    http://singlepine.cnblogs.com/articles/283664.html
      

  9.   

    Visual C# \ Smart Device \ Pocket PC 2003 \ Console Application 项目 是指在"新建项目"对话框中项目树的路径。 我是用VS 2005做实验的。