NDIS-E/A-Arbeitselemente
Treiber können E/A-Rückruffunktionen für Arbeitselemente zur späteren Ausführung in die Warteschlange stellen. NDIS ruft die vom Treiber angegebene Rückruffunktion unter IRQL = PASSIVE_LEVEL auf. Dadurch wird die Systemleistung verbessert, indem die aktuelle Funktion sofort zurückgegeben werden kann und der Treiber später mit einem niedrigeren IRQL arbeiten kann.
NDIS 6.0 und höher bieten Wrapperfunktionen für die Kernel-E/A-Arbeitselementroutinen IoAllocateWorkItem, IoFreeWorkItem und IoQueueWorkItem. Anstelle der privaten IO_WORKITEM-Struktur verwendet NDIS die private NDIS_IO_WORKITEM-Struktur .
NDIS 6.0-Treiber rufen die NdisAllocateIoWorkItem-Funktion auf, um ein Arbeitselement zuzuordnen. NDIS-Miniporttreiber übergeben NdisAllocateIoWorkItem das Adapterhandle, das 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.
Hinweis Protokolltreiber können NdisAllocateIoWorkItem nicht verwenden, da NDIS keine Protokolltreiber mit Geräteobjekten verknüpft.
NDIS-Treiber rufen die NdisQueueIoWorkItem-Funktion auf, um Arbeitselemente in die Warteschlange zu stellen. NDIS-Arbeitselemente verwenden den Warteschlangentyp CriticalWorkQueue .
NDIS-Treiber müssen die NdisFreeIoWorkItem-Funktion aufrufen, um die Ressourcen freizugeben, die einem Arbeitselement zugeordnet sind, das NdisAllocateIoWorkItem zugeordnet hat.