Freigeben über


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
STATUS_INSUFFICIENT_RESOURCES
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 RxPostToWorkerThread Routine ruft eine Routine im Kontext eines Arbeitsthreads auf. Der Speicher für die WORK_QUEUE_ITEM-Struktur muss von der aufrufenden Routine aus nicht ausgelagerten Poolspeichern zugewiesen werden.

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

Siehe auch

RxDispatchToWorkerThread-

RxSpinDownMRxDispatcher

_RxLog