PipConvertResolutionsToReservations

NTSTATUS __stdcall PipConvertResolutionsToReservations(PNP_DEPENDENCY_NODE *ProviderNode){
  NTSTATUS v2; 
  PNP_DEPENDENCY_NODE *v3; 
  PNP_DEPENDENCY_NODE *v4; 
  PNP_DEPENDENCY_NODE *v6; 
  PNP_DEPENDENCY_NODE *v7; 
  PNP_DEPENDENCY_NODE *v8; 
  PNP_BINDING_REQUEST *v9; 
  __int64 v10; 
  __int128 Dependent; 

  Dependent = 0i64;
  if( !ProviderNode )
    return -1073741811;
  v2 = 0;
  PipDeleteBindingIds(ProviderNode);
  v3 = ProviderNode + 8;
  v4 = (PNP_DEPENDENCY_NODE *)*((_QWORD *)ProviderNode + 4);
  while( v4 != v3 )
  {
    v6 = v4;
    v4 = *(PNP_DEPENDENCY_NODE **)v4;
    if( !*((_BYTE *)v6 + 56) )
    {
      v7 = (PNP_DEPENDENCY_NODE *)*((_QWORD *)v6 + 5);
      while( v7 != v6 + 10 )
      {
        v8 = v7;
        v7 = *(PNP_DEPENDENCY_NODE **)v7;
        v9 = v8 + 4;
        if( *v9 == 1 )
        {
          v10 = *((_QWORD *)v6 + 3);
          LODWORD(Dependent) = 0;
          *((_QWORD *)&Dependent + 1) = *(_QWORD *)(v10 + 48);
          v2 = PipSetDependency((PNP_BINDING_RESOLUTION *)&Dependent, v9);
        }
      }
      *((_BYTE *)v6 + 56) = 1;
    }
  }
  return v2;
}

Referenced by:

PipDeleteAllDependencyRelations
PnpSurpriseRemoveLockedDeviceNode