作为Windows服务运行时,Direct3DCreate9Ex返回D3DERR_NOTAVAILABLE(0x8876086a)

时间:2014-06-11 03:00:34

标签: windows direct3d

出于某些原因,我必须在我的程序中创建D3D9,该程序作为服务运行。

但我得到D3DERR_NOTAVAILABLE以下代码:

ATL::CComPtr<IDirect3D9Ex> d3d9 = nullptr;
HRESULT hr = ::Direct3DCreate9Ex(D3D_SDK_VERSION, &d3d9);

如果它没有在服务中运行,它就可以工作。

我通过检查控制面板中的Allow service to interact with desktop看到有人成功完成此操作,但它对我不起作用。

我有什么设定吗?

1 个答案:

答案 0 :(得分:2)

在Windows Vista及更高版本中,Windows服务在隔离的上下文中运行(称为“会话0隔离&#39;”)以减少恶意软件的威胁。在某些情况下,您可以创建一个NULL设备,也可以创建一个WARP设备,但在Windows 8之前,Windows服务中的Direct3D GPU访问不可用。

请参阅KB 978635