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.
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 |
---|---|
|
El controlador de minipuerto asignó correctamente el contador y devolvió un identificador en el parámetro CounterHandle . |
|
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 |