sloh
Thu Oct 30 15:35:48 CST 2003
You can also try doing "mi full" in the target command window.
CE doesn't have VirtualQueryEx but you don't need it. You can use
VirtualQuery for everything. CE's VM ranges are pretty static. Each
process gets a 32MB "slot" of memory, so the lowest GB+ of RAM is divided
into 33 "slots", 2 special ones and 31 for processes:
0x00000000-0x01FFFFFF is slot 0 (always mapped to current running process)
0x02000000-0x03FFFFFF is slot 1 (ROM DLL code)
0x04000000-0x05FFFFFF is slot 2 (first process -- always filesys.exe)
.. plus 30 more slots for the other processes. The kernel (nk.exe) is the
32nd process and doesn't use these slots.
Beyond that you get the object store and shared VM, used for large
VirtualAllocs and memory-mapped files, up to 0x7FFFFFFF. If one of your
processes is leaking shared memory then there's no easy way to find out
what process is doing it. There is an article on the web about CE's
virtual memory layout that I often see our eMVP's post on the newsgroups.
I don't currently have a link to it but I think you should be able to find
it by searching. Often a VM "leak" is really an overlap between VM
used/needed by DLLs, and other memory within a process. If you think you
are having VM problems then you should try to read that article.
Sue
sloh@microsoft.com (remove "online" from reply-to address)
_____________________________________________________________
This posting is provided "AS IS" with no warranties, and confers no rights.
_____________________________________________________________
Windows Embedded FAQ
(
http://www.microsoft.com/windows/embedded/faq/default.asp)