EtwpCovSampCaptureQueueApc
NTSTATUS __stdcall EtwpCovSampCaptureQueueApc(PVOID SystemArgument1){
_ETHREAD *CurrentThread;
_SLIST_ENTRY *v2;
INT64 v3;
int v4;
int v5;
NTSTATUS v7;
__int64 v8;
unsigned int v9;
unsigned int v10;
__int64 v11;
_SLIST_ENTRY *v12;
_KAPC *v13;
unsigned __int8 CurrentIrql;
char v15;
_ETHREAD *v16;
INT64 v17;
INT64 Next;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = 0i64;
v3 = *(&ExBootDevicesRemovedEvent + 153);
v4 = 0;
v5 = 0;
if( CurrentThread->Tcb.Process->Pcb.FreezeCount
+ (((unsigned __int32)CurrentThread->Tcb.Process->Pcb._bf_0 >> 3) & 1)
|| CurrentThread->Tcb.SuspendCount
|| (CurrentThread->Tcb._bf_0 & 0x4000) == 0 )
{
v7 = -1073741637;
}
else
{
if( _interlockedbittestandset((volatile signed __int32 *)&CurrentThread->1296, 0x17u) )
return -1073740008;
v4 = 1;
v8 = (*(_QWORD *)(v3 + 8) >> 4) & 0x1FFi64;
v9 = ((unsigned int)*(_QWORD *)(v3 + 8) >> 13) & 0x3FFFF;
_BitScanReverse(&v10, v9);
v11 = *(_QWORD *)(*((_QWORD *)KeGetCurrentPrcb()->ExSaPageArray + v10 - 2) + 8i64 * (v9 ^ (1 << v10)) + 8);
v12 = EtwpCovSampLookasidePop(v3, v11 + 8 * (v8 + 2));
v2 = v12;
if( !v12 )
{
_InterlockedIncrement((volatile signed __int32 *)(v11 + 8 * v8 + 308));
v7 = -1073741670;
LABEL_24:
_InterlockedAnd((volatile signed __int32 *)&CurrentThread->1296, 0xFF7FFFFF);
return v7;
}
v13 = (_KAPC *)(&v12[3].Next + 1);
KeInitializeApc(
(INT64)(&v12[3].Next + 1),
(INT64)CurrentThread,
0i64,
(INT64)EtwpCovSampCaptureApc,
(INT64)EtwpCovSampCaptureApcRundown,
(INT64)EtwpCovSampCaptureApc,
0,
v3);
*((_QWORD *)&v2[7].Next + 1) = 0i64;
LODWORD(v2[9].Next) = KUSER_SHARED_DATA.TickCount.LowPart;
CurrentIrql = KeGetCurrentIrql();
if( CurrentIrql <= 2u )
{
if( CurrentIrql < 2u )
{
v16 = (_ETHREAD *)KeGetCurrentThread();
--v16->Tcb.KernelApcDisable;
v5 = 1;
}
if( !KeInsertQueueApc((INT64)v13, (INT64)SystemArgument1, 0i64, 0i64) )
{
v7 = -1073741823;
goto LABEL_19;
}
}
else
{
KeTryToInsertQueueApc(v13, SystemArgument1, 0i64);
if( !v15 )
{
if( (CurrentThread->Tcb._bf_0 & 0x4000) != 0 )
KeIsThreadRunning(&CurrentThread->Tcb);
v7 = -1073741823;
goto LABEL_21;
}
}
v4 = 0;
v2 = 0i64;
v7 = 0;
}
LABEL_19:
if( v5 )
KeLeaveCriticalRegion();
LABEL_21:
if( v2 )
{
v17 = *(&ExBootDevicesRemovedEvent + 153);
memset(&v2[3].Next + 1, 0i64, 0x58u);
Next = (INT64)v2[3].Next;
LODWORD(v2[9].Next) = 0;
EtwpCovSampCaptureReleaseToLookaside(v17, Next, (PFN_WDFUSBTARGETDEVICECREATE *)v2);
}
if( v4 )
goto LABEL_24;
return v7;
}Referenced by:
EtwpCovSampCaptureSample