PpProfileCancelHardwareProfileTransition

VOID __stdcall PpProfileCancelHardwareProfileTransition(){
  _DWORD *i; 

  ExAcquireFastMutex((PFAST_MUTEX)((char *)&PnpReplaceEvent + 160));
  for( i = (_DWORD *)*(&PnpReplaceEvent + 28); i != (_DWORD *)((char *)&PnpReplaceEvent + 224); i = *(_DWORD **)i )
  {
    if( *(i - 2) != 1 )
    {
      _InterlockedDecrement((_DWORD *)&PnpReplaceEvent + 60);
      *(i - 2) = 1;
    }
  }
  KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&PnpReplaceEvent + 160));
  if( *(&PnpReplaceEvent + 288) )
    PnpRequestHwProfileChangeNotification(&GUID_HWPROFILE_CHANGE_CANCELLED, 2, 0i64, 0i64);
  KeReleaseSemaphore((_KSEMAPHORE *)&PnpReplaceEvent + 8, 0i64, 1i64, 0);
}

Referenced by:

PipProcessStartPhase2
PnpProcessQueryRemoveAndEject