why MmAllocatePagesForMdl not return?

Hello,all
PMDL pMdl;
do
{
pMdl = MmAllocatePagesForMdl(0,0xffffffff,0x1000,0x10000);
}while(pMdl);
The target OS is xpsp2,2G physicalmemory, Sometimes,when allocate about 1.7G physicalmemory,MmAllocatePagesForMdl not return,why?
sorry my english and thanks all.