PipClearDevNodeFlags

VOID __stdcall PipClearDevNodeFlags(_DEVICE_NODE *DeviceNode, UINT64 Flags){
  unsigned int v2; 
  int v3; 
  wchar_t *Buffer; 
  INT64 v6; 
  INT64 v7; 

  v2 = DeviceNode->Flags;
  v3 = v2 & ~(_DWORD)Flags;
  DeviceNode->Flags = v3;
  if( ((v2 ^ v3) & 0x307000) != 0 )
  {
    Buffer = DeviceNode->InstancePath.Buffer;
    if( Buffer )
    {
      PnpRaiseNtPlugPlayDevicePropertyChangeEvent((INT64)DeviceNode, Buffer, 11);
      v6 = DeviceNode->Flags;
      if( ((v2 ^ DeviceNode->Flags) & 0x4000) != 0 )
      {
        PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v6, DeviceNode->InstancePath.Buffer, 28);
        LODWORD(v6) = DeviceNode->Flags;
      }
      v7 = v2 ^ (unsigned int)v6;
      if( (v7 & 0x2000) != 0 )
        PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v7, DeviceNode->InstancePath.Buffer, 27);
    }
  }
}

Referenced by:

IopReleaseFilteredBootResources
IopReleaseResources
IopRemoveDevice
IopRemoveLegacyDeviceNode
PiProcessClearDeviceProblem
PiProcessNewDeviceNode
PiProcessReenumeration
PiProcessResourceRequirementsChanged
PipClearDevNodeProblem
PipEnumerateCompleted
PipEnumerateDevice
PipProcessRestartPhase1
PnpAllocateResources
PnpBuildCmResourceLists
PnpCancelStopDeviceNode
PnpGetResourceRequirementsForAssignTable
PnpInvalidateRelationsInList
PnpProcessRelation
PnpReallocateResources
PnpRestartDeviceNode
PnpSurpriseRemoveLockedDeviceNode