SmKmProbeAndLockAddress

NTSTATUS __fastcall SmKmProbeAndLockAddress(void *a1, __int64 a2, struct _MDL *a3, int a4){
  NTSTATUS result; 
  a3->ByteCount = a2;
  a3->StartVa = (void *)((unsigned __int64)a1 & 0xFFFFFFFFFFFFF000ui64);
  a3->Next = 0i64;
  a3->Size = 8 * ((((unsigned __int64)((unsigned __int16)a1 & 0xFFF) + a2 + 4095) >> 12) + 6);
  a3->MdlFlags = 0;
  a3->ByteOffset = (unsigned __int16)a1 & 0xFFF;
  result = MmStoreProbeAndLockPages(a3, (unsigned int)a4);
  if( result >= 0 )
    return 0;
  if( result == -1073741801 )
    return -1073741395;
  return result;
}

Referenced by:

SmKmStoreHelperCommandProcess