IDirect3DDeviceManager9::GetVideoService 方法 (dxva2api.h)

获取 DirectX 视频加速 (DXVA) 服务接口。

语法

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

参数

[in] hDevice

Direct3D 设备的句柄。 若要获取设备句柄,请调用 IDirect3DDeviceManager9::OpenDeviceHandle

[in] riid

所请求的接口的接口标识符 (IID)。 Direct3D 设备可能支持以下 DXVA 服务接口:

[out] ppService

接收指向所请求接口的指针。 调用方必须释放接口。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
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