IMFDXGIDeviceManager::LockDevice メソッド (mfobjects.h)
呼び出し元に Microsoft Direct3D デバイスへの排他的アクセス権を付与します。
構文
HRESULT LockDevice(
[in] HANDLE hDevice,
[in] REFIID riid,
[out] void **ppUnkDevice,
[in] BOOL fBlock
);
パラメーター
[in] hDevice
Direct3D デバイスへのハンドル。 デバイス ハンドルを取得するには、 IMFDXGIDeviceManager::OpenDeviceHandle を呼び出します。
[in] riid
要求したインターフェイスのインターフェイス ID (IID: Interface Identifier)。 Direct3D デバイスでは、次のインターフェイスがサポートされます。
[out] ppUnkDevice
要求されたインターフェイスへのポインターを受け取ります。 呼び出し元はインターフェイスを解放する必要があります。
[in] fBlock
デバイス ロックを待機するかどうかを指定します。 デバイスが既にロックされていて、このパラメーターが TRUE の場合、メソッドはデバイスのロックが解除されるまでブロックします。 それ以外の場合、デバイスがロックされていて、このパラメーターが FALSE の場合、メソッドはエラー コード DXVA2_E_VIDEO_DEVICE_LOCKEDと共に直ちにを返します。
戻り値
このメソッドは、これらの値のいずれかを返すことができます。
リターン コード | 説明 |
---|---|
|
正常終了しました。 |
|
指定したハンドルは Direct3D デバイス ハンドルではありません。 |
|
DXGI デバイス マネージャーが初期化されませんでした。 デバイスの所有者は、 IMFDXGIDeviceManager::ResetDevice を呼び出す必要があります。 |
|
デバイス ハンドルが無効です。 |
|
デバイスがロックされ、 fBlock が FALSE です。 |
注釈
Direct3D デバイスの使用が完了したら、 IMFDXGIDeviceManager::UnlockDevice を呼び出してデバイスのロックを解除します。
メソッドが MF_E_DXGI_NEW_VIDEO_DEVICEを返す場合は、 IMFDXGIDeviceManager::CloseDeviceHandle を呼び出してハンドルを閉じ、もう一度 OpenDeviceHandle を呼び出して新しいハンドルを取得します。 IMFDXGIDeviceManager::ResetDevice メソッドは、開いているすべてのデバイス ハンドルを無効にします。
fBlock が TRUE の場合、このメソッドはデッドロックの可能性があります。 たとえば、スレッドが LockDevice を呼び出し、LockDevice を呼び出す別のスレッドで待機すると、デッドロック が発生します。 また、スレッドが LockDevice を 2 回呼び出しても、その間に UnlockDevice を呼び出さずにデッドロックします。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | mfobjects.h (Mfidl.h を含む) |