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 |
---|---|
|
Êxito. |
|
O identificador especificado não é um identificador de dispositivo Direct3D. |
|
O Gerenciador de Dispositivos DXGI não foi inicializado. O proprietário do dispositivo deve chamar IMFDXGIDeviceManager::ResetDevice. |
|
O identificador do dispositivo é inválido. |
|
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) |