home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
m
/
msjmar93.zip
/
MEMMAN.ZIP
/
VMMAP.ZIP
/
VMMAP.C
< prev
next >
Wrap
Text File
|
1993-03-01
|
4KB
|
139 lines
/****************************************************************************
Module name: VMMap.C
*****************************************************************************/
#include <windows.h>
#include <windowsx.h>
#include <stdio.h> // for sprintf
#include <string.h> // for strchr
#include "VMMap.H"
HANDLE hFile;
void ConstructMemInfoLine (PMEMORY_BASIC_INFORMATION pMBI, LPTSTR szLine) {
char *sz, szBuf[25];
sprintf(szLine, "%08lX ", pMBI->BaseAddress);
sprintf(strchr(szLine, 0),
(pMBI->State != MEM_FREE) ? "%08lX" : " N/A ",
pMBI->AllocationBase);
if (pMBI->State != MEM_FREE) {
switch (pMBI->AllocationProtect) {
case PAGE_NOACCESS: sz = "PAGE_NOACCESS"; break;
case PAGE_READONLY: sz = "PAGE_READONLY"; break;
case PAGE_READWRITE: sz = "PAGE_READWRITE"; break;
default:
sprintf(sz = szBuf, "Unknown(%d)",
pMBI->AllocationProtect);
break;
}
} else sz = "N/A";
sprintf(strchr(szLine, 0), " %-14s ", sz);
sprintf(strchr(szLine, 0), "%10lu ", pMBI->RegionSize);
switch (pMBI->State) {
case MEM_COMMIT: sz = "MEM_COMMIT"; break;
case MEM_FREE: sz = "MEM_FREE"; break;
case MEM_RESERVE: sz = "MEM_RESERVE"; break;
default:
sprintf(sz = szBuf, "Unknown(%d)",
pMBI->State);
break;
}
sprintf(strchr(szLine, 0), "%-11s ", sz);
if ((pMBI->State != MEM_FREE) &&
(pMBI->State != MEM_RESERVE)) {
switch (pMBI->Protect) {
case PAGE_NOACCESS: sz = "PAGE_NOACCESS"; break;
case PAGE_READONLY: sz = "PAGE_READONLY"; break;
case PAGE_READWRITE: sz = "PAGE_READWRITE"; break;
default:
sprintf(sz = szBuf, "Unknown(%d)",
pMBI->Protect);
break;
}
} else sz = "N/A";
sprintf(strchr(szLine, 0), "%-14s ", sz);
if ((pMBI->State != MEM_FREE)) {
switch (pMBI->Type) {
case MEM_PRIVATE: sz = "MEM_PRIVATE"; break;
default:
sprintf(sz = szBuf, "Unknown(%d)",
pMBI->Type);
break;
}
} else sz = "N/A";
sprintf(strchr(szLine, 0), "%-11s", sz);
}
BOOL Dlg_OnInitDialog (HWND hwnd, HWND hwndFocus, LPARAM lParam) {
HWND hWndLB = GetDlgItem(hwnd, ID_LISTBOX);
MEMORY_BASIC_INFORMATION MemoryBasicInfo;
PVOID lpAddress = 0;
char szLine[100];
hFile = CreateFile("VMMAP.DAT", GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, 0, NULL);
// Walk the Virtual address space adding entries to the ListBox.
do {
int x = VirtualQuery(lpAddress, &MemoryBasicInfo,
sizeof(MemoryBasicInfo));
if (x != sizeof(MemoryBasicInfo)) {
// Attempt to walk beyond the range which Windows allows.
break;
}
// Construct the line to be displayed an add it to the listbox.
ConstructMemInfoLine(&MemoryBasicInfo, szLine);
ListBox_AddString(hWndLB, szLine);
{ DWORD dw;
WriteFile(hFile, szLine, strlen(szLine), &dw, NULL);
WriteFile(hFile, "\r\n", 2, &dw, NULL);
}
// Get address of the next region to test.
lpAddress = ((char *) MemoryBasicInfo.BaseAddress) +
MemoryBasicInfo.RegionSize;
} while (lpAddress != 0);
CloseHandle(hFile);
return(TRUE);
}
void Dlg_OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
switch (id) {
case IDCANCEL: EndDialog(hwnd, id); break;
}
}
BOOL CALLBACK DlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
BOOL fProcessed = TRUE;
switch (uMsg) {
HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);
default: fProcessed = FALSE; break;
}
return(fProcessed);
}
int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow) {
DialogBox(hInstance, MAKEINTRESOURCE(DLG_VMMAP), NULL, DlgProc);
return(0);
}