Partilhar via


Macro NdisInterlockedRemoveHeadList (ndis.h)

A função NdisInterlockedRemoveHeadList remove uma entrada, geralmente um pacote, do cabeçalho de uma lista duplamente vinculada para que o acesso à lista seja sincronizado de maneira segura para vários processadores.

Sintaxe

PLIST_ENTRY NdisInterlockedRemoveHeadList(
  [in]  _ListHead,
  [in]  _SpinLock
);

Parâmetros

[in] _ListHead

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

[in] _SpinLock

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

Valor de retorno

NdisInterlockedRemoveHeadList retorna um ponteiro para a estrutura de LIST_ENTRY removida da lista. Se a lista estiver vazia, a rotina retornará NULL .

Observações

Antes de chamar qualquer NdisInterlocked.. Listar função, 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.

Antes de chamar NdisInterlockedRemoveHeadList, as entradas são enfileiradas com uma ou mais chamadas para o NdisInterlockedInsert.. Listar funções de.

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

NdisInterlockedRemoveHeadList eleva o IRQL para DISPATCH_LEVEL quando adquire o bloqueio de rotação determinado e restaura o IRQL original antes de retornar o controle. Consequentemente, qualquer função de driver que chame NdisInterlockedRemoveHeadList 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 NdisInterlockedRemoveHeadList for chamado em IRQL >= DISPATCH_LEVEL, o armazenamento do parâmetro ListHead deverá ser residente.

Requisitos

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

Consulte também

CONTAINING_RECORD

NdisAllocateSpinLock

NdisInitializeListHead

NdisInterlockedInsertHeadList NdisInterlockedInsertTailList