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