HalpBlkApicWrite
_EXCEPTION_REGISTRATION_RECORD *__stdcall HalpBlkApicWrite(INT64 a1, UINT64 a2){
_EXCEPTION_REGISTRATION_RECORD *ExceptionList;
_EXCEPTION_REGISTRATION_RECORD *result;
ExceptionList = KeGetPcr()->NtTib.ExceptionList;
if( BYTE1(ExceptionList[2].Handler) || LOBYTE(ExceptionList[2].Handler) )
{
result = (_EXCEPTION_REGISTRATION_RECORD *)(unsigned int)a2;
__writemsr(((int)a1 >> 4) + 2048, (unsigned int)a2);
}
else
{
result = KeGetPcr()->NtTib.ExceptionList[2].Next;
*(_DWORD *)((char *)&result->Next + (int)a1) = a2;
}
return result;
}Referenced by:
HalpBlkApicEndOfInterrupt
HalpBlkApicInitializeLocalUnit