PiHotSwapGetDefaultBusRemovalPolicy
VOID __stdcall PiHotSwapGetDefaultBusRemovalPolicy(_DEVICE_NODE *DeviceNode, _DEVICE_REMOVAL_POLICY *RemovalPolicy){
_DEVICE_REMOVAL_POLICY v4;
struct _DEVICE_NODE_IOMMU_EXTENSION *IommuExtension;
_DEVICE_NODE *Parent;
if( DeviceNode->InstancePath.Length <= 8u || wcsnicmp(DeviceNode->InstancePath.Buffer, L"USB\\", 4u) )
{
v4 = RemovalPolicySuggestSurpriseRemoval;
if( (DeviceNode->InstancePath.Length <= 0xAu
|| wcsnicmp(DeviceNode->InstancePath.Buffer, L"1394\\", 5u)
&& (DeviceNode->InstancePath.Length <= 0xAu || wcsnicmp(DeviceNode->InstancePath.Buffer, L"SBP2\\", 5u)))
&& (DeviceNode->InstancePath.Length <= 0xEu || wcsnicmp(DeviceNode->InstancePath.Buffer, L"PCMCIA\\", 7u)) )
{
if( DeviceNode->InstancePath.Length <= 8u
|| wcsnicmp(DeviceNode->InstancePath.Buffer, L"PCI\\", 4u)
|| (Parent = DeviceNode->Parent, Parent->ServiceName.Length != 12)
|| wcsicmp(Parent->ServiceName.Buffer, L"PCMCIA") )
{
IommuExtension = DeviceNode->IommuExtension;
if( !IommuExtension || (*((_BYTE *)IommuExtension + 16) & 4) == 0 )
v4 = 5 - (DeviceNode->Parent->RemovalPolicy != 5);
}
}
}
else
{
v4 = RemovalPolicySuggestSurpriseRemoval;
}
*RemovalPolicy = v4;
}Referenced by:
PpHotSwapUpdateRemovalPolicy