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 |