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