NDIS_TIMER_FUNCTION Rückruffunktion (ndis.h)

Die NdisTimerFunction-Rückruffunktion wird von NDIS aufgerufen, nachdem ein Treiber einen einmaligen oder periodischen Timer festgelegt hat, wenn ein Timer ausgelöst wird.

Hinweis Sie müssen die Funktion mit dem NDIS_TIMER_FUNCTION-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

NDIS_TIMER_FUNCTION NdisTimerFunction;

void NdisTimerFunction(
  [in] PVOID SystemSpecific1,
  [in] PVOID FunctionContext,
  [in] PVOID SystemSpecific2,
  [in] PVOID SystemSpecific3
)
{...}

Parameter

[in] SystemSpecific1

Ein Zeiger auf einen systemspezifischen Wert, der für die Systemverwendung reserviert ist.

[in] FunctionContext

Ein Zeiger auf einen vom Treiber bereitgestellten Kontextbereich, den der Treiber an die NdisSetTimerObject-Funktion übergeben hat. Wenn der FunctionContext-Parameter von NdisSetTimerObjectNULL lautet, verwendet NDIS den Standardwert, den der im angegebenen Treiber angegeben hat. NDIS_TIMER_CHARACTERISTICS Struktur. Der Treiber hat die Struktur an die NdisAllocateTimerObject-Funktion übergeben, um das zugeordnete Timerobjekt zu initialisieren.

[in] SystemSpecific2

Ein Zeiger auf einen systemspezifischen Wert, der für die Systemverwendung reserviert ist.

[in] SystemSpecific3

Ein Zeiger auf einen systemspezifischen Wert, der für die Systemverwendung reserviert ist.

Rückgabewert

Keine

Bemerkungen

Jeder NDIS-Treiber kann über eine oder mehrere NdisTimerFunction-Rückruffunktionen verfügen. Jedem solchen NdisTimerFunction-Rückruf muss ein anderes vom Treiber zugewiesenes und initialisiertes Timerobjekt zugeordnet sein.

Der Treiber initialisiert ein vom Treiber zugewiesenes Timerobjekt, indem er die NdisAllocateTimerObject-Funktion .

Ein nachfolgender Aufruf der NdisSetTimerObject-Funktion bewirkt, dass der NdisTimerFunction-Rückruf , der dem Timerobjekt zugeordnet ist, nach einem angegebenen Intervall oder in regelmäßigen Abständen ausgeführt wird.

Um Aufrufe von NdisTimerFunction abzubrechen, rufen Sie die Funktion NdisCancelTimerObject auf . NDIS ruft möglicherweise weiterhin NdisTimerFunction auf, wenn das Timeout vor dem Aufruf von NdisCancelTimerObject bereits abgelaufen ist.

Wenn ein NdisTimerFunction-Rückruf Ressourcen mit anderen Treiberfunktionen teilt, sollte der Treiber den Zugriff auf diese Ressourcen mit einer Spinsperre synchronisieren.

Beispiele

Um eine NdisTimerFunction-Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine NdisTimerFunction-Funktion mit dem Namen "MyTimerCallback" zu definieren, verwenden Sie den typ NDIS_TIMER_FUNCTION , wie in diesem Codebeispiel gezeigt:

NDIS_TIMER_FUNCTION MyTimerCallback;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyTimerCallback(
    PVOID  SystemSpecific1,
    PVOID  FunctionContext,
    PVOID  SystemSpecific2,
    PVOID  SystemSpecific3
    )
  {...}

Der NDIS_TIMER_FUNCTION Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den NDIS_TIMER_FUNCTION Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL DISPATCH_LEVEL

Weitere Informationen

Initialisieren von NDIS-Timern

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject

NdisCancelTimerObject

NdisSetTimerObject

Wartungstimer

Festlegen und Löschen von Timern