У меня проблема из-за сбоя в Direct3D9 :: CreateDevice ().Он завершается ошибкой, когда следующий код выполняется с заблокированным экраном в Windows 7. Из-за требований мне нужно иметь возможность создавать устройство, пока экран заблокирован.
Я получаю ошибку D3DERR_INVALIDCALL при вызове CreateDeviceсо следующими параметрами.Я много экспериментировал с используемым HWND и дважды проверил, что он действителен.Я также пробовал различные настройки параметров презентации, но безрезультатно.Кто-нибудь сталкивался с этим раньше или имеет лучшее представление о том, что может быть причиной неправильного возврата вызова?
Опять же, эта ошибка возникает только при заблокированном экране, при запуске в любом другом тестируемом состоянии, это успешно.
D3DPRESENT_PARAMETERS pp;
ZeroMemory( &pp, sizeof(D3DPRESENT_PARAMETERS) );
pp.BackBufferFormat = D3DFMT_UNKNOWN;
pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
pp.Windowed = TRUE;
HWND focusWndHnd = GetConsoleWindow();
if ( focusWndHnd == NULL && pp.hDeviceWindow == NULL )
{
focusWndHnd = ::GetDesktopWindow();
}
IDirect3DDevice9* pd3dDevice;
IDirect3D9* pD3D = Direct3DCreate9( D3D_SDK_VERSION );
hr = pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, focusWndHnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_FPU_PRESERVE, &pp, &pd3dDevice );