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

Функция NdisInitializeListHead инициализирует вдвойне связанную очередь, поддерживаемую драйвером.

Синтаксис

void NdisInitializeListHead(
  [in]  _ListHead
);

Параметры

[in] _ListHead

Указатель на хранилище, выделенное драйвером, для головы заблокированной очереди или списка.

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

None

Remarks

NdisInitializeListHead можно вызвать из функции MiniportInitializeEx или из подпрограммы DriverEntry драйвера протокола, если драйвер помещает запросы в очередь. Однако драйверы мини-портов редко настраивают внутренние очереди, так как библиотека NDIS сериализует запросы и пакеты, отправляемые в драйверы мини-портов.

Любой драйвер NDIS, поддерживающий внутреннюю очередь, отвечает за синхронизацию доступа функций драйвера к записям в очереди. Функции NdisInterlockedXxxList гарантируют, что только одна функция драйвера может получить доступ к записям в очереди в любой момент, даже если драйвер работает на многопроцессорном компьютере, так как очередь защищена спин-блокировкой, предоставляемой вызывающим абонентом.

Для заблокированной очереди драйвер также должен предоставить несгружаемое хранилище для спин-блокировки. Он должен инициализировать спиновую блокировку с помощью функции NdisAllocateSpinLock перед передачей указателя на такую блокировку в любую из функций списка NdisInterlockedXxx.

Вызывающие NdisInitializeListHead могут выполняться в любом IRQL. Если NdisInitializeListHead вызывается по адресу IRQL >= DISPATCH_LEVEL хранилище для ListHead должно быть резидентным.

Требования

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

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

DriverEntry of NDIS Protocol Drivers

MiniportInitializeEx

NdisAllocateSpinLock

NdisInterlockedInsertHeadList NdisInterlockedInsertTailList NdisInterlockedRemoveHeadList