windows-nt/Source/XPSP1/NT/base/mvdm/wow16/toolhelp/usergdi1.c

78 lines
2.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/**************************************************************************
* USERGDI1.C
*
* Returns information about USER.EXE and GDI.EXE
*
**************************************************************************/
#include "toolpriv.h"
/* SystemHeapInfo
* Returns information about USER's and GDI's heaps
*/
BOOL TOOLHELPAPI SystemHeapInfo(
SYSHEAPINFO FAR* lpSysHeap)
{
MODULEENTRY ModuleEntry;
#ifndef WOW
DWORD dw;
WORD wFreeK;
WORD wMaxHeapK;
#endif
/* Check the structure version number and pointer */
if (!wLibInstalled || !lpSysHeap ||
lpSysHeap->dwSize != sizeof (SYSHEAPINFO))
return FALSE;
/* Find the user data segment */
ModuleEntry.dwSize = sizeof (MODULEENTRY);
lpSysHeap->hUserSegment =
UserGdiDGROUP(ModuleFindName(&ModuleEntry, "USER"));
lpSysHeap->hGDISegment =
UserGdiDGROUP(ModuleFindName(&ModuleEntry, "GDI"));
#ifndef WOW
/* We get the information about the heap percentages differently in
* 3.0 and 3.1
*/
if ((wTHFlags & TH_WIN30) || !lpfnGetFreeSystemResources)
{
/* Get the space information about USER's heap */
dw = UserGdiSpace(lpSysHeap->hUserSegment);
wFreeK = LOWORD(dw) / 1024;
wMaxHeapK = HIWORD(dw) / 1024;
if (wMaxHeapK)
lpSysHeap->wUserFreePercent = wFreeK * 100 / wMaxHeapK;
else
lpSysHeap->wUserFreePercent = 0;
/* Get the space information about GDI's heap */
dw = UserGdiSpace(lpSysHeap->hGDISegment);
wFreeK = LOWORD(dw) / 1024;
wMaxHeapK = HIWORD(dw) / 1024;
if (wMaxHeapK)
lpSysHeap->wGDIFreePercent = wFreeK * 100 / wMaxHeapK;
else
lpSysHeap->wGDIFreePercent = 0;
}
/* Get the information from USER in 3.1 */
else
{
lpSysHeap->wUserFreePercent =
(*(WORD (FAR PASCAL *)(WORD))lpfnGetFreeSystemResources)(2);
lpSysHeap->wGDIFreePercent =
(*(WORD (FAR PASCAL *)(WORD))lpfnGetFreeSystemResources)(1);
}
#else
lpSysHeap->wUserFreePercent = GetFreeSystemResources(GFSR_USERRESOURCES);
lpSysHeap->wGDIFreePercent = GetFreeSystemResources(GFSR_GDIRESOURCES);
#endif
return TRUE;
}