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 |
|
Impossible de verrouiller la surface Direct3D. |
|
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 |