Como capturar a tela no DirectX 9 para um bitmap bruto na memória sem usar D3DXSaveSurfaceToFile

Eu sei que no OpenGL eu posso fazer algo assim glReadBuffer( GL_FRONT ); glReadPixels( 0, 0, _width, _height, GL_RGB, GL_UNSIGNED_BYTE, _buffer ); E é bem rápido, eu recebo o bitmap bruto no _buffer. Quando tento fazer isso no DirectX. Supondo que eu tenha um objeto D3DDevice, posso fazer algo...