[NTOSKRNL:CC] Pin Hadler Initial Commit
* Implemented CcMapDataCommon Rest of the API will be implemented Soon.
This commit is contained in:
parent
bf0136ce21
commit
05cd85be9b
88
NTOSKRNL/CC/ccpinsupport.cpp
Normal file
88
NTOSKRNL/CC/ccpinsupport.cpp
Normal file
@ -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 <ntoskrnl.h>
|
||||||
|
#define NTDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
#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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user