Compartilhar via


NDIS_PD_QUERY_QUEUE_DEPTH função de retorno de chamada (ndis.h)

A plataforma PacketDirect (PD) chama a função PDQueryQueueDepth de um driver de miniporta compatível com PD para retornar o número de estruturas de PD_BUFFER não processadas que são postadas na Fila.

Nota Você deve declarar a função usando o tipo NDIS_PD_QUERY_QUEUE_DEPTH . Para obter mais informações, consulte a seção Exemplos a seguir.

 

Sintaxe

NDIS_PD_QUERY_QUEUE_DEPTH NdisPdQueryQueueDepth;

VOID() NdisPdQueryQueueDepth(
  [in]  const NDIS_PD_QUEUE *Queue,
  [out] ULONG64 *Depth
)
{...}

Parâmetros

[in] Queue

Um ponteiro para uma fila de transmissão ou recebimento.

[out] Depth

Em uma fila de recebimento, esse é o número de estruturas de PD_BUFFER disponíveis para colocar pacotes de entrada. Por exemplo, se 10 buffers foram postados e 3 dos 10 já foram buscados pelo provedor para colocar pacotes de entrada, esse valor deve ser 7. Em uma fila de transmissão, esse é o número de estruturas de PD_BUFFER que o provedor ainda não obteve da fila para transmissão.

Retornar valor

Essa função de retorno de chamada não retorna um valor.

Comentários

Nota Para parceiros IHV: a capacidade de monitorar a profundidade da fila é muito importante para os clientes acessarem o acúmulo de congestionamento e tomarem medidas de precaução. Uma profundidade de fila crescente para uma fila de transmissão é um sinal de aumento do congestionamento no link de saída. Uma profundidade de fila decrescente para uma fila RX é um sinal de que o cliente não pode processar pacotes de entrada rápido o suficiente no link de entrada. Talvez os clientes precisem monitorar a profundidade da fila status com frequência (por exemplo, obter a profundidade da fila para cada postagem e operação, portanto, o custo (em ciclos de CPU) de consultar a profundidade da fila não deve ser perceptível em comparação com o custo de uma única chamada PDPostAndDrainBufferList.
 

Exemplos

Para definir uma função PDQueryQueueDepth , 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 PDQueryQueueDepth chamada "MyPDQueryQueueDepth", use o tipo NDIS_PD_QUERY_QUEUE_DEPTH conforme mostrado neste exemplo de código:

NDIS_PD_QUERY_QUEUE_DEPTH MyPDQueryQueueDepth;

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

_Use_decl_annotations_
VOID
 MyPDQueryQueueDepth(
    CONST NDIS_PD_QUEUE*  Queue,
    ULONG64*  Depth
    )
  {...}

O tipo de função NDIS_PD_QUERY_QUEUE_DEPTH é definido no arquivo de cabeçalho Ntddndis.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_PD_QUERY_QUEUE_DEPTH 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 Windows 10
Servidor mínimo com suporte Windows Server 2016
Plataforma de Destino Windows
Cabeçalho ndis.h
IRQL <= DISPATCH_LEVEL