KeInitializeSecondaryInterruptServices
NTSTATUS __stdcall KeInitializeSecondaryInterruptServices(VOID *HalExports){
VOID **PoolWithTag;
NTSTATUS v2;
VOID **v3;
INT64 v4;
__int64 v5;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x3000ui64, 1767073099i64);
v2 = 0;
KiGlobalSecondaryIDT = (__int64)PoolWithTag;
v3 = PoolWithTag;
if( !PoolWithTag )
return -1073741670;
memset(PoolWithTag, 0i64, 0x3000u);
v4 = (INT64)(v3 + 1);
v5 = 256i64;
do
{
*v3 = 0i64;
KeInitializeEvent(v4, 1, 1u);
v4 += 48i64;
v3 += 6;
--v5;
}
while( v5 );
qword_140C2B268 = (__int64)&KiSecondarySignalList;
KiSecondarySignalList = (__int64)&KiSecondarySignalList;
KeInitializeDpc(&KiSecondarySignalDpc, KiProcessSecondarySignalList, 0i64);
KiSecondarySignalListLock = 0i64;
KiSecondarySignalDpcRunning = 0;
KiSecondaryInterruptServicesEnabled = 1;
return v2;
}Referenced by:
HalpAllocateGsivForSecondaryInterrupt