RxPostToWorkerThread-Funktion (rxworkq.h)
RxPostToWorkerThread eine Routine aufruft, die als Parameter im Kontext eines Arbeitsthreads übergeben wird. Der Speicher 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 Netzwerkminiumleitungstreibers.
[in] WorkQueueType
Der Typ der Arbeitswarteschlange, die die Priorität des Vorgangs 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 Attribut mit Echtzeitpriorität die Arbeitsaufgabe verarbeitet.
DelayedWorkQueue
Fügen Sie 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 WORK_QUEUE_ITEM in die Warteschlange ein, aus der ein Systemthread die Arbeitsaufgabe verarbeitet, sodass die aufrufende 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 der Arbeitsaufgabe zugeordnet ist, die an den Treiber übergeben wird.
Rückgabewert
RxDispatchToWorkerThread- gibt STATUS_SUCCESS bei Erfolg oder einem der folgenden Fehlercode beim 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. Der Kompromiss zwischen den folgenden beiden Verteilervorgängen ist Zeit im Vergleich zum Raum (Speicherauslastung):
- Wenn ein Vorgang wiederholt verteilt werden soll, wird zeitsparend, indem die WORK_QUEUE_ITEM Struktur im Rahmen der zu verteilenden Datenstruktur im Voraus zugeordnet wird. Verwenden Sie in diesem Fall die RxPostToWorkerThread Routine.
- Bei seltenen Vorgängen können Sie Speicherplatz sparen, indem Sie bei Bedarf Speicher für das Arbeitswarteschlangenelement dynamisch zuweisen und freigeben. Verwenden Sie in diesem Fall die RxDispatchToWorkerThread Routine.
Die aktuelle Implementierung der RxPostToWorkerThread Routinewarteschlangen funktionieren auf demselben Prozessor, von dem der Anruf 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 |
Header- | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL- | <= APC_LEVEL |