Поделиться через


Функция RemoveEntryList (wdm.h)

Подпрограмма RemoveEntryList удаляет запись из вдвойне связанного списка LIST_ENTRY структур.

Синтаксис

BOOLEAN RemoveEntryList(
  [in] PLIST_ENTRY Entry
);

Параметры

[in] Entry

Указатель на структуру LIST_ENTRY , представляющую удаляемую запись.

Возвращаемое значение

RemoveEntryList возвращает значение TRUE , если после удаления указанной записи список пуст. В противном случае подпрограмма возвращает значение FALSE , чтобы указать, что результирующий список по-прежнему содержит одну или несколько записей. Дополнительные сведения см. в разделе Примечания ниже.

Комментарии

RemoveEntryList удаляет запись, задавая элемент Flink записи перед элементом Entry , чтобы он указывал на запись после элемента Entry, а элемент Blink записи после Элемента — для указания на запись перед записью.

Возвращаемое значение можно использовать для обнаружения удаления последней записи из списка. Пустой список состоит только из заголовка списка и без записей списка.

Как правило, вход указывает на запись в списке, а не на голову списка. Однако entry может указывать на голову списка, и в этом случае подпрограмма удаляет ее из списка, чтобы создать список без заголовка. Если removeEntryList используется таким образом, возвращаемое значение обычно следует игнорировать. Чтобы определить, пуст ли список, используйте подпрограмму IsListEmpty .

Сведения об использовании этой процедуры при реализации списка с удвоениями см. в разделе Singly и Doubly Linked Списки.

Вызывающие функции RemoveEntryList могут выполняться в любом IRQL. Если метод RemoveEntryList вызывается в irQL >= DISPATCH_LEVEL, хранилище для записей списка должно быть резидентным.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)
IRQL Любой уровень (см. раздел "Примечания")
Правила соответствия DDI DoubleExFreePool(storport)

См. также раздел

InitializeListHead

IsListEmpty

RemoveHeadList

RemoveTailList