Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 565 of file rangelist.c.
{ PRTL_RANGE_ENTRY Previous; PRTL_RANGE_ENTRY Current; PLIST_ENTRY Entry; NTSTATUS Status; /* Don't invert an empty range list */ if (IsListEmpty(&RangeList->ListHead)) { return STATUS_SUCCESS; } /* Add leading and intermediate ranges */ Previous = NULL; Entry = RangeList->ListHead.Flink; while (Entry != &RangeList->ListHead) { Current = CONTAINING_RECORD(Entry, RTL_RANGE_ENTRY, Entry); if (Previous == NULL) { if (Current->Range.Start != (ULONGLONG)0) { Status = RtlAddRange(InvertedRangeList, (ULONGLONG)0, Current->Range.Start - 1, 0, 0, NULL, NULL); if (!NT_SUCCESS(Status)) return Status; } } else { if (Previous->Range.End + 1 != Current->Range.Start) { Status = RtlAddRange(InvertedRangeList, Previous->Range.End + 1, Current->Range.Start - 1, 0, 0, NULL, NULL); if (!NT_SUCCESS(Status)) return Status; } } Previous = Current; Entry = Entry->Flink; } /* Add trailing range */ if (Previous->Range.End + 1 != (ULONGLONG)-1) { Status = RtlAddRange(InvertedRangeList, Previous->Range.End + 1, (ULONGLONG)-1, 0, 0, NULL, NULL); if (!NT_SUCCESS(Status)) return Status; } return STATUS_SUCCESS; }