I'm having some troubles when alt-tabbing out then back into my game. The Direct3DDevice->Reset() method fails, returning an "invalid parameter" error message. I have no idea what this could be. The device creation goes fine with the parameters, but when I use the same for the reset it fails (I've double chekced, they aren't modified somewhere else along the way). All buffers I use are managed.

Any idea?

These are the parameters I set up Direct3D with:
Code:
DeviceInfo.BackBufferWidth = Width;
DeviceInfo.BackBufferHeight = Height;
DeviceInfo.BackBufferFormat = D3DFMT_A8R8G8B8;
DeviceInfo.BackBufferCount = 1;
DeviceInfo.MultiSampleType = D3DMULTISAMPLE_NONE;
DeviceInfo.MultiSampleQuality = 0;
DeviceInfo.SwapEffect = D3DSWAPEFFECT_DISCARD;
DeviceInfo.hDeviceWindow = Window;
DeviceInfo.Windowed = FALSE;
DeviceInfo.EnableAutoDepthStencil = TRUE;
DeviceInfo.AutoDepthStencilFormat = D3DFMT_D16;
DeviceInfo.Flags = 0;
DeviceInfo.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
DeviceInfo.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
This is the function I call before every rendering session:
Code:
BOOL GRAPHICS::BeginRender()
{
	HRESULT Result;

	//Clears the debug information
	BlocksRendered = 0;
	SidesRendered = 0;

	//Checks if the program lost focus
	Result = Direct3DDevice->TestCooperativeLevel();
	if(Result != D3D_OK)
	{
		//If you cannot simply reset, wait until you can
		if(Result == D3DERR_DEVICELOST)
		{
			return FALSE;
		}

		//Resets the device
		if(FAILED(Direct3DDevice->Reset(&DeviceInfo)))
		{
			return FALSE;
		}

		//Re-sets the render states
		SetupRenderStates();
	}

	//Clears the back buffer and Z-buffer
	if(FAILED(Direct3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
									BackgroundColor, 1.0, 0)))
	{
		return FALSE;
	}

	//Begins rendering
	if(FAILED(Direct3DDevice->BeginScene()))
	{
		return FALSE;
	}

	return TRUE;
}