PiSwDeviceDereference

VOID __stdcall PiSwDeviceDereference(_PI_SWD_OBJECT *SwDeviceObject){
  if( _InterlockedExchangeAdd(SwDeviceObject, 0xFFFFFFFF) == 1 )
  {
    PiSwDeviceFree(SwDeviceObject);
    ExFreePoolWithTag(SwDeviceObject, 0x57706E50u);
  }
}

Referenced by:

PiSwBusRelationRemove
PiSwCloseDevice
PiSwDispatch
PiSwIrpStartCreateWorker
PiSwProcessRemove
PiSwUnassociateDeviceObject