KiRegisterNmiSxCallback
CHAR *__stdcall KiRegisterNmiSxCallback(INT64 a1, INT64 a2){
CHAR *result;
CHAR **v5;
unsigned __int8 v6;
unsigned __int64 v7;
result = (CHAR *)ExAllocatePoolWithTag(0x200ui64, 0x20ui64, 1229803083i64);
v5 = (CHAR **)result;
if( result )
{
*((_QWORD *)result + 1) = a1;
*((_QWORD *)result + 2) = a2;
*((_QWORD *)result + 3) = result;
v6 = KeAcquireSpinLockRaiseToDpc(&KiNmiCallbackListLock);
*v5 = (CHAR *)KiNmiCallbackListHead;
KiNmiCallbackListHead = v5;
v7 = v6;
KxReleaseSpinLock(&KiNmiCallbackListLock);
__writecr8(v7);
return v5[3];
}
return result;
}Referenced by:
KeRegisterNmiCallback