WdipSemDeleteTransitionalInstance
VOID __stdcall WdipSemDeleteTransitionalInstance(_WDIP_SEM_SCENARIO_INSTANCE_INFO *Instance){
_ETHREAD *CurrentThread;
__int64 v3;
_WDIP_SEM_SCENARIO_INSTANCE_INFO **v4;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 567, 0i64);
v3 = *(_QWORD *)Instance;
if( *(_WDIP_SEM_SCENARIO_INSTANCE_INFO **)(*(_QWORD *)Instance + 8i64) != Instance
|| (v4 = (_WDIP_SEM_SCENARIO_INSTANCE_INFO **)*((_QWORD *)Instance + 1), *v4 != Instance) )
{
__fastfail(3u);
}
*v4 = (_WDIP_SEM_SCENARIO_INSTANCE_INFO *)v3;
*(_QWORD *)(v3 + 8) = v4;
--*(&ExBootDevicesRemovedEvent + 1132);
ExReleasePushLockEx((ULONG_PTR)&ExBootDevicesRemovedEvent + 4536, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
WdipSemFastFree(3i64, (_SLIST_ENTRY *)Instance);
}Referenced by:
WdipSemDisableScenario
WdipSemEnableScenario
WdipTimeoutCheckRoutine