Метод 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.
Возвращаемое значение
Этот метод может возвращать одно из этих значений.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Указанный дескриптор не является дескриптором устройства 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 дважды, не вызывая UnlockDevice между ними.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | mfobjects.h (включая Mfidl.h) |