Partager via


RxPostToWorkerThread, fonction (rxworkq.h)

RxPostToWorkerThread appelle une routine passée en tant que paramètre dans le contexte d’un thread de travail. La mémoire du WORK_QUEUE_ITEM doit être allouée par l’appelant.

Syntaxe

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
);

Paramètres

[in] pMRxDeviceObject

Pointeur vers l’objet de périphérique du pilote de mini-redirecteur réseau correspondant.

[in] WorkQueueType

Type de la file d’attente de travail qui représente la priorité de la tâche. Ce paramètre peut être l’une des valeurs suivantes :

CriticalWorkQueue

Insérez WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système avec un attribut de priorité en temps réel traitera l’élément de travail.

DelayedWorkQueue

Insérez WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système avec un attribut de priorité variable traitera l’élément de travail.

HyperCriticalWorkQueue

Insérez WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système traitera l’élément de travail afin que la routine à appeler ne soit pas bloquée.

[in] pWorkQueueItem

Pointeur vers WORK_QUEUE_ITEM.

[in] Routine

Pointeur vers la routine à appeler.

[in] pContext

Pointeur vers un paramètre de contexte associé à l’élément de travail à terminer qui est passé au pilote.

Valeur retournée

RxDispatchToWorkerThread retourne STATUS_SUCCESS en cas de réussite ou l’un des codes d’erreur suivants en cas d’échec :

Code de retour Description
STATUS_INSUFFICIENT_RESOURCES
Impossible de distribuer l’élément.

Remarques

Il existe deux cas courants de distribution d’opérations aux threads de travail. Le compromis entre les deux opérations de distribution suivantes est le temps et l’espace (utilisation de la mémoire) :

  • Lorsqu’une opération doit être distribuée à plusieurs reprises, le temps est conservé en allouant à l’avance la structure de WORK_QUEUE_ITEM dans le cadre de la structure de données à distribuer. Dans ce cas, utilisez la routine RxPostToWorkerThread .
  • Pour une opération peu fréquente, vous pouvez économiser de l’espace en allouant et en libérant dynamiquement de la mémoire pour l’élément de file d’attente de travail quand cela est nécessaire. Dans ce cas, utilisez la routine RxDispatchToWorkerThread .
La routine RxPostToWorkerThread appelle une routine dans le contexte d’un thread de travail. La mémoire de la structure WORK_QUEUE_ITEM doit être allouée à partir de la mémoire de pool non paginée par la routine appelante.

L’implémentation actuelle des files d’attente de routine RxPostToWorkerThread fonctionne sur le même processeur que celui d’où provient l’appel.

Si la routine RxPostToWorkerThread échoue sur une build de débogage, la routine _RxLog est appelée avec les détails de l’erreur. Si la routine RxPostToWorkerThread échoue et que WMI est activé dans le noyau, les détails de l’erreur sont consignés avec WMI.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête rxworkq.h (inclure Rxworkq.h, Rxstruc.h, Ntifs.h)
IRQL <= APC_LEVEL

Voir aussi

RxDispatchToWorkerThread

RxSpinDownMRxDispatcher

_RxLog