Share via


Funzione SafeArrayLock (oleauto.h)

Incrementa il conteggio dei blocchi di una matrice e inserisce un puntatore ai dati della matrice in pvData del descrittore di matrice.

Sintassi

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Parametri

[in] psa

Descrittore di matrice creato da SafeArrayCreate.

Valore restituito

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
E_INVALIDARG
L'argomento psa non è valido.
E_UNEXPECTED
Impossibile bloccare la matrice.

Commenti

Il puntatore nel descrittore della matrice è valido finché non viene chiamata la funzione SafeArrayUnlock . Le chiamate a SafeArrayLock possono essere annidate, in questo caso è necessario un numero uguale di chiamate a SafeArrayUnlock .

Impossibile eliminare una matrice mentre è bloccata.

Thread safety

Tutti i membri statici pubblici (condivisi in Visual Basic) del tipo di dati SAFEARRAY sono thread safe. I membri dell'istanza non sono garantiti per essere thread safe.

Si consideri ad esempio un'applicazione che usa le funzioni SafeArrayLock e SafeArrayUnlock . Se queste funzioni vengono chiamate simultaneamente da thread diversi nella stessa istanza del tipo di dati SAFEARRAY , è possibile creare un conteggio di blocchi incoerente. A questo scopo, la funzione SafeArrayUnlock restituirà E_UNEXPECTED. È possibile evitare questo problema fornendo il proprio codice di sincronizzazione.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione oleauto.h
Libreria OleAut32.lib
DLL OleAut32.dll