RxPostToWorkerThread-Funktion (rxworkq.h)
RxPostToWorkerThread ruft eine Routine auf, die als Parameter im Kontext eines Workerthreads übergeben wird. Arbeitsspeicher für die WORK_QUEUE_ITEM muss vom Aufrufer zugewiesen werden.
Syntax
NTSTATUS RxPostToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORK_QUEUE_ITEM pWorkQueueItem,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Parameter
[in] pMRxDeviceObject
Ein Zeiger auf das Geräteobjekt des entsprechenden Netzwerk-Miniumleitungstreibers.
[in] WorkQueueType
Der Typ der Arbeitswarteschlange, die die Priorität der Aufgabe darstellt. Dieser Parameter kann einer der folgenden Werte sein:
CriticalWorkQueue
Fügen Sie WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread mit einem Echtzeitprioritätsattribut das Arbeitselement verarbeitet.
DelayedWorkQueue
Fügen Sie WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread mit einem Variablenprioritätsattribut das Arbeitselement verarbeitet.
HyperCriticalWorkQueue
Fügen Sie WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread das Arbeitselement verarbeitet, damit die aufzurufende Routine nicht blockiert wird.
[in] pWorkQueueItem
Ein Zeiger auf WORK_QUEUE_ITEM.
[in] Routine
Ein Zeiger auf die zu aufrufende Routine.
[in] pContext
Ein Zeiger auf einen Kontextparameter, der dem zu erledigenden Arbeitselement zugeordnet ist und an den Treiber übergeben wird.
Rückgabewert
RxDispatchToWorkerThread gibt STATUS_SUCCESS bei Erfolg oder einen der folgenden Fehlercode bei Fehler zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das Element konnte nicht versendet werden. |
Hinweise
Es gibt zwei häufige Fälle der Verteilung von Vorgängen an Workerthreads. Der Kompromiss zwischen den folgenden beiden Verteilungsvorgängen ist Zeit im Vergleich zum Speicherplatz (Speicherauslastung):
- Wenn ein Vorgang wiederholt verteilt wird, wird Zeit gespart, indem die WORK_QUEUE_ITEM-Struktur im Voraus als Teil der zu sendenden Datenstruktur zugewiesen wird. Verwenden Sie in diesem Fall die RxPostToWorkerThread-Routine .
- Bei einem seltenen Vorgang können Sie Speicherplatz sparen, indem Sie bei Bedarf dynamisch Arbeitsspeicher für das Arbeitswarteschlangenelement zuweisen und freigeben. Verwenden Sie in diesem Fall die RxDispatchToWorkerThread-Routine .
Die aktuelle Implementierung der RxPostToWorkerThread-Routinewarteschlangen funktioniert auf demselben Prozessor, von dem der Aufruf stammt.
Wenn die RxPostToWorkerThread-Routine bei einem Debugbuild fehlschlägt, wird die _RxLog Routine mit Details des Fehlers aufgerufen. Wenn die RxPostToWorkerThread-Routine fehlschlägt und WMI im Kernel aktiviert ist, werden Details des Fehlers mit WMI protokolliert.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL | <= APC_LEVEL |