Partager via


Méthode IMF2DBuffer ::Lock2D (mfobjects.h)

Donne à l’appelant l’accès à la mémoire dans la mémoire tampon.

Syntaxe

HRESULT Lock2D(
  [out] BYTE **ppbScanline0,
  [out] LONG *plPitch
);

Paramètres

[out] ppbScanline0

Reçoit un pointeur vers le premier octet de la ligne supérieure de pixels dans l’image. La ligne supérieure est définie comme la ligne supérieure lorsque l’image est présentée à la visionneuse et peut ne pas être la première ligne en mémoire.

[out] plPitch

Reçoit la foulée de surface, en octets. La foulée peut être négative, indiquant que l’image est orientée du bas vers le haut en mémoire.

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour Description
S_OK
S_OK
D3DERR_INVALIDCALL
Impossible de verrouiller la surface Direct3D.
MF_E_INVALIDREQUEST
La mémoire tampon ne peut pas être verrouillée pour le moment.

Remarques

Si p est un pointeur vers le premier octet d’une ligne de pixels, p + (*plPitch) pointe vers le premier octet de la ligne de pixels suivante. Une mémoire tampon peut contenir un remplissage après chaque ligne de pixels, de sorte que la foulée peut être plus large que la largeur de l’image en octets. N’accédez pas à la mémoire réservée pour le remplissage d’octets, car elle n’est peut-être pas accessible en lecture ou accessible en écriture. Pour plus d’informations, consultez Image Stride.

Le pointeur retourné dans pbScanline0 reste valide tant que l’appelant détient le verrou. Lorsque vous avez terminé d’accéder à la mémoire, appelez IMF2DBuffer ::Unlock2D pour déverrouiller la mémoire tampon. Vous devez appeler Unlock2D une fois pour chaque appel à Lock2D. Une fois que vous avez déverrouillé la mémoire tampon, le pointeur retourné dans pbScanline0 n’est plus valide et ne doit pas être utilisé. En règle générale, il est préférable d’appeler Lock2D uniquement lorsque vous avez besoin d’accéder à la mémoire tampon, et pas avant.

Les valeurs retournées par les méthodes IMFMediaBuffer ::GetCurrentLength et IMFMediaBuffer ::GetMaxLength ne s’appliquent pas à la mémoire tampon retournée par la méthode Lock2D . Pour la même raison, vous n’avez pas besoin d’appeler IMFMediaBuffer ::SetCurrentLength après avoir manipulé les données dans la mémoire tampon retournées par la méthode Lock2D .

La méthode IMFMediaBuffer ::Lock échoue pendant que le verrou Lock2D est conservé, et inversement. Les applications ne doivent utiliser qu’une seule de ces méthodes à la fois.

Lorsque la mémoire tampon sous-jacente est une surface Direct3D, la méthode échoue si la surface n’est pas verrouillable.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête mfobjects.h (inclure Mfidl.h)
Bibliothèque Mfuuid.lib

Voir aussi

IMF2DBuffer

Mémoires tampons multimédias

Mémoires tampons vidéo non compressées