Does StorPortGetSystemAddress really works on Win7 x64?

I’m developing a Storport driver and need get the virtual address of Srb::DataBuffer. I used StorPortGetSystemAddress to get the virtual address. It works well under VISTA.

But I got into trouble on a muli-core CPU platform which installed Win7 x64. I write the correct data into the virtual address of Srb::DataBuffer, but the data returned to application is wrong. (BTW: I used dbgview to print the data after I copied it into the virtual address, and use diskedit to show the data got by application)
The wrong data used to be 4KByte aligned. eg, if the Srb::TransferLength is 128KB, the wrong data may be from 0~4KB and 16~20KB, other data is correct.

BTW, I tried Scsiport driver, it works well.

Anyone can give me some help to solve the issue? BTW: I have to use virtual address to copy data into Srb::DataBuffer because hardware limited. I have to use Storport framework.

Thanks