Compartir a través de


Función RxPostToWorkerThread (rxworkq.h)

RxPostToWorkerThread invoca una rutina pasada como parámetro en el contexto de un subproceso de trabajo. El autor de la llamada debe asignar memoria para el WORK_QUEUE_ITEM.

Sintaxis

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

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. Este parámetro puede establecerse con uno de los siguientes valores:

CriticalWorkQueue

Inserte 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 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 WORK_QUEUE_ITEM en la cola desde la que un subproceso del sistema procesará el elemento de trabajo para que la rutina que se invoque no esté bloqueada.

[in] pWorkQueueItem

Puntero a WORK_QUEUE_ITEM.

[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
STATUS_INSUFFICIENT_RESOURCES
No se pudo enviar el elemento.

Comentarios

Hay dos casos comunes de envío de operaciones a subprocesos de trabajo. El equilibrio entre las dos operaciones de distribución siguientes es el tiempo frente al espacio (uso de memoria):

  • Cuando se va a enviar una operación repetidamente, se conserva el tiempo asignando de antemano la estructura de WORK_QUEUE_ITEM como parte de la estructura de datos que se va a enviar. En este caso, use la rutina RxPostToWorkerThread .
  • Para una operación poco frecuente, puede ahorrar espacio asignando y liberando memoria dinámicamente para el elemento de cola de trabajo cuando sea necesario. En este caso, use la rutina RxDispatchToWorkerThread .
La rutina RxPostToWorkerThread invoca una rutina en el contexto de un subproceso de trabajo. La rutina de llamada debe asignar la memoria de la estructura de WORK_QUEUE_ITEM desde la memoria del grupo no paginado.

La implementación actual de las colas de rutina RxPostToWorkerThread funciona en el mismo procesador desde el que se originó la llamada.

Si se produce un error en la rutina RxPostToWorkerThread 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 RxPostToWorkerThread 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

Consulte también

RxDispatchToWorkerThread

RxSpinDownMRxDispatcher

_RxLog