Freigeben über


HeapLock-Funktion (heapapi.h)

Versucht, das kritische Abschnittsobjekt oder die Sperre abzurufen, das einem angegebenen Heap zugeordnet ist.

Syntax

BOOL HeapLock(
  [in] HANDLE hHeap
);

Parameter

[in] hHeap

Ein Handle für den zu sperrenden Heap. Dieses Handle wird entweder von der HeapCreate- oder getProcessHeap-Funktion zurückgegeben.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn die Funktion erfolgreich ist, besitzt der aufrufende Thread die Heapsperre. Nur der aufrufende Thread kann Speicher aus dem Heap zuordnen oder freigeben. Die Ausführung eines anderen Threads des aufrufenden Prozesses wird blockiert, wenn dieser Thread versucht, Arbeitsspeicher aus dem Heap zuzuweisen oder freizugeben. Solche Threads bleiben blockiert, bis der Thread, der die Heapsperre besitzt, die HeapUnlock-Funktion aufruft.

Die HeapLock-Funktion ist in erster Linie nützlich, um die Zuordnung und Freigabe von Heapspeicher durch andere Threads zu verhindern, während der aufrufende Thread die HeapWalk-Funktion verwendet.

Wenn die HeapLock-Funktion auf einem Heap aufgerufen wird, der mit dem flag HEAP_NO_SERIALIZE erstellt wurde, sind die Ergebnisse nicht definiert.

Jeder erfolgreiche Aufruf von HeapLock muss durch einen entsprechenden Aufruf von HeapUnlock abgeglichen werden. Wenn HeapUnlock nicht aufgerufen wird, wird die Ausführung anderer Threads des aufrufenden Prozesses blockiert, die versuchen, auf den Heap zuzugreifen.

Beispiele

Auflisten eines Heaps

Anforderungen

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

Siehe auch

Heapfunktionen

HeapUnlock

HeapWalk

Speicherverwaltungsfunktionen

In VBS-Enclaves verfügbare Vertdll-APIs