RxDispatchToWorkerThread, fonction (rxworkq.h)
RxDispatchToWorkerThread appelle une routine dans le contexte d’un thread de travail. La mémoire du WORK_QUEUE_ITEM est allouée par cette routine.
Syntaxe
NTSTATUS RxDispatchToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[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 représentant la priorité de la tâche. Le paramètre WorkQueueType peut être l’une des énumérations suivantes pour WORK_QUEUE_TYPE :
CriticalWorkQueue
Insérez le WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système avec un attribut de priorité en temps réel traite l’élément de travail.
DelayedWorkQueue
Insérez le WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système avec un attribut de priorité variable traite l’élément de travail.
HyperCriticalWorkQueue
Insérez le WORK_QUEUE_ITEM dans la file d’attente à partir de laquelle un thread système traite l’élément de travail afin que la routine à appeler ne soit pas bloquée.
[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 transmis au pilote.
Valeur de retour
RxDispatchToWorkerThread retourne STATUS_SUCCESS sur la réussite ou l’un des codes d’erreur suivants en cas d’échec :
Retourner le code | Description |
---|---|
|
Impossible de distribuer l’élément. |
Remarques
Il existe deux cas courants de répartition d’opérations vers des threads de travail :
- Pour une opération très peu fréquente, l’espace peut être conservé en allouant et en libérant dynamiquement de la mémoire pour l’élément de file d’attente de travail quand il est nécessaire. La routine RxDispatchToWorkerThread serait utilisée dans ce cas
- Lorsqu’une opération va être distribuée à plusieurs reprises, le temps est conservé en allouant à l’avance le WORK_QUEUE_ITEM dans le cadre de la structure de données à distribuer et à l’aide de cette mémoire pré-allouée à plusieurs reprises. La routine rxPostToWorkerThread serait utilisée dans ce cas
Le RxDispatchToWorkerThread appelle une routine dans le contexte d’un thread de travail. La mémoire de la WORK_QUEUE_ITEM est allouée par la routine RxDispatchToWorkerThread de la mémoire du pool non paginé. Par conséquent, cette routine peut échouer si des ressources insuffisantes sont disponibles.
L’implémentation actuelle de l'RxDispatchToWorkerThread files d’attente de routine fonctionne sur le même processeur à partir duquel l’appel provient.
Si la routine RxDispatchToWorkerThread échoue sur une build de débogage, la routine _RxLog est appelée avec les détails de l’erreur. Si la routine RxDispatchToWorkerTh read échoue et que WMI est activé dans le noyau, les détails de l’erreur sont consignés avec WMI.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Bureau |
d’en-tête | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL | <= APC_LEVEL |