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 |