174 lines
3.9 KiB
C
174 lines
3.9 KiB
C
/*++
|
||
|
||
Copyright (c) 1993 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
Memp.c
|
||
|
||
Abstract:
|
||
|
||
This module contains support for displaying the Memory dialog.
|
||
|
||
Author:
|
||
|
||
Scott B. Suhy (ScottSu) 6/1/93
|
||
|
||
Environment:
|
||
|
||
User Mode
|
||
|
||
--*/
|
||
|
||
#include "dialogsp.h"
|
||
#include "memp.h"
|
||
#include "msgp.h"
|
||
#include "regp.h"
|
||
#include "winmsdp.h"
|
||
#include "printp.h"
|
||
|
||
#include <string.h>
|
||
#include <tchar.h>
|
||
|
||
//
|
||
// Name of Registry value that contains the paths for the paging files.
|
||
//
|
||
|
||
VALUE
|
||
MemValues[ ] = {
|
||
|
||
MakeValue( PagingFiles, MULTI_SZ )
|
||
|
||
};
|
||
|
||
//
|
||
// Location of value that contains the paths for the paging files.
|
||
//
|
||
|
||
MakeKey(
|
||
MemKey,
|
||
HKEY_LOCAL_MACHINE,
|
||
TEXT( "System\\CurrentControlSet\\Control\\Session Manager\\Memory Management" ),
|
||
NumberOfEntries( MemValues ),
|
||
MemValues
|
||
);
|
||
|
||
BOOL
|
||
MemoryProc(
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
MemoryDlgProc supports the display of the memory dialog which displays
|
||
information about total memory, available memory and paging file location.
|
||
|
||
Arguments:
|
||
|
||
Standard PROC entry.
|
||
|
||
Return Value:
|
||
|
||
BOOL - Depending on input message and processing options.
|
||
|
||
--*/
|
||
|
||
{
|
||
BOOL Success;
|
||
|
||
static
|
||
int PercentUtilization;
|
||
|
||
MEMORYSTATUS MemoryStatus;
|
||
HREGKEY hRegKey;
|
||
LPTSTR PagingFile;
|
||
TCHAR Buffer[ MAX_PATH ];
|
||
|
||
//
|
||
// Query the memory status from the system.
|
||
//
|
||
|
||
MemoryStatus.dwLength = sizeof( MemoryStatus );
|
||
GlobalMemoryStatus( &MemoryStatus );
|
||
|
||
//
|
||
// Remember the memory utilization.
|
||
//
|
||
|
||
PercentUtilization = MemoryStatus.dwMemoryLoad;
|
||
|
||
//
|
||
// Display the total and available physical memory and paging file
|
||
// space in KB and in bytes.
|
||
//
|
||
|
||
|
||
PrintToFile((LPCTSTR)FormatBigInteger(MemoryStatus.dwTotalPhys,FALSE),IDC_EDIT_TOTAL_PHYSICAL_MEMORY,TRUE);
|
||
|
||
|
||
PrintToFile((LPCTSTR)FormatBigInteger(MemoryStatus.dwAvailPhys,FALSE),IDC_EDIT_AVAILABLE_PHYSICAL_MEMORY,TRUE);
|
||
|
||
|
||
PrintToFile((LPCTSTR)FormatBigInteger(MemoryStatus.dwTotalPageFile,FALSE),IDC_EDIT_TOTAL_PAGING_FILE_SPACE,TRUE);
|
||
|
||
|
||
PrintToFile((LPCTSTR)FormatBigInteger(MemoryStatus.dwAvailPageFile,FALSE),IDC_EDIT_AVAILABLE_PAGING_FILE_SPACE,TRUE);
|
||
|
||
/*WFormatMessage(
|
||
Buffer,
|
||
sizeof( Buffer ),
|
||
IDS_FORMAT_MEMORY_IN_USE,
|
||
PercentUtilization
|
||
);*/
|
||
|
||
PrintDwordToFile(PercentUtilization,IDC_FORMAT_MEMORY_IN_USE);
|
||
|
||
|
||
//
|
||
// Open the registry key that contains the location of the paging
|
||
// files.
|
||
//
|
||
|
||
hRegKey = OpenRegistryKey( &MemKey );
|
||
DbgHandleAssert( hRegKey );
|
||
if( hRegKey == NULL ) {
|
||
return TRUE;
|
||
}
|
||
|
||
//
|
||
// Retrieve the location of the paging files.
|
||
//
|
||
|
||
Success = QueryNextValue( hRegKey );
|
||
DbgAssert( Success );
|
||
if( Success == FALSE ) {
|
||
Success = CloseRegistryKey( hRegKey );
|
||
DbgAssert( Success );
|
||
return TRUE;
|
||
}
|
||
|
||
//
|
||
// PagingFile points to a series of NUL terminated string terminated
|
||
// by an additional NUL (i.e. a MULTI_SZ string). THerefore walk
|
||
// this list of strings adding each to the list box.
|
||
//
|
||
|
||
PagingFile = ( LPTSTR ) hRegKey->Data;
|
||
while(( PagingFile != NULL ) && ( PagingFile[ 0 ] != TEXT( '\0' ))) {
|
||
|
||
PrintToFile((LPCTSTR)PagingFile,IDC_LIST_PAGING_FILES,TRUE);
|
||
|
||
PagingFile += _tcslen( PagingFile ) + 1;
|
||
}
|
||
|
||
//
|
||
// Close the registry key.
|
||
//
|
||
|
||
Success = CloseRegistryKey( hRegKey );
|
||
DbgAssert( Success );
|
||
|
||
return TRUE;
|
||
}
|