CcLockSystemCacheBuffer
UINT64 __fastcall CcLockSystemCacheBuffer(VOID *a1, MDL **a2, UINT64 a3, INT64 a4, INT64 *a5){
int v5;
PVOID MappedSystemVa;
PMDL Mdl;
PMDL v9;
int v10;
v5 = a4;
MappedSystemVa = 0i64;
*(_DWORD *)a5 = 0;
Mdl = IoAllocateMdl(a1, a3, 0, 0, 0i64);
v9 = Mdl;
if( !Mdl )
{
*(_DWORD *)a5 = -1073741670;
LABEL_10:
if( v9 )
{
MmUnlockPages(v9);
IoFreeMdl(v9);
v9 = 0i64;
}
goto LABEL_12;
}
MiProbeAndLockPages((INT64)Mdl, 0, v5 != 0);
v10 = *(_DWORD *)a5;
if( *(int *)a5 < 0 )
goto LABEL_10;
if( (v9->MdlFlags & 5) != 0 )
{
MappedSystemVa = v9->MappedSystemVa;
}
else
{
MappedSystemVa = MmMapLockedPagesSpecifyCache(v9, 0, MmCached, 0i64, 0, 0x40000000u);
v10 = *(_DWORD *)a5;
}
if( !MappedSystemVa )
{
v10 = -1073741670;
*(_DWORD *)a5 = -1073741670;
}
if( v10 < 0 )
goto LABEL_10;
LABEL_12:
*a2 = v9;
return(UINT64)MappedSystemVa;
}Referenced by:
CcCopyBytesToUserBuffer
CcMapAndCopyInToCache