PipDependencyGraphDepthFirstSearch

UINT8 __stdcall PipDependencyGraphDepthFirstSearch(
        _PNP_DEPENDENCY_NODE *StartNode,
        _PNP_DEPENDENCY_NODE *GoalNode,
        UINT64 *PathLength,
        UINT64 *DependencyTypes){
  _PNP_DEPENDENCY_NODE *v7; 
  _PNP_DEPENDENCY_NODE *v8; 
  _PNP_DEPENDENCY_NODE v10; 
  _PNP_DEPENDENCY_NODE *v11; 
  _PNP_DEPENDENCY_NODE *v12; 

  *(_DWORD *)PathLength = 0;
  *(_DWORD *)DependencyTypes = 0;
  if( StartNode != GoalNode )
  {
    v7 = StartNode + 4;
    v8 = (_PNP_DEPENDENCY_NODE *)*((_QWORD *)StartNode + 2);
    do
    {
      if( v8 == v7 )
        return 0;
      v11 = v8;
      v12 = (_PNP_DEPENDENCY_NODE *)*((_QWORD *)v8 + 4);
      v8 = *(_PNP_DEPENDENCY_NODE **)v8;
    }
    while( !PipDependencyGraphDepthFirstSearch(v12, GoalNode, PathLength, DependencyTypes) );
    v10 = v11[12];
    ++*(_DWORD *)PathLength;
    *(_DWORD *)DependencyTypes = v10;
  }
  return 1;
}

Referenced by:

PipDependencyGraphDepthFirstSearch
PipFindDependencyNodePath