Share via


Función SafeArrayLock (oleauto.h)

Incrementa el recuento de bloqueos de una matriz y coloca un puntero a los datos de la matriz en pvData del descriptor de matriz.

Sintaxis

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Parámetros

[in] psa

Descriptor de matriz creado por SafeArrayCreate.

Valor devuelto

Esta función puede devolver uno de estos valores.

Código devuelto Descripción
S_OK
Correcto.
E_INVALIDARG
El argumento psa no es válido.
E_UNEXPECTED
No se pudo bloquear la matriz.

Comentarios

El puntero del descriptor de matriz es válido hasta que se llama a la función SafeArrayUnlock . Las llamadas a SafeArrayLock se pueden anidar, en cuyo caso se requiere un número igual de llamadas a SafeArrayUnlock .

No se puede eliminar una matriz mientras está bloqueada.

Seguridad para subprocesos

Todos los miembros estáticos públicos (compartidos en Visual Basic) del tipo de datos SAFEARRAY son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Por ejemplo, considere una aplicación que usa las funciones SafeArrayLock y SafeArrayUnlock . Si estas funciones se llaman simultáneamente desde subprocesos diferentes en la misma instancia de tipo de datos SAFEARRAY , se puede crear un recuento de bloqueos incoherente. Esto hará que la función SafeArrayUnlock devuelva E_UNEXPECTED. Puede evitarlo proporcionando su propio código de sincronización.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado oleauto.h
Library OleAut32.lib
Archivo DLL OleAut32.dll