Partager via


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

Donne à l’appelant un accès exclusif à l’appareil Microsoft Direct3D.

Syntaxe

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

Paramètres

[in] hDevice

Handle de l’appareil Direct3D. Pour obtenir le handle d’appareil, appelez IMFDXGIDeviceManager ::OpenDeviceHandle.

[in] riid

Identificateur d'interface (IID) de l'interface demandée. L’appareil Direct3D prend en charge les interfaces suivantes :

[out] ppUnkDevice

Reçoit un pointeur vers l’interface demandée. L’appelant doit libérer l’interface.

[in] fBlock

Spécifie s’il faut attendre le verrouillage de l’appareil. Si l’appareil est déjà verrouillé et que ce paramètre a la valeur TRUE, la méthode se bloque jusqu’à ce que l’appareil soit déverrouillé. Sinon, si l’appareil est verrouillé et que ce paramètre a la valeur FALSE, la méthode retourne immédiatement avec le code d’erreur DXVA2_E_VIDEO_DEVICE_LOCKED.

Valeur retournée

Cette méthode peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
Réussite.
E_HANDLE
Le handle spécifié n’est pas un handle d’appareil Direct3D.
MF_E_DXGI_DEVICE_NOT_INITIALIZED
Le Gestionnaire de périphériques DXGI n’a pas été initialisé. Le propriétaire de l’appareil doit appeler IMFDXGIDeviceManager ::ResetDevice.
MF_E_DXGI_NEW_VIDEO_DEVICE
Le handle d’appareil n’est pas valide.
MF_E_DXGI_VIDEO_DEVICE_LOCKED
L’appareil est verrouillé et fBlock a la valeur FALSE.

Remarques

Lorsque vous avez terminé d’utiliser l’appareil Direct3D, appelez IMFDXGIDeviceManager ::UnlockDevice pour déverrouiller l’appareil.

Si la méthode retourne MF_E_DXGI_NEW_VIDEO_DEVICE, appelez IMFDXGIDeviceManager ::CloseDeviceHandle pour fermer le handle, puis appelez à nouveau OpenDeviceHandle pour obtenir un nouveau handle. La méthode IMFDXGIDeviceManager ::ResetDevice invalide tous les handles d’appareil ouverts.

Si fBlock a la valeur TRUE, cette méthode peut potentiellement se bloquer. Par exemple, il se bloque si un thread appelle LockDevice , puis attend sur un autre thread qui appelle LockDevice. Il se bloque également si un thread appelle LockDevice deux fois sans appeler UnlockDevice entre les deux.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête mfobjects.h (inclure Mfidl.h)

Voir aussi

IMFDXGIDeviceManager