2014-06-11 8 views
1

어떤 이유로 서비스로 실행되는 프로그램에서 D3D9를 만들어야합니다. Direct3DCreate9Ex는 Windows 서비스로 실행될 때 D3DERR_NOTAVAILABLE (0x8876086a)을 반환합니다.

는 그러나 나는 다음과 같은 코드를 D3DERR_NOTAVAILABLE 가지고 :

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

을 그리고 그것은 서비스에서 실행 있지 않다면 그것은 작동합니다.

제어판에서 Allow service to interact with desktop을 확인하여 성공한 사람을 보았지만 제대로 작동하지 않습니다.

언급해야 할 설정이 있습니까?

+0

그것은 나에게 특히 놀라운 일이되지 않을 것를 참조 어떤 경우에는, 당신은 Windows 서비스에서 NULL 장치와 아마도 WARP 장치,하지만 다이렉트 3D GPU 액세스를 만들 수 있습니다 사용할 수 없습니다이 경우 불가능하다. D3D9를 사용하여 무엇을하려고합니까? (서비스의 어떤 것도 표시 할 수 없기 때문에 아무 것도 보이지 않습니다.) –

+0

디코딩 된 프레임에 대한 비디오 분석을하고 싶습니다. 화면에 정보를 표시 할 필요가 없습니다. – xeonchen

답변

2

Windows Vista 이상에서는 Windows 서비스가 맬웨어 위협을 줄이기 위해 격리 된 컨텍스트 ('세션 0 격리'라고 함)로 실행됩니다. 윈도우 8

까지 KB 978635