Compartir a través de


Función RxDispatchToWorkerThread (rxworkq.h)

RxDispatchToWorkerThread invoca una rutina en el contexto de un subproceso de trabajo. Esta rutina asigna la memoria de la 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 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 que se va a completar que se pasa al controlador.

Valor devuelto

rxDispatchToWorkerThread devuelve STATUS_SUCCESS correctos o uno de los siguientes códigos de error en caso de error:

Código devuelto Descripción
STATUS_INSUFFICIENT_RESOURCES
No se pudo enviar el elemento.

Observaciones

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 de RxDispatchToWorkerTh read se usaría en este caso.
  • Cuando se va a enviar una operación 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.
El equilibrio entre las dos operaciones de distribución es el tiempo frente al espacio (uso de memoria).

El RxDispatchToWorkerThread invoca una rutina en el contexto de un subproceso de trabajo. La memoria de la WORK_QUEUE_ITEM se asigna mediante la rutina RxDispatchToWorkerThread de la memoria del grupo no paginado. Por lo tanto, esta rutina puede producir un error si no hay suficientes recursos disponibles.

La implementación actual de RxDispatchToWorkerThread colas rutinarias funcionan en el mismo procesador desde el que se originó la llamada.

Si se produce un error en la rutina de 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 de rxDispatchToWorkerThread y WMI está habilitada en el kernel, se registrarán los detalles del error con WMI.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de rxworkq.h (incluya Rxworkq.h, Rxstruc.h, Ntifs.h)
irQL <= APC_LEVEL

Consulte también

rxPostToWorkerThread

rxSpinDownMRxDispatcher