KiExecuteDpc
VOID __stdcall __noreturn KiExecuteDpc(PVOID Context){
_ETHREAD *CurrentThread;
_ETHREAD *v3;
int v4;
INT64 result[33];
memset((INT64)result, 0i64);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
KeSetPriorityThread((PKTHREAD)CurrentThread, 31);
_interlockedbittestandset((volatile signed __int32 *)CurrentThread + 30, 8u);
KiSetSystemAffinityThreadToProcessor(*((unsigned int *)Context + 9), 0i64);
*((_BYTE *)Context + 12584) = 1;
while( 1 )
{
v4 = 0;
KeWaitForGate((char *)Context + 31616, 5);
v3 = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)v3 + 243);
do
{
*((_WORD *)Context + 6295) = 1;
if( KeSmapEnabled )
__clac();
_disable();
KiExecuteAllDpcs((__int64)Context, (__int64)CurrentThread, &v4, 1u);
_enable();
if( KeSmapEnabled )
__stac();
}
while( !KiTryToEndDpcProcessing((volatile INT16 *)Context + 6295, (INT64)Context + 12520) );
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
}
}Referenced by:
No references.