Freigeben über


LocalUnlock-Funktion (winbase.h)

Verringert die Sperranzahl, die einem Speicherobjekt zugeordnet ist, das LMEM_MOVEABLE zugeordnet wurde. Diese Funktion hat keine Auswirkungen auf Speicherobjekte, die LMEM_FIXED zugeordnet sind.

Hinweis Die lokalen Funktionen weisen einen größeren Mehraufwand auf und bieten weniger Features als andere Speicherverwaltungsfunktionen. Neue Anwendungen sollten die Heapfunktionen verwenden, es sei denn, die Dokumentation besagt, dass eine lokale Funktion verwendet werden soll. Weitere Informationen finden Sie unter Globale und lokale Funktionen.
 

Syntax

BOOL LocalUnlock(
  [in] HLOCAL hMem
);

Parameter

[in] hMem

Ein Handle für das lokale Speicherobjekt. Dieses Handle wird entweder von der Funktion LocalAlloc oder LocalReAlloc zurückgegeben.

Rückgabewert

Wenn das Speicherobjekt nach dem Dekrementieren der Sperranzahl weiterhin gesperrt ist, ist der Rückgabewert nonzero. Wenn das Speicherobjekt entsperrt wird, nachdem die Sperranzahl dekrementiert wurde, gibt die Funktion null zurück, und GetLastError gibt NO_ERROR zurück.

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0, und GetLastError gibt einen anderen Wert als NO_ERROR zurück.

Hinweise

Die internen Datenstrukturen für jedes Speicherobjekt enthalten eine Sperranzahl, die zunächst 0 ist. Bei beweglichen Speicherobjekten erhöht die LocalLock-Funktion die Anzahl um eins, und LocalUnlock verringert die Anzahl um eins. Für jeden Aufruf, den ein Prozess an LocalLock für ein Objekt sendet, muss er schließlich LocalUnlock aufrufen. Gesperrter Arbeitsspeicher wird nicht verschoben oder verworfen, es sei denn, das Speicherobjekt wird mithilfe der LocalReAlloc-Funktion neu zugeordnet. Der Speicherblock eines gesperrten Speicherobjekts bleibt gesperrt, bis seine Sperranzahl auf 0 erhöht wird. Zu diesem Zeitpunkt kann er verschoben oder verworfen werden.

Wenn das Speicherobjekt bereits entsperrt ist, gibt LocalUnlockFALSE zurück, und GetLastError meldet ERROR_NOT_LOCKED. Speicherobjekte, die LMEM_FIXED zugeordnet sind, weisen immer die Sperranzahl 0 auf und verursachen den ERROR_NOT_LOCKED Fehler.

Ein Prozess sollte sich nicht auf den Rückgabewert verlassen, um zu bestimmen, wie oft er anschließend LocalUnlock für den Speicherblock aufrufen muss.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Globale und lokale Funktionen

LocalAlloc

LocalFlags

LocalLock

LocalReAlloc

Speicherverwaltungsfunktionen