NDIS_PD_ALLOCATE_COUNTER función de devolución de llamada (ndis.h)

La plataforma PacketDirect (PD) llama a la función NdisPDAllocateCounter del controlador de miniporte compatible con PD para asignar un objeto counter. Hay tres tipos de contadores:

  • Los contadores de cola de recepción se usan para realizar un seguimiento de la actividad de la cola de recepción.
  • Los contadores de cola de transmisión se usan para realizar el seguimiento de la actividad de la cola de transmisión.
  • Los contadores de filtro se usan para realizar el seguimiento de la actividad de coincidencia de filtros.
Nota Debe declarar la función mediante el tipo NDIS_PD_ALLOCATE_COUNTER . Para obtener más información, consulte la sección Ejemplos siguientes.
 

Sintaxis

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

Identificador de proveedor que identifica el objeto de proveedor del controlador de minipuerto compatible con PD.

[in] CounterParameters

Estructura NDIS_PD_COUNTER_PARAMETERS que especifica información como el tipo de contador.

[out] CounterHandle

Puntero a una variable de identificador de contador asignada por el controlador. Si la asignación de contadores se realiza correctamente, el controlador de minipuerto devuelve un identificador al contador recién asignado en esta variable.

Valor devuelto

NdisPDAllocateCounter puede devolver uno de los siguientes valores de estado:

Código devuelto Descripción
STATUS_SUCCESS
El controlador de minipuerto asignó correctamente el contador y devolvió un identificador en el parámetro CounterHandle .
STATUS_INSUFFICIENT_RESOURCES
Error en la asignación debido a recursos insuficientes.

Comentarios

El mismo objeto de contador se puede asociar a varios objetos de cola o filtro del mismo tipo que el contador. Por ejemplo, si hay 5 colas de recepción (RQ1 a RQ5) y 2 contadores de recepción (RC1 y RC2), el contador de recepción RC1 podría asociarse con las colas de recepción RQ1, RQ2, RQ3 y el contador de recepción RC2 podrían asociarse con las colas de recepción RQ4 y RQ5.

Ejemplos

Para definir una función NdisPDAllocateCounter , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una función NdisPDAllocateCounter denominada "MyPDAllocateCounter", use el tipo NDIS_PD_ALLOCATE_COUNTER como se muestra en este ejemplo de código:

NDIS_PD_ALLOCATE_COUNTER MyPDAllocateCounter;

A continuación, implemente la función de la siguiente manera:

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

El tipo de función NDIS_PD_ALLOCATE_COUNTER se define en el archivo de encabezado Ntddndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función NDIS_PD_ALLOCATE_COUNTER en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Plataforma de destino Windows
Encabezado ndis.h
IRQL PASSIVE_LEVEL

Consulte también

NDIS_PD_COUNTER_PARAMETERS

NdisPDFreeCounter