Função RxDispatchToWorkerThread (rxworkq.h)
RxDispatchToWorkerThread invoca uma rotina no contexto de um thread de trabalho. A memória do WORK_QUEUE_ITEM é alocada por essa rotina.
Sintaxe
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
Um ponteiro para o objeto do dispositivo do driver de minidiretório de rede correspondente.
[in] WorkQueueType
O tipo da fila de trabalho que representa a prioridade da tarefa. O parâmetro WorkQueueType pode ser uma das seguintes enumerações para WORK_QUEUE_TYPE:
CriticalWorkQueue
Insira o WORK_QUEUE_ITEM na fila da qual um thread do sistema com um atributo de prioridade em tempo real processará o item de trabalho.
DelayedWorkQueue
Insira o WORK_QUEUE_ITEM na fila da qual um thread do sistema com um atributo de prioridade variável processará o item de trabalho.
HyperCriticalWorkQueue
Insira o WORK_QUEUE_ITEM na fila da qual um thread do sistema processará o item de trabalho para que a rotina a ser invocada não seja bloqueada.
[in] Routine
Um ponteiro para a rotina a ser invocada.
[in] pContext
Um ponteiro para um parâmetro de contexto associado ao item de trabalho a ser concluído que é passado para o driver.
Valor de retorno
RxDispatchToWorkerThread retorna STATUS_SUCCESS com êxito ou um dos seguintes códigos de erro sobre falha:
Código de retorno | Descrição |
---|---|
|
Não foi possível expedir o item. |
Observações
Há dois casos comuns de operações de expedição para threads de trabalho:
- Para uma operação muito pouco frequente, o espaço pode ser conservado alocando e liberando memória dinamicamente para o item de fila de trabalho quando necessário. A rotina de RxDispatchToWorkerThread seria usada nesse caso
- Quando uma operação será expedida repetidamente, o tempo é conservado alocando antecipadamente o WORK_QUEUE_ITEM como parte da estrutura de dados a ser expedida e usando essa memória pré-alocada repetidamente. A rotina de RxPostToWorkerThread seria usada nesse caso
O RxDispatchToWorkerThread invoca uma rotina no contexto de um thread de trabalho. A memória do WORK_QUEUE_ITEM é alocada pelo RxDispatchToWorkerThread rotina da memória do pool não paged. Portanto, essa rotina poderá falhar se recursos insuficientes estiverem disponíveis.
A implementação atual do RxDispatchToWorkerThread filas de rotina funcionam no mesmo processador do qual a chamada se originou.
Se a rotina RxDispatchToWorkerThread falhar em um build de depuração, a rotina de _RxLog será chamada com detalhes do erro. Se o RxDispatchToWorkerThread rotina falhar e o WMI estiver habilitado no kernel, os detalhes do erro serão registrados com o WMI.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
IRQL | <= APC_LEVEL |