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

A plataforma PacketDirect (PD) chama a função NdisPDAllocateCounter de um driver de miniporta compatível com PD para alocar um objeto de contador. Há três tipos de contadores:

  • Os contadores de fila de recebimento são usados para acompanhar a atividade de fila de recebimento.
  • Os contadores de fila de transmissão são usados para acompanhar a atividade da fila de transmissão.
  • Os contadores de filtro são usados para acompanhar a atividade de correspondência de filtro.
Nota Você deve declarar a função usando o tipo NDIS_PD_ALLOCATE_COUNTER . Para obter mais informações, consulte a seção Exemplos a seguir.
 

Sintaxe

NDIS_PD_ALLOCATE_COUNTER NdisPdAllocateCounter;

NTSTATUS() NdisPdAllocateCounter(
  [in]  NDIS_PD_PROVIDER_HANDLE ProviderHandle,
  [in]  const NDIS_PD_COUNTER_PARAMETERS *CounterParameters,
  [out] NDIS_PD_COUNTER_HANDLE *CounterHandle
)
{...}

Parâmetros

[in] ProviderHandle

Um identificador de provedor que identifica o objeto de provedor do driver de miniporta compatível com PD.

[in] CounterParameters

Uma estrutura NDIS_PD_COUNTER_PARAMETERS que especifica informações como o tipo de contador.

[out] CounterHandle

Um ponteiro para uma variável de identificador de contador alocada por driver. Se a alocação do contador for bem-sucedida, o driver de miniporto retornará um identificador para o contador recém-alocado nessa variável.

Retornar valor

NdisPDAllocateCounter pode retornar um dos seguintes valores de status:

Código de retorno Descrição
STATUS_SUCCESS
O driver de miniporta alocou com êxito o contador e retornou um identificador no parâmetro CounterHandle .
STATUS_INSUFFICIENT_RESOURCES
A alocação falhou devido a recursos insuficientes.

Comentários

O mesmo objeto de contador pode ser associado a vários objetos de fila ou filtro do mesmo tipo que o contador. Por exemplo, se houver 5 filas de recebimento (RQ1 a RQ5) e 2 contadores de recebimento (RC1 e RC2), o contador de recebimento RC1 poderá ser associado às filas de recebimento RQ1, RQ2, RQ3 e o contador de recebimento RC2 poderão ser associados às filas de recebimento RQ4 e RQ5.

Exemplos

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

NDIS_PD_ALLOCATE_COUNTER MyPDAllocateCounter;

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

_Use_decl_annotations_
NTSTATUS
 MyPDAllocateCounter(
    NDIS_PD_PROVIDER_HANDLE  ProviderHandle,
    CONST NDIS_PD_COUNTER_PARAMETERS*  CounterParameters,
    NDIS_PD_COUNTER_HANDLE*  CounterHandle
    )
  {...}

O tipo de função NDIS_PD_ALLOCATE_COUNTER é 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_ALLOCATE_COUNTER 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 PASSIVE_LEVEL

Confira também

NDIS_PD_COUNTER_PARAMETERS

NdisPDFreeCounter