VirtualAddr->PhysicalAddr->VirtualAddr

Hello,

In my Win2K Driver A, I do the following:

VirAddr = MmAllocateContiguousMemory(…);
PhysAddr = MmGetPhysicalAddress(VirAddr);

Driver A conveys PhysAddr to my Driver B (this is a design constraint: it
MUST convey the PhysicalAddress, cannot convey VirtualAddress).

For my Driver B to be able to use this address/buffer, it needs the
corresponding virtual address. My question is:

Must I do MmMapIoSpace() in Driver B (to get the VirAddr of this buffer) ?
[since this physical address range is already mapped into nonpaged system
space, isn’t calling MmMapIoSpace() redundant ??].

OR

Is there another way to get the Virtual Address from Physical Address ?

Appreciate any help.

Thanks
Puja