PopWakeSourceIsParent
UINT8 __stdcall PopWakeSourceIsParent(_DEVICE_NODE *WakeSourceDevNode, _UNICODE_STRING *ChildInstancePath){
_DEVICE_NODE *Child;
UINT8 v3;
_DEVICE_NODE *v6;
_DEVICE_NODE *Sibling;
_DEVICE_NODE *Parent;
Child = WakeSourceDevNode->Child;
v3 = 0;
if( Child )
{
do
{
v6 = Child;
Child = Child->Child;
}
while( Child );
while( v6->InstancePath.Length != ChildInstancePath->Length
|| wcsncmp(v6->InstancePath.Buffer, ChildInstancePath->Buffer, (unsigned __int64)v6->InstancePath.Length >> 1) )
{
Sibling = v6->Sibling;
if( v6->Sibling )
{
do
{
v6 = Sibling;
Sibling = Sibling->Child;
}
while( Sibling );
}
else
{
Parent = v6->Parent;
v6 = 0i64;
if( Parent != (_DEVICE_NODE *)*(&PnpReplaceEvent + 831) )
v6 = Parent;
if( v6 == WakeSourceDevNode )
v6 = 0i64;
}
if( !v6 )
return v3;
}
return 1;
}
return v3;
}Referenced by:
PopProcessWakeSourceWork