Función RxDispatchToWorkerThread (rxworkq.h)
RxDispatchToWorkerThread invoca una rutina en el contexto de un subproceso de trabajo. Esta rutina asigna la memoria del WORK_QUEUE_ITEM.
Sintaxis
NTSTATUS RxDispatchToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Parámetros
[in] pMRxDeviceObject
Puntero al objeto de dispositivo del controlador de minidirector de red correspondiente.
[in] WorkQueueType
Tipo de la cola de trabajo que representa la prioridad de la tarea. El parámetro WorkQueueType puede ser una de las siguientes enumeraciones para WORK_QUEUE_TYPE:
CriticalWorkQueue
Inserte el WORK_QUEUE_ITEM en la cola desde la que un subproceso del sistema con un atributo de prioridad en tiempo real procesará el elemento de trabajo.
DelayedWorkQueue
Inserte el WORK_QUEUE_ITEM en la cola desde la que un subproceso del sistema con un atributo de prioridad variable procesará el elemento de trabajo.
HyperCriticalWorkQueue
Inserte el WORK_QUEUE_ITEM en la cola desde la que un subproceso del sistema procesará el elemento de trabajo para que no se bloquee la rutina que se va a invocar.
[in] Routine
Puntero a la rutina que se va a invocar.
[in] pContext
Puntero a un parámetro de contexto asociado al elemento de trabajo para completarlo que se pasa al controlador.
Valor devuelto
RxDispatchToWorkerThread devuelve STATUS_SUCCESS si se ha realizado correctamente o uno de los siguientes códigos de error en caso de error:
Código devuelto | Descripción |
---|---|
|
No se pudo enviar el elemento. |
Comentarios
Hay dos casos comunes de envío de operaciones a subprocesos de trabajo:
- Para una operación muy poco frecuente, el espacio se puede conservar asignando y liberando memoria dinámicamente para el elemento de cola de trabajo cuando es necesario. La rutina RxDispatchToWorkerThread se usaría en este caso.
- Cuando una operación se va a enviar repetidamente, el tiempo se conserva asignando de antemano el WORK_QUEUE_ITEM como parte de la estructura de datos que se va a enviar y usando esta memoria asignada previamente repetidamente. La rutina RxPostToWorkerThread se usaría en este caso.
RxDispatchToWorkerThread invoca una rutina en el contexto de un subproceso de trabajo. La rutina RxDispatchToWorkerThread asigna la memoria del WORK_QUEUE_ITEM desde la memoria del grupo no paginado. Por lo tanto, esta rutina puede producir un error si no hay recursos suficientes disponibles.
La implementación actual de las colas de rutina RxDispatchToWorkerThread funciona en el mismo procesador desde el que se originó la llamada.
Si se produce un error en la rutina RxDispatchToWorkerThread en una compilación de depuración, se llama a la rutina _RxLog con detalles del error. Si se produce un error en la rutina RxDispatchToWorkerThread y WMI está habilitado en el kernel, los detalles del error se registrarán con WMI.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | rxworkq.h (incluya Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL | <= APC_LEVEL |