NDIS_POLL función de devolución de llamada (poll.h)

Los controladores de minipuerto implementan la función de devolución de llamada NdisPoll que NDIS sondeará para recibir indicaciones y enviar finalizaciones.

Sintaxis

NDIS_POLL NdisPoll;

void() NdisPoll(
  [_In_]    void *Context,
  [_Inout_] NDIS_POLL_DATA *PollData
)
{...}

Parámetros

[_In_] Context

Puntero a la información de contexto proporcionada por el controlador al crear el objeto Poll.

[_Inout_] PollData

Puntero a una estructura NDIS_POLL_DATA que el controlador debe usar para realizar indicaciones de recepción y enviar finalizaciones. También contiene detalles sobre el número de NBL que se deben indicar.

Comentarios

Los controladores de minipuerto registran la devolución de llamada NdisPoll durante la inicialización del adaptador de minipuerto. Los controladores especifican un punto de entrada para la función NdisPoll en el parámetro PollHandler de la estructura NDIS_POLL_CHARACTERISTICS antes de llamar a NdisRegisterPoll.

NDIS invocará primero la devolución de llamada NdisPoll cuando el controlador llame a NdisRequestPoll. NDIS seguirá invocando NdisPoll mientras el controlador está avanzando en las indicaciones de recepción o las finalizaciones de transmisión.

La devolución de llamada NdisPoll se puede invocar tanto en PASSIVE_LEVEL como en DISPATCH_LEVEL IRQL. El controlador no debe realizar suposiciones sobre qué nivel será.

El controlador debe comprobar los parámetros de recepción o transmisión de la estructura de NDIS_POLL_DATA para obtener el número máximo de NBL que puede indicar o completar.

Para las indicaciones de recepción, el controlador debe:

  1. Capturar hasta el número máximo de paquetes Rx que puede indicar.
  2. Inicialice las NBL.
  3. Agréguelos a la cola NBL proporcionada por la estructura de NDIS_POLL_RECEIVE_DATA (ubicada en la estructura NDIS_POLL_DATA del parámetro PollData de NdisPoll).
  4. Salga de la devolución de llamada.

Para las finalizaciones de transmisión, el controlador debe:

  1. Capturar hasta el número máximo de paquetes Tx que puede completar.
  2. Complete las NBL.
  3. Agréguelos a la cola NBL proporcionada por la estructura de NDIS_POLL_TRANSMIT_DATA (ubicada en la estructura NDIS_POLL_DATA del parámetro PollData de NdisPoll).
  4. Salga de la devolución de llamada.

El controlador no debe habilitar la interrupción del objeto Poll antes de salir de la función NdisPoll . NDIS seguirá sondeando al controlador hasta que evalúe que no se está realizando ningún progreso hacia delante. En este momento, NDIS dejará de sondear y pedirá al controlador que vuelva a habilitar la interrupción invocando la devolución de llamada NdisSetPollNotification .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 11
Servidor mínimo compatible Windows Server 2022
Encabezado poll.h (include ndis.h)
IRQL <= DISPATCH_LEVEL

Consulte también

NdisSetPollNotification

NDIS_POLL_CHARACTERISTICS

NDIS_POLL_DATA

NDIS_POLL_RECEIVE_DATA

NdisRegisterPoll

NdisRequestPoll