IDirect3DDeviceManager9::GetVideoService 메서드(dxva2api.h)

DXVA(DirectX Video Acceleration) 서비스 인터페이스를 가져옵니다.

구문

HRESULT GetVideoService(
  [in]  HANDLE hDevice,
  [in]  REFIID riid,
  [out] void   **ppService
);

매개 변수

[in] hDevice

Direct3D 디바이스에 대한 핸들입니다. 디바이스 핸들을 얻으려면 IDirect3DDeviceManager9::OpenDeviceHandle을 호출합니다.

[in] riid

요청된 인터페이스의 IID(인터페이스 식별자)입니다. Direct3D 디바이스는 다음 DXVA 서비스 인터페이스를 지원할 수 있습니다.

[out] ppService

요청된 인터페이스에 대한 포인터를 받습니다. 호출자는 인터페이스를 해제해야 합니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
S_OK
메서드가 성공했습니다.
DXVA2_E_NEW_VIDEO_DEVICE
디바이스 핸들이 잘못되었습니다.
DXVA2_E_NOT_AVAILABLE
Direct3D 디바이스는 비디오 가속을 지원하지 않습니다.
DXVA2_E_NOT_INITIALIZED
Direct3D 디바이스 관리자가 초기화되지 않았습니다. 디바이스 소유자는 IDirect3DDeviceManager9::ResetDevice를 호출해야 합니다.
E_HANDLE
지정된 핸들이 Direct3D 디바이스 핸들이 아닙니다.

설명

메서드가 DXVA2_E_NEW_VIDEO_DEVICE 반환하는 경우 IDirect3DDeviceManager9::CloseDeviceHandle 을 호출하여 핸들을 닫은 다음 OpenDeviceHandle 을 다시 호출하여 새 핸들을 가져옵니다. IDirect3DDeviceManager9::ResetDevice 메서드는 열려 있는 모든 디바이스 핸들을 무효화합니다.

예제

HRESULT GetVideoProcessorService(
    IDirect3DDeviceManager9 *pDeviceManager,
    IDirectXVideoProcessorService **ppVPService
    )
{
    *ppVPService = NULL;

    HANDLE hDevice;

    HRESULT hr = pDeviceManager->OpenDeviceHandle(&hDevice);
    if (SUCCEEDED(hr))
    {
        // Get the video processor service 
        HRESULT hr2 = pDeviceManager->GetVideoService(
            hDevice, 
            IID_PPV_ARGS(ppVPService)
            );

        // Close the device handle.
        hr = pDeviceManager->CloseDeviceHandle(hDevice);

        if (FAILED(hr2))
        {
            hr = hr2;
        }
    }

    if (FAILED(hr))
    {
        SafeRelease(ppVPService);
    }

    return hr;
}

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 dxva2api.h

추가 정보

DXVA 비디오 처리

Direct3D 디바이스 관리자

DirectX 비디오 가속 2.0

IDirect3DDeviceManager9