Partager via


SafeArrayLock, fonction (oleauto.h)

Incrémente le nombre de verrous d’un tableau et place un pointeur vers les données du tableau dans pvData du descripteur de tableau.

Syntaxe

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Paramètres

[in] psa

Descripteur de tableau créé par SafeArrayCreate.

Valeur retournée

Cette fonction peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
Réussite.
E_INVALIDARG
L’argument psa n’est pas valide.
E_UNEXPECTED
Impossible de verrouiller le tableau.

Remarques

Le pointeur dans le descripteur de tableau est valide jusqu’à ce que la fonction SafeArrayUnlock soit appelée. Les appels à SafeArrayLock peuvent être imbriqués, auquel cas un nombre égal d’appels à SafeArrayUnlock est requis.

Un tableau ne peut pas être supprimé tant qu’il est verrouillé.

Cohérence de thread

Tous les membres statiques publics (partagés en Visual Basic) du type de données SAFEARRAY sont thread-safe. Il n’est pas garanti que les membres de l’instance soient thread-safe.

Prenons l’exemple d’une application qui utilise les fonctions SafeArrayLock et SafeArrayUnlock . Si ces fonctions sont appelées simultanément à partir de threads différents sur le même type de données SAFEARRAY instance, un nombre de verrous incohérent peut être créé. La fonction SafeArrayUnlock finira par retourner E_UNEXPECTED. Vous pouvez éviter cela en fournissant votre propre code de synchronisation.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll