winapi_ui_automation/um/
heapapi.rs
1use shared::basetsd::{PSIZE_T, SIZE_T};
8use shared::minwindef::{BOOL, DWORD, LPCVOID, LPVOID};
9use um::minwinbase::LPPROCESS_HEAP_ENTRY;
10use um::winnt::{HANDLE, HEAP_INFORMATION_CLASS, PHANDLE, PVOID};
11STRUCT!{struct HEAP_SUMMARY {
12 cb: DWORD,
13 cbAllocated: SIZE_T,
14 cbCommitted: SIZE_T,
15 cbReserved: SIZE_T,
16 cbMaxReserve: SIZE_T,
17}}
18pub type PHEAP_SUMMARY = *mut HEAP_SUMMARY;
19pub type LPHEAP_SUMMARY = PHEAP_SUMMARY;
20extern "system" {
21 pub fn HeapCreate(
22 flOptions: DWORD,
23 dwInitialSize: SIZE_T,
24 dwMaximumSize: SIZE_T,
25 ) -> HANDLE;
26 pub fn HeapDestroy(
27 hHeap: HANDLE,
28 ) -> BOOL;
29 pub fn HeapAlloc(
30 hHeap: HANDLE,
31 dwFlags: DWORD,
32 dwBytes: SIZE_T,
33 ) -> LPVOID;
34 pub fn HeapReAlloc(
35 hHeap: HANDLE,
36 dwFlags: DWORD,
37 lpMem: LPVOID,
38 dwBytes: SIZE_T,
39 ) -> LPVOID;
40 pub fn HeapFree(
41 hHeap: HANDLE,
42 dwFlags: DWORD,
43 lpMem: LPVOID,
44 ) -> BOOL;
45 pub fn HeapSize(
46 hHeap: HANDLE,
47 dwFlags: DWORD,
48 lpMem: LPCVOID,
49 ) -> SIZE_T;
50 pub fn GetProcessHeap() -> HANDLE;
51 pub fn HeapCompact(
52 hHeap: HANDLE,
53 dwFlags: DWORD,
54 ) -> SIZE_T;
55 pub fn HeapSetInformation(
56 HeapHandle: HANDLE,
57 HeapInformationClass: HEAP_INFORMATION_CLASS,
58 HeapInformation: PVOID,
59 HeapInformationLength: SIZE_T,
60 ) -> BOOL;
61 pub fn HeapValidate(
62 hHeap: HANDLE,
63 dwFlags: DWORD,
64 lpMem: LPCVOID,
65 ) -> BOOL;
66 pub fn HeapSummary(
67 hHeap: HANDLE,
68 dwFlags: DWORD,
69 lpSummary: LPHEAP_SUMMARY,
70 ) -> BOOL;
71 pub fn GetProcessHeaps(
72 NumberOfHeaps: DWORD,
73 ProcessHeaps: PHANDLE,
74 ) -> DWORD;
75 pub fn HeapLock(
76 hHeap: HANDLE,
77 ) -> BOOL;
78 pub fn HeapUnlock(
79 hHeap: HANDLE,
80 ) -> BOOL;
81 pub fn HeapWalk(
82 hHeap: HANDLE,
83 lpEntry: LPPROCESS_HEAP_ENTRY,
84 ) -> BOOL;
85 pub fn HeapQueryInformation(
86 HeapHandle: HANDLE,
87 HeapInformationClass: HEAP_INFORMATION_CLASS,
88 HeapInformation: PVOID,
89 HeapInformationLength: SIZE_T,
90 ReturnLength: PSIZE_T,
91 ) -> BOOL;
92}