Condividi tramite


Metodo IMFDXGIDeviceManager::LockDevice (mfobjects.h)

Concede al chiamante l'accesso esclusivo al dispositivo Microsoft Direct3D.

Sintassi

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

Parametri

[in] hDevice

Handle per il dispositivo Direct3D. Per ottenere l'handle del dispositivo, chiamare IMFDXGIDeviceManager::OpenDeviceHandle.

[in] riid

Identificatore di interfaccia (IID) dell'interfaccia richiesta. Il dispositivo Direct3D supporterà le interfacce seguenti:

[out] ppUnkDevice

Riceve un puntatore all'interfaccia richiesta. Il chiamante deve rilasciare l'interfaccia.

[in] fBlock

Specifica se attendere il blocco del dispositivo. Se il dispositivo è già bloccato e questo parametro è TRUE, il metodo si blocca fino a quando il dispositivo non viene sbloccato. In caso contrario, se il dispositivo è bloccato e questo parametro è FALSE, il metodo restituisce immediatamente con il codice di errore DXVA2_E_VIDEO_DEVICE_LOCKED.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
E_HANDLE
L'handle specificato non è un handle del dispositivo Direct3D.
MF_E_DXGI_DEVICE_NOT_INITIALIZED
La Gestione dispositivi DXGI non è stata inizializzata. Il proprietario del dispositivo deve chiamare IMFDXGIDeviceManager::ResetDevice.
MF_E_DXGI_NEW_VIDEO_DEVICE
L'handle del dispositivo non è valido.
MF_E_DXGI_VIDEO_DEVICE_LOCKED
Il dispositivo è bloccato e fBlock è FALSE.

Commenti

Al termine dell'uso del dispositivo Direct3D, chiamare IMFDXGIDeviceManager::UnlockDevice per sbloccare il dispositivo.

Se il metodo restituisce MF_E_DXGI_NEW_VIDEO_DEVICE, chiamare IMFDXGIDeviceManager::CloseDeviceHandle per chiudere l'handle e quindi chiamare nuovamente OpenDeviceHandle per ottenere un nuovo handle. Il metodo IMFDXGIDeviceManager::ResetDevice invalida tutti gli handle di dispositivo aperti.

Se fBlock è TRUE, questo metodo può potenzialmente causare deadlock. Ad esempio, si verifica un deadlock se un thread chiama LockDevice e quindi attende su un altro thread che chiama LockDevice. Inoltre, se un thread chiama LockDevice due volte senza chiamare UnlockDevice tra.

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mfobjects.h (include Mfidl.h)

Vedi anche

IMFDXGIDeviceManager