Макрос NdisInitializeSListHead (ndis.h)

Функция NdisInitializeSListHead инициализирует голову последовательного, взаимоблокированного списка, связанного по отдельности.

Синтаксис

void NdisInitializeSListHead(
  [in]  SListHead
);

Параметры

[in] SListHead

Указатель на инициализированную головку списка, предоставляемую вызывающей стороны, которая должна находиться в постоянной памяти. Структура должна быть выровнена по 16 байтам на 64-разрядных платформах.

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

None

Remarks

NdisInitializeSListHead с нуля инициализирует непрозрачный заголовок списка в SListHead и задает для указателя первого входа значение NULL.

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

Все записи в S-List должны быть не загружены.

Любой драйвер, использующий S-List, должен обеспечить блокировку спина для NdisInterlockedPushEntrySList иФункции NdisInterlockedPopEntrySList. Перед первоначальным вызовом любой из этих функций драйвер должен инициализировать блокировку спина с помощью функции NdisAllocateSpinLock . Чтобы предотвратить взаимоблокировку, драйвер не должен удерживать эту спиновую блокировку при последующих вызовах NdisInterlockedPushEntrySList и NdisInterlockedPopEntrySList.

Чтобы управлять пулом записей фиксированного размера из непагрегированных памяти, рассмотрите возможность использования списка lookaside вместо S-List.

Драйверы, которые повторяют операции ввода-вывода, должны использовать вдвойне связанную очередь и функции NdisInterlockedInsertHeadList, NdisInterlockedInsertTailList и NdisInterlockedRemoveHeadList , а не S-List.

Если NdisInitializeSListHead вызывается по адресу IRQL >= DISPATCH_LEVEL, хранилище для параметра SListHead должно быть резидентным.

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisInitializeSListHead (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisInitializeSListHead (NDIS 5.1)) в Windows XP.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
IRQL Любой уровень

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

NdisInitializeNPagedLookasideList

NdisInterlockedPopEntrySList

NdisInterlockedPushEntrySList

NdisQueryDepthSList

NdisQueueIoWorkItem