Método IMFDXGIDeviceManager::LockDevice (mfobjects.h)

Proporciona al autor de la llamada acceso exclusivo al dispositivo Microsoft Direct3D.

Sintaxis

HRESULT LockDevice(
  [in]  HANDLE hDevice,
  [in]  REFIID riid,
  [out] void   **ppUnkDevice,
  [in]  BOOL   fBlock
);

Parámetros

[in] hDevice

Identificador del dispositivo Direct3D. Para obtener el identificador del dispositivo, llame a IMFDXGIDeviceManager::OpenDeviceHandle.

[in] riid

Identificador de interfaz (IID) de la interfaz solicitada. El dispositivo Direct3D admitirá las siguientes interfaces:

[out] ppUnkDevice

Recibe un puntero a la interfaz solicitada. El autor de la llamada debe liberar la interfaz .

[in] fBlock

Especifica si se debe esperar el bloqueo del dispositivo. Si el dispositivo ya está bloqueado y este parámetro es TRUE, el método se bloquea hasta que se desbloquea el dispositivo. De lo contrario, si el dispositivo está bloqueado y este parámetro es FALSE, el método devuelve inmediatamente con el código de error DXVA2_E_VIDEO_DEVICE_LOCKED.

Valor devuelto

Este método puede devolver uno de estos valores.

Código devuelto Descripción
S_OK
Correcto.
E_HANDLE
El identificador especificado no es un identificador de dispositivo Direct3D.
MF_E_DXGI_DEVICE_NOT_INITIALIZED
El Administrador de dispositivos DXGI no se inicializó. El propietario del dispositivo debe llamar a IMFDXGIDeviceManager::ResetDevice.
MF_E_DXGI_NEW_VIDEO_DEVICE
El identificador del dispositivo no es válido.
MF_E_DXGI_VIDEO_DEVICE_LOCKED
El dispositivo está bloqueado y fBlock es FALSE.

Comentarios

Cuando haya terminado de usar el dispositivo Direct3D, llame a IMFDXGIDeviceManager::UnlockDevice para desbloquear el dispositivo.

Si el método devuelve MF_E_DXGI_NEW_VIDEO_DEVICE, llame a IMFDXGIDeviceManager::CloseDeviceHandle para cerrar el identificador y, a continuación, llame a OpenDeviceHandle de nuevo para obtener un nuevo identificador. El método IMFDXGIDeviceManager::ResetDevice invalida todos los identificadores de dispositivo abiertos.

Si fBlock es TRUE, este método puede interbloquear potencialmente. Por ejemplo, se interbloqueará si un subproceso llama a LockDevice y, a continuación, espera en otro subproceso que llama a LockDevice. También se interbloqueará si un subproceso llama a LockDevice dos veces sin llamar a UnlockDevice entre sí.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mfobjects.h (include Mfidl.h)

Consulte también

IMFDXGIDeviceManager