MiDeleteSessionDriverProtos

VOID __stdcall MiDeleteSessionDriverProtos(_CONTROL_AREA *ControlArea){
  _SEGMENT *Segment; 
  _CONTROL_AREA *i; 
  _MI_PER_SESSION_PROTOS *SubsectionDriverProtos; 

  Segment = ControlArea->Segment;
  for( i = ControlArea + 1; i; i = *(_CONTROL_AREA **)&i->gap8[8] )
  {
    if( (i->NumberOfPfnReferences & 0x20000) == 0 )
    {
      SubsectionDriverProtos = MiGetSubsectionDriverProtos((_SUBSECTION *)i);
      if( SubsectionDriverProtos )
      {
        i->NumberOfSectionReferences = 0i64;
        SubsectionDriverProtos->Subsection = (_SUBSECTION *)i;
        MiDeletePerSessionProtos(SubsectionDriverProtos);
      }
    }
  }
  Segment->SegmentFlags.Short0 &= ~0x800u;
}

Referenced by:

MiCreateSessionDriverProtos
MiMapSystemImage