2020-09-30 17:12:29 +02:00

174 lines
3.9 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
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;
}