IoDiagTraceDirectedDripsCandidateDevices
_QWORD *__stdcall IoDiagTraceDirectedDripsCandidateDevices(){
_QWORD *v0;
_QWORD *result;
signed __int32 v2;
signed __int32 v3;
v0 = IopRootDeviceNode;
for( result = (_QWORD *)*((_QWORD *)IopRootDeviceNode + 1); result; result = (_QWORD *)result[1] )
v0 = result;
while( v0 != IopRootDeviceNode )
{
_m_prefetchw(v0 + 37);
v2 = *((_DWORD *)v0 + 74);
do
{
v3 = v2;
v2 = _InterlockedCompareExchange((volatile signed __int32 *)v0 + 74, v2, v2);
}
while( v3 != v2 );
if( (v2 & 0x100) != 0 )
PoDiagTraceDirectedDripsCandidateDevice();
result = (_QWORD *)*v0;
if( *v0 )
{
do
{
v0 = result;
result = (_QWORD *)result[1];
}
while( result );
}
else
{
v0 = (_QWORD *)v0[2];
}
}
return result;
}Referenced by:
PopDirectedDripsDiagTraceNotifyDevices