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

Подпрограмма ExInterlockedPopEntryList атомарно удаляет запись из начала отдельно связанного списка SINGLE_LIST_ENTRY структур.

Синтаксис

PSINGLE_LIST_ENTRY ExInterlockedPopEntryList(
  [in, out] PSINGLE_LIST_ENTRY ListHead,
  [in, out] PKSPIN_LOCK        Lock
);

Параметры

[in, out] ListHead

Указатель на структуру SINGLE_LIST_ENTRY , которая служит заголовком списка. Хранилище для ListHead должно находиться во всех списках IRQL.

[in, out] Lock

Указатель на структуру KSPIN_LOCK , которая служит в качестве блокировки спина, используемой для синхронизации доступа к списку. Хранилище для спиновой блокировки должно быть резидентным и должно быть инициализировано путем вызова KeInitializeSpinLock. Эту блокировку спина необходимо использовать только с подпрограммами ExInterlockedXxxList .

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

ExInterlockedPopEntryList возвращает указатель на структуру SINGLE_LIST_ENTRY , удаленную из списка. Если список был пустым, подпрограмма возвращает значение NULL.

Комментарии

ExInterlockedPopEntryList выполняет ту же операцию, что и PopEntryList, но атомарно. Не смешивайте атомарные и неатомные вызовы в одном списке.

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

Подпрограмму ExInterlockedPopEntryList можно вызвать в любом irQL. Хранилище для параметра ListHead должно быть резидентным во всех списках IRQL.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень (см. раздел "Примечания")

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

ExInitializesListHead

ExInterlockedPopEntrySList

ExInterlockedPushEntryList

KeInitializeSpinLock

PopEntryList