Physical address from page frame number

Is there a way to get the physical address described by a page frame
number? I’m in a situation where I need to know the physical addresses of
the pages described by an MDL. I can get the array of page frame numbers
using MmGetMdlPfnArray(), but then there doesn’t seem to be a way to get
the physical address of each of the pages.

TIA
Dan


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Something like pa.Quadpart = ((*pPfn) << PAGE_SHIFT) ought to work. I think
that the PFN is just shifted over 12 bits on x86 systems. This may not work
on PAE systems.

I thought I wrote an article on this for the NtInsider back at my OSR days,
(actually I know I wrote it,) but I think perhaps it never got published or
at least it didn’t make it onto their website. Should have been late '99.

Mark Roddy
Windows 2000/NT Consultant
Hollis Technology Solutions
xxxxx@hollistech.com
603 321 1032
www.hollistech.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of
xxxxx@emulex.com
Sent: Monday, March 12, 2001 11:01 AM
To: NT Developers Interest List
Subject: [ntdev] Physical address from page frame number

Is there a way to get the physical address described by a page frame
number? I’m in a situation where I need to know the physical addresses of
the pages described by an MDL. I can get the array of page frame numbers
using MmGetMdlPfnArray(), but then there doesn’t seem to be a way to get
the physical address of each of the pages.

TIA
Dan


You are currently subscribed to ntdev as: xxxxx@wattanuck.mv.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com