getprocessheap

Public "kern char

Public Declare Function GetProcessHeap Lib "kernel32" Alias "GetProcessHeap" () As Long
用以獲取和調用過程的堆句柄
例如:
typedef struct
{
char data[128];
}Data,*LPData;
LPData lpData;
lpData = (LPData)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,sizeof(Data));
即在堆記憶體上申請了一個不可移動的空間,大小為sizeof(Data).
delphi中使用:
PROCEDURE GetHeaps(List: TStrings);
var
HeapArr: array[0..9] ofTHandle; {對列表數組, 先假定有 10 堆}
n: Integer;
i: Integer;
begin
{獲取進程中的堆列表; 函式的參數1是數組大小, 參數2是數組的第一個元素, 返回堆的實際數量}
n := GetProcessHeap(Length(HeapArr), HeapArr[0]);
List.Add(Format('當前進程共有 %d 個堆', [n]));
List.Add('它們的句柄分別是:');
fori := 0ton - 1do
List.Add(IntToStr(HeapArr[i]));
end;

相關詞條

相關搜尋

熱門詞條

聯絡我們