Макрос NdisInterlockedInsertTailList (ndis.h)
Функция NdisInterlockedInsertTailList вставляет запись , как правило, пакет в хвосте двусторонне связанного списка, чтобы доступ к списку синхронизирован в многопроцессорном безопасном способе.
Синтаксис
void NdisInterlockedInsertTailList(
[in] _ListHead,
[in] _ListEntry,
[in] _SpinLock
);
Параметры
[in] _ListHead
Указатель на голову вдвойне связанного списка, в который должна быть вставлена запись.
[in] _ListEntry
Указатель на запись, вставленную в конце списка.
[in] _SpinLock
Указатель на блокировку спина, предоставляемую вызывающим абонентом, которая используется для синхронизации доступа к списку.
Возвращаемое значение
Никакой
Замечания
Перед вызовом NdisInterlockedInsertTailListдрайвер должен инициализировать переменную в ListHead с помощью функции NdisInitializeListHead и переменной SpinLock с помощью функции NdisAllocateSpinLock. Драйвер также должен предоставлять хранилище резидентов для этих переменных и для внутренней очереди.
Вызывающая блокировка спина предотвращает доступ к внутренней очереди драйвера, пока NdisInterlockedInsertTailList вставляет указанную запись, даже если драйвер работает на многопроцессорном компьютере.
NdisInterlockedInsertTailList вызывает IRQL для DISPATCH_LEVEL при получении заданной блокировки спина и восстановлении исходного IRQL перед возвратом элемента управления. Следовательно, любая функция драйвера, которая вызывает NdisInterlockedInsertTailList не может быть страницируемым кодом.
Чтобы преобразовать возвращаемое значение обратно в адрес вставленной записи, драйвер может использовать макрос CONTAINING_RECORD.
Если NdisInterlockedInsertTailList вызывается в IRQL >= DISPATCH_LEVEL, хранилище для параметра ListHead и записи списка должны быть резидентными.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. NdisInterlockedInsertTailList (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisInterlockedInsertTailList (NDIS 5.1)) в Windows XP. |
целевая платформа | Всеобщий |
заголовка | ndis.h (include Ndis.h) |
библиотеки | Ndis.lib |
IRQL | Любой уровень |