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
요청된 인터페이스의 IID(인터페이스 식별자)입니다. Direct3D 디바이스는 다음 인터페이스를 지원합니다.
[out] ppUnkDevice
요청된 인터페이스에 대한 포인터를 받습니다. 호출자는 인터페이스를 해제해야 합니다.
[in] fBlock
디바이스 잠금을 기다릴지 여부를 지정합니다. 디바이스가 이미 잠겨 있고 이 매개 변수가 TRUE이면 디바이스가 잠금 해제될 때까지 메서드가 차단됩니다. 그렇지 않으면 디바이스가 잠겨 있고 이 매개 변수가 FALSE이면 메서드는 오류 코드 DXVA2_E_VIDEO_DEVICE_LOCKED 즉시 반환합니다.
반환 값
이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
성공. |
|
지정된 핸들이 Direct3D 디바이스 핸들이 아닙니다. |
|
DXGI 장치 관리자 초기화되지 않았습니다. 디바이스 소유자는 IMFDXGIDeviceManager::ResetDevice를 호출해야 합니다. |
|
디바이스 핸들이 잘못되었습니다. |
|
디바이스가 잠겨 있고 fBlock 이 FALSE입니다. |
설명
Direct3D 디바이스 사용을 마쳤으면 IMFDXGIDeviceManager::UnlockDevice 를 호출하여 디바이스의 잠금을 해제합니다.
메서드가 MF_E_DXGI_NEW_VIDEO_DEVICE 반환하는 경우 IMFDXGIDeviceManager::CloseDeviceHandle 을 호출하여 핸들을 닫은 다음 OpenDeviceHandle 을 다시 호출하여 새 핸들을 가져옵니다. IMFDXGIDeviceManager::ResetDevice 메서드는 열려 있는 모든 디바이스 핸들을 무효화합니다.
fBlock이 TRUE이면 이 메서드가 교착 상태에 빠질 수 있습니다. 예를 들어 스레드가 LockDevice 를 호출한 다음 LockDevice를 호출하는 다른 스레드에서 대기하는 경우 교착 상태가 됩니다. 스레드가 그 사이에 UnlockDevice를 호출하지 않고 LockDevice를 두 번 호출하는 경우에도 교착 상태가 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2012 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | mfobjects.h(Mfidl.h 포함) |