IDirectDrawSurface7 ::Lock, méthode (ddraw.h)
Obtient un pointeur vers la mémoire de surface.
HRESULT Lock(
[in] LPRECT unnamedParam1,
[in, out] LPDDSURFACEDESC2 unnamedParam2,
[in] DWORD unnamedParam3,
[in] HANDLE unnamedParam4
);
[in] unnamedParam1
Pointeur vers une structure RECT qui identifie la région de la surface verrouillée. Si ce paramètre a la valeur NULL, la surface entière est verrouillée.
[in, out] unnamedParam2
Pointeur vers une structure DDSURFACEDESC2 qui décrit des détails pertinents sur la surface et qui reçoit des informations sur la surface.
[in] unnamedParam3
Combinaison d’indicateurs qui déterminent comment verrouiller la surface. Les indicateurs suivants sont définis :
Sur les interfaces IDirectDrawSurface7 , la valeur par défaut est DDLOCK_WAIT. Si vous souhaitez remplacer la valeur par défaut et utiliser le temps pendant lequel l’accélérateur est occupé (comme indiqué par la valeur de retour DDERR_WASSTILLDRAWING), utilisez DDLOCK_DONOTWAIT.
Actuellement non implémenté.
Nouveauté de DirectX 7.0. Utilisé uniquement avec les verrous de tampon de vertex Direct3D. Indique qu’aucun sommet référencé dans une opération de dessin depuis le début du cadre (ou le dernier verrou sans cet indicateur) n’est modifié pendant le verrouillage. Cela peut être utile lorsque vous souhaitez uniquement ajouter des données à la mémoire tampon de vertex.
Ne prenez pas win16Mutex (également appelé Win16Lock). Cet indicateur est ignoré lors du verrouillage de la surface primaire.
Nouveauté de DirectX 7.0. Utilisé uniquement avec les verrous de tampon de vertex Direct3D. Indique qu’aucune hypothèse n’est faite concernant le contenu de la mémoire tampon de vertex pendant ce verrouillage. Cela permet à Direct3D ou au pilote de fournir une autre zone mémoire comme tampon de vertex. Cela est utile lorsque vous envisagez d’effacer le contenu de la mémoire tampon de vertex et de renseigner de nouvelles données.
Cet indicateur est obsolète et a été remplacé par l’indicateur DDLOCK_DISCARDCONTENTS.
Indique que la surface verrouillée peut uniquement être lue.
Indique qu’un pointeur de mémoire valide vers le haut du rectangle spécifié doit être retourné. Si aucun rectangle n’est spécifié, un pointeur vers le haut de la surface est retourné. Il s’agit de la valeur par défaut.
Si un verrou ne peut pas être obtenu parce qu’une opération de transfert de bloc de bits (bitblt) est en cours, réessayez de verrouiller jusqu’à ce qu’un verrou soit obtenu ou qu’une autre erreur se produise, telle que DDERR_SURFACEBUSY.
Indique que la surface verrouillée est activée en écriture.
[in] unnamedParam4
Handle de l’événement. Ce paramètre n’est pas utilisé actuellement et doit être défini sur NULL.
Si la méthode réussit, la valeur de retour est DD_OK.
En cas d’échec, la méthode peut retourner l’une des valeurs d’erreur suivantes :
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
- DDERR_SURFACEBUSY
- DDERR_SURFACELOST
- DDERR_WASSTILLDRAWING
Dans IDirectDrawSurface7, le comportement par défaut de Lock consiste à attendre la fin de l’accélérateur. Par conséquent, dans les conditions par défaut, Lock ne retourne jamais DDERR_WASSTILLDRAWING. Si vous souhaitez voir les codes d’erreur et ne pas attendre que l’opération bitblt réussisse, utilisez l’indicateur DDLOCK_DONOTWAIT.
Après avoir récupéré un pointeur de mémoire de surface, vous pouvez accéder à la mémoire de surface jusqu’à ce qu’une méthode IDirectDrawSurface7 ::Unlock correspondante soit appelée. Lorsque la surface est déverrouillée, le pointeur vers la mémoire de la surface n’est pas valide.
N’appelez pas les fonctions de bitblt DirectDraw pour bitblt à partir d’une zone verrouillée d’une surface. Si c’est le cas, le bitblt retourne DDERR_SURFACEBUSY ou DDERR_LOCKEDSURFACES. Les fonctions blit GDI échouent également silencieusement lorsqu’elles sont utilisées sur une surface mémoire vidéo verrouillée.
À moins que vous n’incluiez l’indicateur DDLOCK_NOSYSLOCK, Lock permet à DirectDraw de maintenir l’élément Win16Mutex (également appelé Win16Lock) jusqu’à ce que vous appeliez la méthode IDirectDrawSurface7 ::Unlock . Les débogueurs d’interface graphique graphique ne peuvent pas fonctionner pendant la durée de l’opération Win16Mutex.
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | ddraw.h |
Bibliothèque | Ddraw.lib |
DLL | Ddraw.dll |