解决方案 »

  1.   


    typedef ULONG_PTR SIZE_T, *PSIZE_T;补上一个,通过SIZE_T我发现其实是以上声明。然后到了这里
    #if defined(_WIN64)
        typedef __int64 INT_PTR, *PINT_PTR;
        typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
     
        typedef __int64 LONG_PTR, *PLONG_PTR;
        typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
     
        #define __int3264   __int64
     
    #else
        typedef _W64 int INT_PTR, *PINT_PTR;
        typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
     
        typedef _W64 long LONG_PTR, *PLONG_PTR;
        typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
     
        #define __int3264   __int32
     
    #endif
      

  2.   

    路过。虽然我不是版主但是也有一点小想法:CPU的PAE模式不就开启了4GB以上的物理内存么?
      

  3.   

    这是两个概念。
    cpu能用,这个是肯定的。关键是我想获取。又在一个32位的环境下。这个痛苦了。
      

  4.   

    有加上EX后缀的函数GlobalMemoryStatusEx,同时对应结构体也是加上EX的,即MEMORYSTATUSEX:
    typedef struct _MEMORYSTATUSEX {
      DWORD dwLength; 
      DWORD dwMemoryLoad; 
      DWORDLONG ullTotalPhys; 
      DWORDLONG ullAvailPhys; 
      DWORDLONG ullTotalPageFile; 
      DWORDLONG ullAvailPageFile; 
      DWORDLONG ullTotalVirtual; 
      DWORDLONG ullAvailVirtual; 
      DWORDLONG ullAvailExtendedVirtual;
    } MEMORYSTATUSEX, *LPMEMORYSTATUSEX; 
      

  5.   

    我只想说,内存两都超4G了,怎么还在用32位的操作系统...
    虽然服务器版本有32位系统操作4GB以上内存的补丁
    但补丁就是补丁,总会消耗更多的资源不是吗
      

  6.   

    使用GlobalMemoryStatusEx即可,直接写死使用__int64MEMORYSTATUSEX statex = {0};
    statex.dwLength = sizeof (statex);
    GlobalMemoryStatusEx (&statex);
      

  7.   

    Windows AWE 只能帮你倒这里了