Issuing int 15 e820 calls from Windows kernel mode

I need to query the system address map from windows kernel mode. I have a demand load driver into which I am looking to plug this functionality and then make it available through ioctl calls to my app.

I need to support both x86 and x86-64.

Does Windows replace int 15 with its own interrupt vector?. Even if it does not, does BIOS still exist when Windows is running?. (my suspicion is no…)

If I cannot issue this in a kernel mode code, what are the other ways I can query the system memory map as exported by e820 int 15.

I see that there are some resources that are published in the registry that look close to the values published by e820 memory map but I am having a hard time parsing them.

Any help would be appreciated,
Thanks,
RK

First what data do you really need and why? Sorry most of us do want to try
to remember what the BIOS does for so flavor. As far as the why many
people who ask for memory layout data, have a bigger problem that is going
to bite them so lest us know now.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply

wrote in message news:xxxxx@ntdev…
>I need to query the system address map from windows kernel mode. I have a
>demand load driver into which I am looking to plug this functionality and
>then make it available through ioctl calls to my app.
>
> I need to support both x86 and x86-64.
>
> Does Windows replace int 15 with its own interrupt vector?. Even if it
> does not, does BIOS still exist when Windows is running?. (my suspicion is
> no…)
>
> If I cannot issue this in a kernel mode code, what are the other ways I
> can query the system memory map as exported by e820 int 15.
>
> I see that there are some resources that are published in the registry
> that look close to the values published by e820 memory map but I am having
> a hard time parsing them.
>
> Any help would be appreciated,
> Thanks,
> RK
>

This is a very un-Windows thing to do. It doesn’t replace the handler,
make use of it, and definitely doesn’t expect you to call it. You’re on
the right track in the registry, and you might want to take a look at
the HKLM\HARDWARE\RESOURCEMAP\System Resources key and its subkeys to
see if the information that you need is there. This is as close you’re
going to get to that information, to the best of my knowledge, as there
isn’t even a documented API to get the size of physical memory from the
Windows perspective. Otherwise, this is a pretty hideous problem,
especially on x86_64.

Good luck,

mm

xxxxx@hotmail.com wrote:

I need to query the system address map from windows kernel mode. I have a demand load driver into which I am looking to plug this functionality and then make it available through ioctl calls to my app.

I need to support both x86 and x86-64.

Does Windows replace int 15 with its own interrupt vector?. Even if it does not, does BIOS still exist when Windows is running?. (my suspicion is no…)

If I cannot issue this in a kernel mode code, what are the other ways I can query the system memory map as exported by e820 int 15.

I see that there are some resources that are published in the registry that look close to the values published by e820 memory map but I am having a hard time parsing them.

Any help would be appreciated,
Thanks,
RK