PfpReturnAccessBuffer
VOID __stdcall PfpReturnAccessBuffer(_MM_PAGE_ACCESS_INFO_HEADER *AccessBuffer){
unsigned int Alignment_low;
int v3;
if( !ExAcquireRundownProtection(&PfKernelGlobals.AccessBufferRef) )
goto LABEL_8;
Alignment_low = LOWORD(PfKernelGlobals.AccessBufferList.Alignment);
if( LOWORD(PfKernelGlobals.AccessBufferList.Alignment) >= PfKernelGlobals.AccessBufferMax )
{
_InterlockedExchangeAdd((volatile signed __int32 *)&xmmword_140C4FC10, 0x64u);
v3 = 0;
}
else
{
RtlpInterlockedPushEntrySList(&PfKernelGlobals.AccessBufferList, (PSLIST_ENTRY)AccessBuffer);
if( !*(_DWORD *)&PfKernelGlobals.gap10[4] && Alignment_low >= 8 )
KeSetEvent((PRKEVENT)PfKernelGlobals.gap10, 0, 0);
v3 = 1;
}
ExReleaseRundownProtection(&PfKernelGlobals.AccessBufferRef);
if( !v3 )
LABEL_8:
MmFreeAccessPfnBuffer(AccessBuffer, 0);
}Referenced by:
PfpFlushBuffers