winapi_ui_automation/um/
heapapi.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6//! ApiSet Contract for api-ms-win-core-heap-l1
7use 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}