You should redefine your IOCTL so that the IOCTL describes the array
itself (rather than a pointer to the array,) and let the OS build an MDL
for your array.
MDLs are the only valid way to convert pageable virtual addresses to
physical addresses. MmGetPhysicalAddress ought to be banned from the ddk.