Freigeben über


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.

Note You must declare the function by using the NDIS_TIMER_FUNCTION type. 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-war, verwendet NDIS den Standardwert, den der in der 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

Nichts

Bemerkungen

Jeder NDIS-Treiber kann eine oder mehrere NdisTimerFunction- Rückruffunktionen aufweisen. Jede solche NdisTimerFunction Rückruf muss einem anderen treiberzuweisungs- und initialisierten Timerobjekt zugeordnet sein.

Der Treiber initialisiert ein vom Treiber zugewiesenes Timerobjekt durch Aufrufen des 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 werden soll.

Rufen Sie zum Abbrechen von Aufrufen von NdisTimerFunction-die NdisCancelTimerObject--Funktion auf. NDIS ruft möglicherweise weiterhin NdisTimerFunction- auf, wenn das Timeout bereits abgelaufen ist, bevor der Aufruf an NdisCancelTimerObject.

Wenn ein NdisTimerFunction Rückruf Ressourcen für andere Treiberfunktionen freigibt, sollte der Treiber den Zugriff auf diese Ressourcen mit einer Drehsperre synchronisieren.

beispiele für

Um eine NdisTimerFunction--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine NdisTimerFunction--Funktion zu definieren, die den Namen "MyTimerCallback" hat, verwenden Sie den NDIS_TIMER_FUNCTION Typ, 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 wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp NDIS_TIMER_FUNCTION in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Fenster
Header- ndis.h (include Ndis.h)
IRQL- DISPATCH_LEVEL

Siehe auch

Initialisieren von NDIS-Zeitgebern

NDIS_TIMER_CHARACTERISTICS

NdisAllocateTimerObject-

NdisCancelTimerObject

NdisSetTimerObject-

Wartungszeitgeber

Einstellung und Löschen von Zeitgebern