Функция 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 | Любой уровень (см. раздел "Примечания") |