Função NdisQueueIoWorkItem (ndis.h)

Os drivers NDIS chamam a função NdisQueueIoWorkItem para enfileirar um item de trabalho.

Sintaxe

void NdisQueueIoWorkItem(
  [in] NDIS_HANDLE              NdisIoWorkItemHandle,
  [in] NDIS_IO_WORKITEM_ROUTINE Routine,
  [in] PVOID                    WorkItemContext
);

Parâmetros

[in] NdisIoWorkItemHandle

Um identificador para uma estrutura de IO_WORKITEM privada que foi retornada por uma chamada anterior para o Função NdisAllocateIoWorkItem .

[in] Routine

O ponto de entrada para a função que o NDIS chama para processar o item de trabalho. O NDIS chama essa rotina no contexto de um thread do sistema.

Nota Você deve declarar a função usando o tipo NDIS_IO_WORKITEM_FUNCTION (não NDIS_IO_WORKITEM_ROUTINE). Para obter mais informações, consulte a seção Exemplos a seguir.
 
A rotina inclui os seguintes parâmetros de entrada:

WorkItemContext

Um ponteiro para a área de contexto que o driver passou para o parâmetro WorkItemContext de NdisQueueIoWorkItem.

NdisIoWorkItemHandle

Um identificador para uma estrutura de NDIS_IO_WORKITEM privada que foi retornada por uma chamada anterior para o Função NdisAllocateIoWorkItem .

[in] WorkItemContext

Um ponteiro para uma área de contexto fornecida pelo chamador que o NDIS passa para a rotina de retorno de chamada. WorkItemContext pode ser qualquer dado especificado pelo chamador que o driver requer para gerenciar o item de trabalho.

Retornar valor

Nenhum

Comentários

NdisQueueIoWorkItem chama IoQueueWorkItem para enfileirar um item de trabalho. Os itens de trabalho do NDIS usam o tipo de fila CriticalWorkQueue .

A rotina de retorno de chamada fornecida pelo chamador (NDIS_IO_WORKITEM_ROUTINE) é executada em um contexto de thread do sistema em IRQL = PASSIVE_LEVEL.

Essa rotina fornecida pelo chamador pode chamar a função NdisFreeIoWorkItem para recuperar o armazenamento alocado para o item de trabalho.

Exemplos

Para definir uma função de Rotina , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.

Por exemplo, para definir uma função de rotina chamada "MyWorkitemRoutine", use o tipo NDIS_IO_WORKITEM_FUNCTION conforme mostrado neste exemplo de código:

NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;

Em seguida, implemente sua função da seguinte maneira:

_Use_decl_annotations_
VOID
 MyWorkitemRoutine(
    PVOID   WorkItemContext,
    NDIS_HANDLE  NdisIoWorkItemHandle
    )
  {...}

O tipo de função NDIS_IO_WORKITEM_FUNCTION é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função NDIS_IO_WORKITEM_FUNCTION no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.

Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.0 e posterior.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI Irql_Miscellaneous_Function(ndis)

Confira também

IoQueueWorkItem

MiniportHaltEx

Itens de trabalho de E/S de NDIS

NdisAllocateIoWorkItem

NdisFreeIoWorkItem