From 0e2abe7eb5275063eb55f2ab9405ada6d4386bb1 Mon Sep 17 00:00:00 2001 From: Dibyamartanda Samanta Date: Wed, 7 Aug 2024 14:47:04 +0200 Subject: [PATCH] [NTOSKRNL:CC] Add CalculatePageCount Template Added CalculatePageCount Template function to calculate total pagecount from file offset and length --- NTOSKRNL/CC/ccinternal.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/NTOSKRNL/CC/ccinternal.hpp b/NTOSKRNL/CC/ccinternal.hpp index 9d3e57c..94a0e72 100644 --- a/NTOSKRNL/CC/ccinternal.hpp +++ b/NTOSKRNL/CC/ccinternal.hpp @@ -144,3 +144,16 @@ private: } } }; + +template +ULONG CalculatePageCount(T Length, LARGE_INTEGER FileOffset) { + constexpr ULONG PAGE_OFFSET = 0xFFF; // 4095 (mask for the lower 12 bits) + constexpr ULONG PAGE_SHIFT = 12; // Shift by 12 bits for 4KB pages + + // Calculate the page count + ULONG pageCount = (Length >> PAGE_SHIFT) + + ((FileOffset.LowPart & PAGE_OFFSET) + 4095 + (Length & PAGE_OFFSET)) >> PAGE_SHIFT; + + return pageCount; +} +