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

Подпрограмма ExInterlockedPopEntrySList атомарным образом удаляет первую запись из последовательно связанного списка.

Синтаксис

NTKERNELAPI
PSLIST_ENTRY
FASTCALL
ExInterlockedPopEntrySList (
    _Inout_ PSLIST_HEADER ListHead,
    _Inout_opt_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock
    );

Параметры

[in, out] ListHead

Указатель на структуру SLIST_HEADER , которая служит заголовком для последовательно связанного списка. ListHead должен быть инициализирован путем вызова ExInitializeSListHead.

[in, out] Lock

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

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

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

Комментарии

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

В Windows 2000 драйверы должны использовать параметр -D_WIN2K_COMPAT_SLIST_USAGE для успешной компоновки кода, использующего ExInterlockedPopEntrySList.

ExInterlockedPopEntrySList можно вызывать в любом IRQL. Хранилище для параметра ListHead должно находиться во всех irQLs.

Требования

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

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

ExInitializeSListHead

ExInterlockedPushEntrySList

ExInterlockedRemoveHeadList

ExQueryDepthSList

KeInitializeSpinLock