Compartilhar via


Função SafeArrayLock (oleauto.h)

Incrementa a contagem de bloqueios de uma matriz e coloca um ponteiro para os dados da matriz em pvData do descritor de matriz.

Sintaxe

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Parâmetros

[in] psa

Um descritor de matriz criado por SafeArrayCreate.

Retornar valor

Essa função pode retornar um desses valores.

Código de retorno Descrição
S_OK
Êxito.
E_INVALIDARG
O argumento psa não é válido.
E_UNEXPECTED
Não foi possível bloquear a matriz.

Comentários

O ponteiro no descritor de matriz é válido até que a função SafeArrayUnlock seja chamada. As chamadas para SafeArrayLock podem ser aninhadas, caso em que um número igual de chamadas para SafeArrayUnlock é necessário.

Uma matriz não pode ser excluída enquanto estiver bloqueada.

Acesso thread-safe

Todos os membros estáticos públicos (compartilhados no Visual Basic) do tipo de dados SAFEARRAY são thread-safe. Não há garantia de que os membros da instância sejam thread-safe.

Por exemplo, considere um aplicativo que usa as funções SafeArrayLock e SafeArrayUnlock . Se essas funções forem chamadas simultaneamente de threads diferentes na mesma instância de tipo de dados SAFEARRAY , uma contagem de bloqueio inconsistente poderá ser criada. Isso eventualmente fará com que a função SafeArrayUnlock retorne E_UNEXPECTED. Você pode evitar isso fornecendo seu próprio código de sincronização.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho oleauto.h
Biblioteca OleAut32.lib
DLL OleAut32.dll