Funzione LocalUnlock (winbase.h)

Decrementa il conteggio dei blocchi associato a un oggetto memoria allocato con LMEM_MOVEABLE. Questa funzione non ha alcun effetto sugli oggetti di memoria allocati con LMEM_FIXED.

Nota Le funzioni locali hanno un sovraccarico maggiore e forniscono meno funzionalità rispetto ad altre funzioni di gestione della memoria. Le nuove applicazioni devono usare le funzioni heap , a meno che non venga utilizzata una documentazione che indica che deve essere usata una funzione locale. Per altre informazioni, vedere Funzioni globali e locali.
 

Sintassi

BOOL LocalUnlock(
  [in] HLOCAL hMem
);

Parametri

[in] hMem

Handle per l'oggetto memoria locale. Questo handle viene restituito dalla funzione LocalAlloc o LocalReAlloc.

Valore restituito

Se l'oggetto memoria è ancora bloccato dopo aver decrementato il conteggio dei blocchi, il valore restituito è diverso da zero. Se l'oggetto memoria viene sbloccato dopo aver decrementato il conteggio dei blocchi, la funzione restituisce zero e GetLastError restituisce NO_ERROR.

Se la funzione ha esito negativo, il valore restituito è zero e GetLastError restituisce un valore diverso da NO_ERROR.

Commenti

Le strutture di dati interne per ogni oggetto memoria includono un conteggio di blocchi inizialmente zero. Per gli oggetti di memoria rimovibili, la funzione LocalLock incrementa il conteggio per uno e LocalUnlock decrementa il conteggio per uno. Per ogni chiamata eseguita da un processo a LocalLock per un oggetto, deve infine chiamare LocalUnlock. La memoria bloccata non verrà spostata o eliminata a meno che l'oggetto memoria non venga riallocato usando la funzione LocalReAlloc . Il blocco di memoria di un oggetto memoria bloccato rimane bloccato fino a quando il numero di blocchi viene decrementato su zero, al momento in cui può essere spostato o rimosso.

Se l'oggetto memoria è già sbloccato, LocalUnlock restituisce FALSE e GetLastError segnala ERROR_NOT_LOCKED. Gli oggetti di memoria allocati con LMEM_FIXED hanno sempre un numero di blocchi pari a zero e causano l'errore di ERROR_NOT_LOCKED .

Un processo non deve basarsi sul valore restituito per determinare il numero di volte in cui deve successivamente chiamare LocalUnlock per il blocco di memoria.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Funzioni globali e locali

LocalAlloc

LocalFlags

LocalLock

LocalReAlloc

Funzioni di gestione della memoria