IDirect3DDeviceManager9::GetVideoService メソッド (dxva2api.h)
DirectX ビデオ アクセラレーション (DXVA) サービス インターフェイスを取得します。
構文
HRESULT GetVideoService(
[in] HANDLE hDevice,
[in] REFIID riid,
[out] void **ppService
);
パラメーター
[in] hDevice
Direct3D デバイスへのハンドル。 デバイス ハンドルを取得するには、 IDirect3DDeviceManager9::OpenDeviceHandle を呼び出します。
[in] riid
要求したインターフェイスのインターフェイス ID (IID: Interface Identifier)。 Direct3D デバイスは、次の DXVA サービス インターフェイスをサポートする場合があります。
[out] ppService
要求されたインターフェイスへのポインターを受け取ります。 呼び出し元はインターフェイスを解放する必要があります。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
デバイス ハンドルが無効です。 |
|
Direct3D デバイスでは、ビデオ アクセラレーションはサポートされていません。 |
|
Direct3D デバイス マネージャーが初期化されませんでした。 デバイスの所有者は 、IDirect3DDeviceManager9::ResetDevice を呼び出す必要があります。 |
|
指定したハンドルは 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 |