Макрос NdisInterlockedPushEntrySList (ndis.h)
Функция NdisInterlockedPushEntrySList вставляет запись в голову последовательного связанного списка.
Синтаксис
void NdisInterlockedPushEntrySList(
SListHead,
SListEntry,
[in] Lock
);
Параметры
SListHead
Указатель на голову уже инициализированного последовательного списка, в который необходимо вставить указанную запись.
SListEntry
Указатель на вставленную запись.
[in] Lock
Указатель на блокировку спина, предоставляемую вызывающим абонентом, не удерживаемую вызывающим абонентом.
Возвращаемое значение
Никакой
Замечания
Перед первоначальным вызовом функции NdisInterlockedPushEntrySList драйверу необходимо инициализировать головку списка с помощью функции функция NdisInitializeSListHead.
Драйвер не должен держать заданный блокировку при вызове NdisInterlockedPushEntrySList. При необходимости драйвер должен вызвать функцию NdisReleaseSpinLock перед вызовом NdisInterlockPushEntrySList. NdisInterlockedPushEntrySList должен получить эту блокировку перед вставкой ListEntry в начале списка, чтобы убедиться, что эта операция обрабатывается в многопроцессорном режиме.
Вызывающий объект должен предоставить резидентное хранилище для блокировки, который необходимо инициализировать с помощью функции NdisAllocateSpinLock перед первоначальным вызовом любого NdisInterlock.. Подпрограмма SList.
Драйверы, которые повторяют операции ввода-вывода, должны использовать вдвойне связанную очередь и NdisInterlockedInsert/Remove.. Перечисление функций вместо S-List.
Если NdisInterlockedPushEntrySList вызывается в IRQL >= DISPATCH_LEVEL, хранилище для параметра ListHead и записи списка должны быть резидентными.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. NdisInterlockedPushEntrySList (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisInterlockedPushEntrySList (NDIS 5.1)) в Windows XP. |
целевая платформа | Настольный |
заголовка | ndis.h (include Ndis.h) |
IRQL | Любой уровень |