aboutsummaryrefslogtreecommitdiff
path: root/src/pool.rs
diff options
context:
space:
mode:
authorpravic <[email protected]>2016-04-12 16:39:37 +0300
committerpravic <[email protected]>2016-04-12 16:39:37 +0300
commit28ff216899e95a6a9756bcbe580f28ed8ce61228 (patch)
treebbf00e3c5f3b440db5ddb3f86b6d3a893349cee0 /src/pool.rs
parentgit ignore (diff)
downloadwinapi-kmd-rs-28ff216899e95a6a9756bcbe580f28ed8ce61228.tar.xz
winapi-kmd-rs-28ff216899e95a6a9756bcbe580f28ed8ce61228.zip
Windows Kernel-Mode library
Diffstat (limited to 'src/pool.rs')
-rw-r--r--src/pool.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/pool.rs b/src/pool.rs
new file mode 100644
index 0000000..31598d5
--- /dev/null
+++ b/src/pool.rs
@@ -0,0 +1,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,
+}