PpHotSwapGetDevnodeRemovalPolicy

VOID __stdcall PpHotSwapGetDevnodeRemovalPolicy(
        _DEVICE_NODE *DeviceNode,
        UINT8 IncludeRegistryOverride,
        _DEVICE_REMOVAL_POLICY *RemovalPolicy){
  unsigned __int8 HardwareRemovalPolicy; 
  unsigned int v7; 
  _DEVICE_NODE *DetachableNode; 

  DetachableNode = 0i64;
  PpDevNodeLockTree(PPL_SIMPLE_READ);
  if( IncludeRegistryOverride )
    HardwareRemovalPolicy = DeviceNode->RemovalPolicy;
  else
    HardwareRemovalPolicy = DeviceNode->HardwareRemovalPolicy;
  if( HardwareRemovalPolicy )
  {
    v7 = 3;
    if( HardwareRemovalPolicy > 3u )
    {
      if( HardwareRemovalPolicy == 4 || HardwareRemovalPolicy != 5 )
        v7 = 2;
    }
    else
    {
      v7 = HardwareRemovalPolicy;
    }
  }
  else
  {
    PiHotSwapGetDetachableNode(DeviceNode, &DetachableNode);
    if( DetachableNode )
      v7 = (~LOBYTE(DetachableNode->CapabilityFlags) & 8 | 0x10u) >> 3;
    else
      v7 = 1;
  }
  PpDevNodeUnlockTree(PPL_SIMPLE_READ);
  *RemovalPolicy = v7;
}

Referenced by:

IoGetDeviceProperty
PiControlGetPropertyData