Compartilhar via


Macro NdisInterlockedInsertTailList (ndis.h)

A função NdisInterlockedInsertTailList insere uma entrada, geralmente um pacote, na parte final de uma lista duplamente vinculada para que o acesso à lista seja sincronizado de maneira segura para vários processadores.

Sintaxe

void NdisInterlockedInsertTailList(
  [in]  _ListHead,
  [in]  _ListEntry,
  [in]  _SpinLock
);

Parâmetros

[in] _ListHead

Um ponteiro para o cabeçalho da lista duplamente vinculada na qual uma entrada deve ser inserida.

[in] _ListEntry

Um ponteiro para a entrada a ser inserida no final da lista.

[in] _SpinLock

Um ponteiro para um bloqueio de rotação fornecido pelo chamador, usado para sincronizar o acesso à lista.

Retornar valor

Nenhum

Comentários

Antes de chamar NdisInterlockedInsertTailList, um driver deve inicializar a variável em ListHead com a função NdisInitializeListHead e a variável em SpinLock com a função NdisAllocateSpinLock . O driver também deve fornecer armazenamento residente para essas variáveis e para sua fila interna.

O bloqueio de rotação fornecido pelo chamador impede que qualquer outra função acesse a fila interna do driver enquanto NdisInterlockedInsertTailList está inserindo a entrada fornecida, mesmo quando o driver está em execução em um computador multiprocessador.

NdisInterlockedInsertTailList eleva o IRQL para DISPATCH_LEVEL quando ele adquire o bloqueio de rotação especificado e restaura o IRQL original antes de retornar o controle. Consequentemente, qualquer função de driver que chame NdisInterlockedInsertTailList não pode ser um código paginável.

Para converter um valor retornado de volta para o endereço da entrada inserida, um driver pode usar a macro CONTAINING_RECORD .

Se NdisInterlockedInsertTailList for chamado em IRQL >= DISPATCH_LEVEL, o armazenamento para o parâmetro ListHead e as entradas de lista deverão ser residentes.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisInterlockedInsertTailList (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisInterlockedInsertTailList (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL Qualquer nível

Confira também

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedRemoveHeadList