KiTimerExpirationDpc
VOID __stdcall KiTimerExpirationDpc(
_KDPC *TimerDpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2){
int v4;
struct _KPRCB *CurrentPrcb;
unsigned __int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
INT64 result[34];
v4 = (int)SystemArgument1;
memset((INT64)result, 0i64);
CurrentPrcb = KeGetCurrentPrcb();
result[1] = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
_disable();
v6 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
if( KiSerializeTimerExpiration )
{
if( *((_BYTE *)CurrentPrcb + 33) )
{
v7 = 31568i64;
v8 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart >> 18;
v9 = 2i64;
do
{
*(_DWORD *)((char *)KiProcessorBlock + v7) = v8;
v7 += 4i64;
--v9;
}
while( v9 );
}
}
else
{
*((_DWORD *)CurrentPrcb + 7892) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart >> 18;
*((_DWORD *)CurrentPrcb + 7893) = v6 >> 18;
}
_enable();
KiTimerExpiration((__int64)CurrentPrcb, v4, v6, 1, (int *)result);
*((_QWORD *)CurrentPrcb + 1564) = 0i64;
if( *((_BYTE *)CurrentPrcb + 33) )
KiTimer2Expiration((struct KPRCB *)CurrentPrcb, v6, 1, 1, (INT64)result);
}Referenced by:
No references.