You are specifying the HAL yet you then say you want software T&L. This is a big mistake and will seriously impact your performance.
Incidentally in regards to GetFrontBufferData()
There are other ways to get to the front buffer pixel data if you don't require the data to appear exactly as you see it on screen.Quote:
This method is the only way to capture an antialiased screen shot.

