Copy IDirect3DSurface9 to HBITMAP

Im working on a application where i have to render from a IDirect3DSurface9 to a bitmap in memory. I only have access to the HDC and HBITMAP of this bitmap. My question is, how can i get hold of the memory location of this bitmap? I tried using BitBlt but it turned things into a slideshow(less than 0.5 fps). Im guessing i need to lock the surface and copy the bits directly using memcpy but until i find the location of this surface im stuck....any ideas?