Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/**************************************************************************
* 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; }
|