1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//! Kernel Mode pools.
use ::PVOID;
extern "system"
{
/// Allocates pool memory of the specified type and tag.
pub fn ExAllocatePoolWithTag(PoolType: POOL_TYPE, NumberOfBytes: usize, Tag: u32) -> PVOID;
/// Deallocates a block of pool memory allocated with the specified tag.
pub fn ExFreePoolWithTag(P: PVOID, Tag: u32);
/// Allocates pool memory of the specified type.
pub fn ExAllocatePool(PoolType: POOL_TYPE, NumberOfBytes: usize) -> PVOID;
/// Deallocates a block of pool memory.
pub fn ExFreePool(P: PVOID);
}
/// Specifies the type of system memory to allocate.
#[repr(C)]
pub enum POOL_TYPE
{
/// Nonpageable system memory, can be accessed from any IRQL.
NonPagedPool = 0,
/// Pageable system memory, can only be allocated and accessed at IRQL < DISPATCH_LEVEL.
PagedPool,
NonPagedPoolMustSucceed,
DontUseThisType,
/// Nonpaged pool, aligned on processor cache boundaries.
NonPagedPoolCacheAligned,
/// Paged pool, aligned on processor cache boundaries.
PagedPoolCacheAligned,
NonPagedPoolCacheAlignedMustS,
MaxPoolType,
NonPagedPoolSession = 32,
PagedPoolSession,
NonPagedPoolMustSucceedSession,
DontUseThisTypeSession,
NonPagedPoolCacheAlignedSession,
PagedPoolCacheAlignedSession,
NonPagedPoolCacheAlignedMustSSession,
}
|