WdipSemMarkInstanceForDeletion

_WDIP_SEM_SCENARIO_INSTANCE_INFO *__stdcall WdipSemMarkInstanceForDeletion(_GUID *ScenarioInstanceId){
  _ETHREAD *CurrentThread; 
  _WDIP_SEM_SCENARIO_INSTANCE_INFO *v2; 
  _WDIP_SEM_SCENARIO_INSTANCE_INFO *EnabledInstanceTable; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v2 = 0i64;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&ExBootDevicesRemovedEvent + 567, 0i64);
  if( ScenarioInstanceId )
  {
    EnabledInstanceTable = WdipSemQueryEnabledInstanceTable(ScenarioInstanceId);
    v2 = EnabledInstanceTable;
    if( EnabledInstanceTable )
    {
      if( EnabledInstanceTable[11] )
        v2 = 0i64;
      else
        EnabledInstanceTable[11] = 1;
    }
  }
  ExReleasePushLockEx((ULONG_PTR)&ExBootDevicesRemovedEvent + 4536, 0);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  return v2;
}

Referenced by:

WdipSemDisableScenario