Hi, For a miniport driver i will be allocating a buffer and create corresponding MDL by using function *AllocatePagesForMdl*. This method always allocates an integral number of pages from nonpaged pool. Does this mean that if i call *MmGetMdlByteOffset* with this MDL as i/p , the byte offset returned by *MmGetMdlByteOffset* will always be zero? Is there any possibility of getting non zero offset indicating that even though buffer is of say n pages the valid data starts at some non zero offset of first page? Also when i allocate buffer using * AllocatePagesForMdl* is it guaranteed that all rest of the pages are fully allocated for my buffer or do i need to traverse *PMDL**Next *element until mdl ends and find byte offset within each page using *MmGetMdlByteOffset* ? Regards, Surabhi