Condividi tramite


Funzione SafeArrayPutElement (oleauto.h)

Archivia l'elemento dati nella posizione specificata nella matrice.

Sintassi

HRESULT SafeArrayPutElement(
  [in] SAFEARRAY *psa,
  [in] LONG      *rgIndices,
  [in] void      *pv
);

Parametri

[in] psa

Descrittore di matrice creato da SafeArrayCreate.

[in] rgIndices

Vettore di indici per ogni dimensione della matrice. La dimensione più a destra (meno significativa) è rgIndices[0]. La dimensione più a sinistra viene archiviata in rgIndices[psa->cDims – 1].

[in] pv

Dati da assegnare alla matrice. I tipi varianti VT_DISPATCH, VT_UNKNOWN e VT_BSTR sono puntatori e non richiedono un altro livello di riferimento indiretto.

Valore restituito

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
DISP_E_BADINDEX
L'indice specificato non è valido.
E_INVALIDARG
Uno degli argomenti non è valido.
E_OUTOFMEMORY
Impossibile allocare memoria per l'elemento.

Commenti

Questa funzione chiama automaticamente SafeArrayLock e SafeArrayUnlock prima e dopo l'assegnazione dell'elemento. Se l'elemento dati è una stringa, un oggetto o una variante, la funzione lo copia correttamente quando la matrice sicura viene eliminata definitivamente. Se l'elemento esistente è una stringa, un oggetto o una variante, viene cancellato correttamente. Se l'elemento dati è un VT_DISPATCH o VT_UNKNOWN, Viene chiamato AddRef per incrementare il conteggio dei riferimenti dell'oggetto.

Nota Più blocchi possono trovarsi in una matrice. Gli elementi possono essere inseriti in una matrice mentre la matrice è bloccata da altre operazioni.
 
Per un esempio che illustra la chiamata a SafeArrayPutElement, vedere l'esempio COM Fundamentals Lines (CLines::Add in Lines.cpp).

Requisiti

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