Freigeben über


SafeArrayLock-Funktion (oleauto.h)

Erhöht die Sperranzahl eines Arrays und platziert einen Zeiger auf die Arraydaten in pvData des Arraydeskriptors.

Syntax

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

Parameter

[in] psa

Ein arraydeskriptor, der von SafeArrayCreate erstellt wurde.

Rückgabewert

Diese Funktion kann einen dieser Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
E_INVALIDARG
Das Argument psa ist ungültig.
E_UNEXPECTED
Das Array konnte nicht gesperrt werden.

Hinweise

Der Zeiger im Arraydeskriptor ist gültig, bis die SafeArrayUnlock-Funktion aufgerufen wird. Aufrufe von SafeArrayLock können geschachtelt werden. In diesem Fall ist eine gleiche Anzahl von Aufrufen von SafeArrayUnlock erforderlich.

Ein Array kann nicht gelöscht werden, während es gesperrt ist.

Threadsicherheit

Alle öffentlichen statischen (in Visual Basic freigegebenen) Member des SAFEARRAY-Datentyps sind threadsicher. Instanzmember sind nicht garantiert, dass sie threadsicher sind.

Betrachten Sie beispielsweise eine Anwendung, die die Funktionen SafeArrayLock und SafeArrayUnlock verwendet. Wenn diese Funktionen gleichzeitig aus verschiedenen Threads auf demselben SAFEARRAY-Datentyp instance aufgerufen werden, kann eine inkonsistente Sperranzahl erstellt werden. Dies führt schließlich dazu, dass die SafeArrayUnlock-Funktion E_UNEXPECTED zurückgibt. Sie können dies verhindern, indem Sie Ihren eigenen Synchronisierungscode bereitstellen.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile oleauto.h
Bibliothek OleAut32.lib
DLL OleAut32.dll