NDIS I/O-Arbeitsaufgaben

Treiber können E/A-Aufgabenrückruffunktionen für eine spätere Ausführung in die Warteschlange stellen. NDIS ruft die vom Treiber festgelegte Callback-Funktion bei IRQL = PASSIVE_LEVEL auf. Dadurch wird die Systemleistung verbessert, indem die aktuelle Funktion sofort zurückgegeben wird und der Treiber später bei einer niedrigeren IRQL arbeiten kann.

NDIS 6.0 und höher stellen Wrapperfunktionen für die I/O-Arbeitsaufgabenroutinen IoAllocateWorkItem, IoFreeWorkItem und IoQueueWorkItem bereit. Anstelle der privaten IO_WORKITEM-Struktur verwendet NDIS die private NDIS_IO_WORKITEM-Struktur .

NDIS 6.0-Treiber rufen die NdisAllocateIoWorkItem-Funktion auf, um eine Arbeitsaufgabe zuzuweisen. NDIS-Miniport-Treiber übergeben NdisAllocateIoWorkItem den Adapter-Handle, den NDIS an die MiniportInitializeEx-Funktion übergeben hat. NdisAllocateIoWorkItem ruft das dem Handle zugeordnete Geräteobjekt ab und übergibt das Geräteobjekt an die IoAllocateWorkItem-Routine . Filtertreiber übergeben ein Filterhandle (Griff).

Anmerkung Protokolltreiber können NdisAllocateIoWorkItem nicht verwenden, da NDIS keine Protokolltreiber mit Geräteobjekten verknüpft.

NDIS-Treiber rufen die NdisQueueIoWorkItem-Funktion auf, um Arbeitsaufgaben in die Warteschlange zu stellen. NDIS-Arbeitsaufgaben verwenden den CriticalWorkQueue Warteschlangentyp.

NDIS-Treiber müssen die NdisFreeIoWorkItem-Funktion aufrufen, um die Ressourcen freizugeben, die einer Arbeitsaufgabe zugeordnet sind, die NdisAllocateIoWorkItem zugeordnet ist.

System-Arbeitsthreads