NDIS_POLL Rückruffunktion (poll.h)

Miniport-Treiber implementieren die NdisPoll-Rückruffunktion, die NDIS abruft, um Anzeigeanzeigen zu erhalten und Fertigstellungen zu senden.

Syntax

NDIS_POLL NdisPoll;

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

Parameter

[_In_] Context

Ein Zeiger auf die Kontextinformationen, die der Treiber beim Erstellen des Poll-Objekts bereitgestellt hat.

[_Inout_] PollData

Ein Zeiger auf eine NDIS_POLL_DATA Struktur, die der Treiber zum Ausführen von Empfangshinweisen und Senden von Fertigstellungen verwenden soll. Es enthält auch Details dazu, wie viele NBLs angegeben werden müssen.

Bemerkungen

Miniport-Treiber registrieren den NdisPoll-Rückruf während der Initialisierung des Miniportadapters. Treiber geben einen Einstiegspunkt für die NdisPoll-Funktion im PollHandler-Parameter der NDIS_POLL_CHARACTERISTICS-Struktur an, bevor NdisRegisterPoll aufgerufen wird.

NDIS ruft zuerst den NdisPoll-Rückruf auf, wenn der Treiber NdisRequestPoll aufruft. NDIS wird NdisPoll aufrufen, während der Fahrer fortschritte bei der Empfang von Hinweisen oder Übermittlung von Fertigstellungen macht.

Der NdisPoll-Rückruf kann sowohl bei PASSIVE_LEVEL als auch bei DISPATCH_LEVEL IRQL aufgerufen werden. Der Treiber sollte keine Annahmen darüber treffen, welche Ebene es sein wird.

Der Treiber muss die Empfangen - oder Übertragungsparameter der NDIS_POLL_DATA Struktur überprüfen, um die maximale Anzahl von NBLs abzurufen, die angegeben oder abgeschlossen werden kann.

Für den Empfang von Hinweisen sollte der Fahrer Folgendes ausführen:

  1. Rufen Sie bis zur maximalen Anzahl von Rx-Paketen ab, die angegeben werden können.
  2. Initialisieren Sie die NBLs.
  3. Fügen Sie sie der NBL-Warteschlange hinzu, die von der NDIS_POLL_RECEIVE_DATA Struktur bereitgestellt wird (befindet sich in der NDIS_POLL_DATA Struktur des Parameters NdisPollPollData ).
  4. Beenden Sie den Rückruf.

Für die Übertragung von Abschlussen sollte der Treiber Folgendes ausführen:

  1. Ruft bis zur maximalen Anzahl von Tx-Paketen ab, die er abschließen kann.
  2. Schließen Sie die NBLs ab.
  3. Fügen Sie sie der NBL-Warteschlange hinzu, die von der NDIS_POLL_TRANSMIT_DATA Struktur bereitgestellt wird (befindet sich in der NDIS_POLL_DATA Struktur des Parameters NdisPollPollData ).
  4. Beenden Sie den Rückruf.

Der Treiber sollte die Unterbrechung des Poll-Objekts nicht aktivieren, bevor die NdisPoll-Funktion beendet wird. NDIS wird den Treiber weiterhin abfragen, bis er bewertet, dass keine Vorwärtsfortschritte vorgenommen werden. An diesem Punkt wird NDIS die Abfrage beenden und den Treiber bitten, die Unterbrechung erneut zu aktivieren, indem er den Rückruf von NdisSetPollNotification aufruft .

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 11
Unterstützte Mindestversion (Server) Windows Server 2022
Header poll.h (include ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

NdisSetPollNotification

NDIS_POLL_CHARACTERISTICS

NDIS_POLL_DATA

NDIS_POLL_RECEIVE_DATA

NdisRegisterPoll

NdisRequestPoll