// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! ApiSet Contract for api-ms-win-core-heap-l1 use shared::basetsd::{PSIZE_T, SIZE_T}; use shared::minwindef::{BOOL, DWORD, LPCVOID, LPVOID}; use um::minwinbase::LPPROCESS_HEAP_ENTRY; use um::winnt::{HANDLE, HEAP_INFORMATION_CLASS, PHANDLE, PVOID}; STRUCT!{struct HEAP_SUMMARY { cb: DWORD, cbAllocated: SIZE_T, cbCommitted: SIZE_T, cbReserved: SIZE_T, cbMaxReserve: SIZE_T, }} pub type PHEAP_SUMMARY = *mut HEAP_SUMMARY; pub type LPHEAP_SUMMARY = PHEAP_SUMMARY; extern "system" { pub fn HeapCreate( flOptions: DWORD, dwInitialSize: SIZE_T, dwMaximumSize: SIZE_T, ) -> HANDLE; pub fn HeapDestroy( hHeap: HANDLE, ) -> BOOL; pub fn HeapAlloc( hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T, ) -> LPVOID; pub fn HeapReAlloc( hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, dwBytes: SIZE_T, ) -> LPVOID; pub fn HeapFree( hHeap: HANDLE, dwFlags: DWORD, lpMem: LPVOID, ) -> BOOL; pub fn HeapSize( hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID, ) -> SIZE_T; pub fn GetProcessHeap() -> HANDLE; pub fn HeapCompact( hHeap: HANDLE, dwFlags: DWORD, ) -> SIZE_T; pub fn HeapSetInformation( HeapHandle: HANDLE, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T, ) -> BOOL; pub fn HeapValidate( hHeap: HANDLE, dwFlags: DWORD, lpMem: LPCVOID, ) -> BOOL; pub fn HeapSummary( hHeap: HANDLE, dwFlags: DWORD, lpSummary: LPHEAP_SUMMARY, ) -> BOOL; pub fn GetProcessHeaps( NumberOfHeaps: DWORD, ProcessHeaps: PHANDLE, ) -> DWORD; pub fn HeapLock( hHeap: HANDLE, ) -> BOOL; pub fn HeapUnlock( hHeap: HANDLE, ) -> BOOL; pub fn HeapWalk( hHeap: HANDLE, lpEntry: LPPROCESS_HEAP_ENTRY, ) -> BOOL; pub fn HeapQueryInformation( HeapHandle: HANDLE, HeapInformationClass: HEAP_INFORMATION_CLASS, HeapInformation: PVOID, HeapInformationLength: SIZE_T, ReturnLength: PSIZE_T, ) -> BOOL; }