Implemented GlobalMemoryStatusEx().
This commit is contained in:
parent
37f08173b5
commit
7aa04f2744
|
@ -533,7 +533,7 @@
|
||||||
@ stdcall GlobalHandle(ptr) GlobalHandle
|
@ stdcall GlobalHandle(ptr) GlobalHandle
|
||||||
@ stdcall GlobalLock(long) GlobalLock
|
@ stdcall GlobalLock(long) GlobalLock
|
||||||
@ stdcall GlobalMemoryStatus(ptr) GlobalMemoryStatus
|
@ stdcall GlobalMemoryStatus(ptr) GlobalMemoryStatus
|
||||||
@ stub GlobalMemoryStatusEx
|
@ stdcall GlobalMemoryStatusEx(ptr) GlobalMemoryStatusEx
|
||||||
@ stdcall GlobalReAlloc(long long long) GlobalReAlloc
|
@ stdcall GlobalReAlloc(long long long) GlobalReAlloc
|
||||||
@ stdcall GlobalSize(long) GlobalSize
|
@ stdcall GlobalSize(long) GlobalSize
|
||||||
@ stdcall GlobalUnWire(long) GlobalUnWire
|
@ stdcall GlobalUnWire(long) GlobalUnWire
|
||||||
|
|
|
@ -460,6 +460,18 @@ typedef struct tagMEMORYSTATUS
|
||||||
SIZE_T dwAvailVirtual;
|
SIZE_T dwAvailVirtual;
|
||||||
} MEMORYSTATUS, *LPMEMORYSTATUS;
|
} MEMORYSTATUS, *LPMEMORYSTATUS;
|
||||||
|
|
||||||
|
typedef struct tagMEMORYSTATUSEX {
|
||||||
|
DWORD dwLength;
|
||||||
|
DWORD dwMemoryLoad;
|
||||||
|
DWORDLONG ullTotalPhys;
|
||||||
|
DWORDLONG ullAvailPhys;
|
||||||
|
DWORDLONG ullTotalPageFile;
|
||||||
|
DWORDLONG ullAvailPageFile;
|
||||||
|
DWORDLONG ullTotalVirtual;
|
||||||
|
DWORDLONG ullAvailVirtual;
|
||||||
|
DWORDLONG ullAvailExtendedVirtual;
|
||||||
|
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _SYSTEMTIME{
|
typedef struct _SYSTEMTIME{
|
||||||
WORD wYear;
|
WORD wYear;
|
||||||
|
|
|
@ -1558,6 +1558,9 @@ SIZE_T WINAPI GlobalCompact( DWORD minfree )
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GlobalMemoryStatus (KERNEL32.@)
|
* GlobalMemoryStatus (KERNEL32.@)
|
||||||
|
* Provides information about the status of the memory, so apps can tell
|
||||||
|
* roughly how much they are able to allocate
|
||||||
|
*
|
||||||
* RETURNS
|
* RETURNS
|
||||||
* None
|
* None
|
||||||
*/
|
*/
|
||||||
|
@ -1692,6 +1695,38 @@ VOID WINAPI GlobalMemoryStatus(
|
||||||
lpmem->dwAvailVirtual);
|
lpmem->dwAvailVirtual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* GlobalMemoryStatusEx (KERNEL32.@)
|
||||||
|
* A version of GlobalMemoryStatus that can deal with memory over 4GB
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* None
|
||||||
|
*/
|
||||||
|
BOOL WINAPI GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpBuffer ) {
|
||||||
|
MEMORYSTATUS memstatus;
|
||||||
|
|
||||||
|
/* Because GlobalMemoryStatusEx is identical to GlobalMemoryStatus save
|
||||||
|
for one extra field in the struct, and the lack of a bug, we simply
|
||||||
|
call GlobalMemoryStatus and copy the values across. */
|
||||||
|
FIXME("we should emulate the 4GB bug here, as per MSDN\n");
|
||||||
|
GlobalMemoryStatus(&memstatus);
|
||||||
|
lpBuffer->dwMemoryLoad = memstatus.dwMemoryLoad;
|
||||||
|
lpBuffer->ullTotalPhys = memstatus.dwTotalPhys;
|
||||||
|
lpBuffer->ullAvailPhys = memstatus.dwAvailPhys;
|
||||||
|
lpBuffer->ullTotalPageFile = memstatus.dwTotalPageFile;
|
||||||
|
lpBuffer->ullAvailPageFile = memstatus.dwAvailPageFile;
|
||||||
|
lpBuffer->ullTotalVirtual = memstatus.dwTotalVirtual;
|
||||||
|
lpBuffer->ullAvailVirtual = memstatus.dwAvailVirtual;
|
||||||
|
/* MSDN says about AvailExtendedVirtual: Size of unreserved and uncommitted
|
||||||
|
memory in the extended portion of the virtual address space of the calling
|
||||||
|
process, in bytes.
|
||||||
|
|
||||||
|
However, I don't know what this means, so set it to zero :(
|
||||||
|
*/
|
||||||
|
lpBuffer->ullAvailExtendedVirtual = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* A20Proc (KERNEL.165)
|
* A20Proc (KERNEL.165)
|
||||||
* A20_Proc (SYSTEM.20)
|
* A20_Proc (SYSTEM.20)
|
||||||
|
|
Loading…
Reference in New Issue