PopFxFreeUniqueId

VOID __stdcall PopFxFreeUniqueId(_DEVICE_NODE *DevNode){
  wchar_t *Buffer; 
  signed __int32 PowerFlags; 
  signed __int32 v4; 

  Buffer = DevNode->UniqueId.Buffer;
  if( DevNode->InstancePath.Buffer != Buffer )
  {
    if( Buffer )
    {
      _m_prefetchw((const void *)&DevNode->PowerFlags);
      PowerFlags = DevNode->PowerFlags;
      do
      {
        v4 = PowerFlags;
        PowerFlags = _InterlockedCompareExchange(&DevNode->PowerFlags, PowerFlags, PowerFlags);
      }
      while( v4 != PowerFlags );
      if( (PowerFlags & 0x2000) == 0 )
        ExFreePoolWithTag(DevNode->UniqueId.Buffer, 0x4D584650u);
    }
  }
  DevNode->UniqueId = 0i64;
}

Referenced by:

PoFxAbandonDevice