Compartilhar via


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

Fornece ao chamador acesso exclusivo ao dispositivo Microsoft Direct3D.

Sintaxe

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

Parâmetros

[in] hDevice

Um identificador para o dispositivo Direct3D. Para obter o identificador do dispositivo, chame IMFDXGIDeviceManager::OpenDeviceHandle.

[in] riid

O IID (identificador de interface) da interface solicitada. O dispositivo Direct3D dará suporte às seguintes interfaces:

[out] ppUnkDevice

Recebe um ponteiro para a interface solicitada. O chamador deve liberar a interface .

[in] fBlock

Especifica se o bloqueio do dispositivo deve ser aguardado. Se o dispositivo já estiver bloqueado e esse parâmetro for TRUE, o método será bloqueado até que o dispositivo seja desbloqueado. Caso contrário, se o dispositivo estiver bloqueado e esse parâmetro for FALSE, o método retornará imediatamente com o código de erro DXVA2_E_VIDEO_DEVICE_LOCKED.

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK
Êxito.
E_HANDLE
O identificador especificado não é um identificador de dispositivo Direct3D.
MF_E_DXGI_DEVICE_NOT_INITIALIZED
O Gerenciador de Dispositivos DXGI não foi inicializado. O proprietário do dispositivo deve chamar IMFDXGIDeviceManager::ResetDevice.
MF_E_DXGI_NEW_VIDEO_DEVICE
O identificador do dispositivo é inválido.
MF_E_DXGI_VIDEO_DEVICE_LOCKED
O dispositivo está bloqueado e fBlock é FALSE.

Comentários

Quando terminar de usar o dispositivo Direct3D, chame IMFDXGIDeviceManager::UnlockDevice para desbloquear o dispositivo.

Se o método retornar MF_E_DXGI_NEW_VIDEO_DEVICE, chame IMFDXGIDeviceManager::CloseDeviceHandle para fechar o identificador e, em seguida, chame OpenDeviceHandle novamente para obter um novo identificador. O método IMFDXGIDeviceManager::ResetDevice invalida todos os identificadores de dispositivo abertos.

Se fBlock for TRUE, esse método poderá potencialmente ficar em deadlock. Por exemplo, ele fará deadlock se um thread chamar LockDevice e aguardar em outro thread que chame LockDevice. Ele também será deadlock se um thread chamar LockDevice duas vezes sem chamar UnlockDevice entre eles.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfobjects.h (include Mfidl.h)

Confira também

IMFDXGIDeviceManager