Auf Englisch lesen

Freigeben über


NdisQueueIoWorkItem-Funktion (ndis.h)

NDIS-Treiber rufen die NdisQueueIoWorkItem--Funktion auf, um eine Arbeitsaufgabe in die Warteschlange zu stellen.

Syntax

void NdisQueueIoWorkItem(
  [in] NDIS_HANDLE              NdisIoWorkItemHandle,
  [in] NDIS_IO_WORKITEM_ROUTINE Routine,
  [in] PVOID                    WorkItemContext
);

Parameter

[in] NdisIoWorkItemHandle

Ein Handle für eine private IO_WORKITEM-Struktur, die von einem vorherigen Aufruf des NdisAllocateIoWorkItem Funktion.

[in] Routine

Der Einstiegspunkt zu der Funktion, die NDIS aufruft, um die Arbeitsaufgabe zu verarbeiten. NDIS ruft diese Routine im Kontext eines Systemthreads auf.

Hinweis Sie müssen die Funktion mithilfe des typs NDIS_IO_WORKITEM_FUNCTION deklarieren (nicht NDIS_IO_WORKITEM_ROUTINE). Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 
Die Routine enthält die folgenden Eingabeparameter:

WorkItemContext

Ein Zeiger auf den Kontextbereich, den der Treiber an den WorkItemContext Parameter von NdisQueueIoWorkItemübergeben hat.

NdisIoWorkItemHandle

Ein Handle für eine private NDIS_IO_WORKITEM-Struktur, die von einem vorherigen Aufruf an den NdisAllocateIoWorkItem Funktion.

[in] WorkItemContext

Ein Zeiger auf einen vom Aufrufer bereitgestellten Kontextbereich, den NDIS an die Rückrufroutine durchgibt. WorkItemContext- kann es sich um alle aufruferspezifischen Daten sein, die der Treiber zum Verwalten der Arbeitsaufgabe benötigt.

Rückgabewert

Nichts

Bemerkungen

NdisQueueIoWorkItem Aufrufe IoQueueWorkItem-, um eine Arbeitsaufgabe in die Warteschlange zu stellen. NDIS-Arbeitsaufgaben verwenden den CriticalWorkQueue Warteschlangentyp.

Die vom Aufrufer bereitgestellte Rückrufroutine (NDIS_IO_WORKITEM_ROUTINE) wird in einem Systemthreadkontext bei IRQL = PASSIVE_LEVEL ausgeführt.

Diese vom Aufrufer bereitgestellte Routine kann die NdisFreeIoWorkItem--Funktion aufrufen, um den für die Arbeitsaufgabe zugewiesenen Speicher zurückzufordern.

beispiele für

Um eine Routine--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration angeben, 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 Routine--Funktion zu definieren, die den Namen "MyWorkitemRoutine" hat, verwenden Sie den NDIS_IO_WORKITEM_FUNCTION Typ, wie in diesem Codebeispiel gezeigt:

NDIS_IO_WORKITEM_FUNCTION MyWorkitemRoutine;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyWorkitemRoutine(
    PVOID   WorkItemContext,
    NDIS_HANDLE  NdisIoWorkItemHandle
    )
  {...}

Der NDIS_IO_WORKITEM_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_IO_WORKITEM_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- Universal
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Miscellaneous_Function(ndis)

Siehe auch

IoQueueWorkItem-

MiniportHaltEx

NDIS-E/A-Arbeitsaufgaben

NdisAllocateIoWorkItem-

NdisFreeIoWorkItem-