your code is a bit weird. there's no GetFrontBuffer function in the Device class. ur not being quite clear to me, so i'll give out the 3 options that i understood.
1) if you want to copy the screen of what was last rendered right? if that's so, all you need to do is:
Surface FrontBufferCopy = Device.CreateOffscreenPlainSurface(WIDTH, HEIGHT, FORMAT, POOL);
Device.GetFrontBufferData(0, FrontBufferCopy);
// according to the documentation, now FrontBufferCopy has a copy of the Front Buffer
2) if you want to copy the contents of a surface to another one, you may use the Device.UpdateSurface(source as Surface, dest as Surface) method.
3) if you want to actually render to a surface, then follow on below :)
to create a plain renderable surface:
// to create the surface
Surface RenderSurface = Device.CreateRenderTarget(WIDTH, HEIGHT, FORMAT, MultiSampleType.None, 0, true);
to render to that surface:
Device.SetRenderTarget(0, RenderSurface);
// whatever you render between the BeginScene() and EndScene() calls WILL end up on RenderSurface
to go back to the original backbuffer while keeping what was rendered on the old buffer:
Surface BackBuffer = Device.GetBackBuffer();
Device.SetRenderTarget(0, BackBuffer);
// whatever you render after this will end up on the backbuffer
i hope ONE of these 3 will help ya out