gpt4 book ai didi

windows - 屏幕锁定期间 D3D 设备故障

转载 作者:可可西里 更新时间:2023-11-01 12:35:47 29 4
gpt4 key购买 nike

我有一个由 Direct3D9::CreateDevice() 失败引起的问题。在Windows 7锁屏状态下执行以下代码会失败。由于需求,我需要能够在锁屏状态下创建一个设备。

当使用以下参数调用 CreateDevice 时,出现 D3DERR_INVALIDCALL 错误。我对正在使用的 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 );

最佳答案

旧版 Direct3D 9 界面将“安全桌面”视为丢失设备的情况。使用支持 WDDM 的 Direct3D 版本(Direct3D9Ex、Direct3D 10.x 或 Direct3D 11.x)将避免此问题。

关于windows - 屏幕锁定期间 D3D 设备故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859560/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com