Max size of region mapped by MmMapIoSpace?

Hello,

I’m working on some kernel-mode customer code that manages a multi-function
PCI card. The code calls HalTranslateBusAddress to get the base physical
address, then calls MmMapIoSpace to map to a linear region. The problem is
that the size of the region, 1024*1024*128 (0x8000000) is hard-coded in the
software and I get NULL back from MmMapIoSpace. The documentation for
MmMapIoSpace says that it will return NULL if the region is larger than may
be mapped. How can I find out what MmMapIoSpace thinks is the maximum it
can handle? I’m currently loading this driver at “system” startup time to
maximize the chance of finding a large enough region. I have tried loading
at “boot” time as well, but the driver appears to load before SoftIce. At
this point I can’t trace what is happening, but it does not appear to load
correctly then, either.

Thanks for any help!

Evan Hillman