HalpDmaRemoveFromEmergencyLogicalAddressQueue
CHAR __stdcall HalpDmaRemoveFromEmergencyLogicalAddressQueue(INT64 a1, _XSTATE_CONFIGURATION *a2){
UINT64 *v2;
CHAR v4;
_XSTATE_CONFIGURATION **v5;
unsigned __int64 v6;
_XSTATE_CONFIGURATION *v7;
_XSTATE_CONFIGURATION **EnabledFeatures;
_XSTATE_CONFIGURATION **EnabledVolatileFeatures;
v2 = (UINT64 *)(a1 + 560);
v4 = 0;
v5 = (_XSTATE_CONFIGURATION **)(a1 + 568);
v6 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 560));
v7 = *v5;
if( *v5 != (_XSTATE_CONFIGURATION *)v5 )
{
while( 1 )
{
EnabledFeatures = (_XSTATE_CONFIGURATION **)v7->EnabledFeatures;
if( v7 == a2 )
break;
v7 = (_XSTATE_CONFIGURATION *)v7->EnabledFeatures;
if( EnabledFeatures == v5 )
goto LABEL_4;
}
v4 = 1;
EnabledVolatileFeatures = (_XSTATE_CONFIGURATION **)v7->EnabledVolatileFeatures;
if( EnabledFeatures[1] != v7 || *EnabledVolatileFeatures != v7 )
__fastfail(3u);
*EnabledVolatileFeatures = (_XSTATE_CONFIGURATION *)EnabledFeatures;
EnabledFeatures[1] = (_XSTATE_CONFIGURATION *)EnabledVolatileFeatures;
}
LABEL_4:
KxReleaseSpinLock(v2);
__writecr8(v6);
return v4;
}Referenced by:
HalCancelAdapterChannel
HalCancelAdapterChannelThin
HalpAllocateDmaResourcesInternal