RxDispatchToWorkerThread-Funktion (rxworkq.h)
RxDispatchToWorkerThread eine Routine im Kontext eines Arbeitsthreads aufruft. Der Speicher für die WORK_QUEUE_ITEM wird von dieser Routine zugewiesen.
Syntax
NTSTATUS RxDispatchToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Parameter
[in] pMRxDeviceObject
Ein Zeiger auf das Geräteobjekt des entsprechenden Netzwerkminiumleitungstreibers.
[in] WorkQueueType
Der Typ der Arbeitswarteschlange, die die Priorität des Vorgangs darstellt. Der WorkQueueType-Parameter kann eine der folgenden Enumerationen für WORK_QUEUE_TYPE sein:
CriticalWorkQueue
Fügen Sie die WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread mit einem Attribut mit Echtzeitpriorität die Arbeitsaufgabe verarbeitet.
DelayedWorkQueue
Fügen Sie die WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread mit einem Attribut mit variabler Priorität die Arbeitsaufgabe verarbeitet.
HyperCriticalWorkQueue
Fügen Sie die WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread die Arbeitsaufgabe verarbeitet, sodass die aufgerufene Routine nicht blockiert wird.
[in] Routine
Ein Zeiger auf die zu aufrufende Routine.
[in] pContext
Ein Zeiger auf einen Kontextparameter, der der Arbeitsaufgabe zugeordnet ist, die an den Treiber übergeben wird.
Rückgabewert
RxDispatchToWorkerThread- gibt STATUS_SUCCESS bei Erfolg oder einer der folgenden Fehlercodes für Fehler zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das Element konnte nicht verteilt werden. |
Bemerkungen
Es gibt zwei häufige Fälle des Verteilens von Vorgängen an Arbeitsthreads:
- Bei sehr seltenen Vorgängen kann speicherplatzsparend sein, indem bei Bedarf Speicher für die Arbeitswarteschlangenaufgabe dynamisch zuzuordnen und freizugeben ist. Die RxDispatchToWorkerThread Routine würde in diesem Fall verwendet werden.
- Wenn ein Vorgang wiederholt verteilt werden soll, wird die Zeit gespart, indem die WORK_QUEUE_ITEM im Voraus als Teil der zu verteilenden Datenstruktur zugewiesen und dieser vorab zugewiesene Speicher wiederholt verwendet wird. Die RxPostToWorkerThread Routine würde in diesem Fall verwendet werden.
Die RxDispatchToWorkerThread ruft eine Routine im Kontext eines Arbeitsthreads auf. Der Speicher für die WORK_QUEUE_ITEM wird vom RxDispatchToWorkerThread Routine aus nicht ausgelagerten Poolspeicher zugeordnet. Daher kann diese Routine fehlschlagen, wenn nicht genügend Ressourcen verfügbar sind.
Die aktuelle Implementierung der RxDispatchToWorkerThread Routinewarteschlangen funktionieren auf demselben Prozessor, aus dem der Anruf stammt.
Wenn die RxDispatchToWorkerThread Routine bei einem Debugbuild fehlschlägt, wird die _RxLog Routine mit Details des Fehlers aufgerufen. Wenn die RxDispatchToWorkerThread Routine fehlschlägt und WMI im Kernel aktiviert ist, werden Details des Fehlers mit WMI protokolliert.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL- | <= APC_LEVEL |