IoDiagTraceDirectedDripsCandidateDevices
_LIST_ENTRY *__stdcall IoDiagTraceDirectedDripsCandidateDevices(){
_LIST_ENTRY *Flink;
_LIST_ENTRY *result;
signed __int32 Blink;
signed __int32 v3;
Flink = (_LIST_ENTRY *)*(&PnpReplaceEvent + 831);
for( result = *(_LIST_ENTRY **)(*(&PnpReplaceEvent + 831) + 8i64); result; result = result->Blink )
Flink = result;
while( Flink != (_LIST_ENTRY *)*(&PnpReplaceEvent + 831) )
{
_m_prefetchw(&Flink[18].Blink);
Blink = (signed __int32)Flink[18].Blink;
do
{
v3 = Blink;
Blink = _InterlockedCompareExchange((volatile signed __int32 *)&Flink[18].Blink, Blink, Blink);
}
while( v3 != Blink );
if( (Blink & 0x100) != 0 )
PoDiagTraceDirectedDripsCandidateDevice();
result = Flink->Flink;
if( Flink->Flink )
{
do
{
Flink = result;
result = result->Blink;
}
while( result );
}
else
{
Flink = Flink[1].Flink;
}
}
return result;
}Referenced by:
PopDirectedDripsDiagTraceNotifyDevices