From 05cd85be9b0736c8a78df8c2bc3681e8ffcda6a4 Mon Sep 17 00:00:00 2001 From: Dibyamartanda Samanta Date: Fri, 21 Jun 2024 17:49:04 +0200 Subject: [PATCH] [NTOSKRNL:CC] Pin Hadler Initial Commit * Implemented CcMapDataCommon Rest of the API will be implemented Soon. --- NTOSKRNL/CC/ccpinsupport.cpp | 88 ++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 NTOSKRNL/CC/ccpinsupport.cpp diff --git a/NTOSKRNL/CC/ccpinsupport.cpp b/NTOSKRNL/CC/ccpinsupport.cpp new file mode 100644 index 0000000..4d02ab3 --- /dev/null +++ b/NTOSKRNL/CC/ccpinsupport.cpp @@ -0,0 +1,88 @@ +/* + * PROJECT: Alcyone System Kernel + * LICENSE: BSD Clause 3 + * PURPOSE: Cache Controller:: Lazy Writer + * NT KERNEL: 5.11.9360 + * COPYRIGHT: 2023-2029 Dibymartanda Samanta <> + */ + +#include +#define NTDEBUG +#include +#include "ccinternal.hpp" + + +extern "C" + + +/*Internal Function*/ + +BOOLEAN +NTAPI +CcPinFileData( + _In_ PFILE_OBJECT FileObject, + _In_ PLARGE_INTEGER FileOffset, + _In_ ULONG Length, + _In_ BOOLEAN IsNoWrite, + _In_ BOOLEAN Flags, + _In_ ULONG PinFlags, + _Out_ PCC_BCB* Bcb, + _Out_ PVOID* Buffer, + _Out_ LARGE_INTEGER* BeyondLastByte) +{ + // Unimplemented +} + +BOOLEAN +NTAPI +CcMapDataCommon( + _In_ PFILE_OBJECT FileObject, + _In_ PLARGE_INTEGER FileOffset, + _In_ ULONG Length, + _In_ ULONG Flags, + _Out_ PVOID *Bcb, + _Out_ PVOID *Buffer +) + { + if (Flags & FILE_PIN_SEQUENTIAL_READ) + InterlockedIncrement(&CcSequentialReadCount); + else + InterlockedIncrement(&CcRandomReadCount); + + KeGetCurrentThread()->WaitIrql = PASSIVE_LEVEL; + + if (Flags & FILE_PIN_SEQUENTIAL_READ) + { + *Buffer = CcGetVirtualAddress(SharedMap, *FileOffset, (PVACB *)&Bcb, &ReceivedLength); + return TRUE; + } + else + { + LARGE_INTEGER BeyondLastByte; + if (CcPinFileData(FileObject, FileOffset, Length, TRUE, 0, Flags, Bcb, Buffer, &BeyondLastByte)) + { + return TRUE; + } + else + { + InterlockedIncrement(&CCFailedPinReadCount); + return FALSE; + } + } + + } +} + +VOID +NTAPI +CcUnpinFileDataEx( + _In_ PCC_BCB Bcb, + _In_ BOOLEAN WriteStatus, + _In_ ULONG Type) +{ + // Unimplementd +} + + + +