Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RxDispatchToWorkerThread вызывает подпрограмму в контексте рабочего потока. Память для WORK_QUEUE_ITEM выделяется этой подпрограммой.
Синтаксис
NTSTATUS RxDispatchToWorkerThread(
[in] IN PRDBSS_DEVICE_OBJECT pMRxDeviceObject,
[in] IN WORK_QUEUE_TYPE WorkQueueType,
[in] IN PRX_WORKERTHREAD_ROUTINE Routine,
[in] IN PVOID pContext
);
Параметры
[in] pMRxDeviceObject
Указатель на объект устройства соответствующего драйвера мини-перенаправления сети.
[in] WorkQueueType
Тип рабочей очереди, представляющей приоритет задачи. Параметр WorkQueueType может быть одним из следующих перечислений для WORK_QUEUE_TYPE:
CriticalWorkQueue
Вставьте WORK_QUEUE_ITEM в очередь, из которой системный поток с атрибутом приоритета в режиме реального времени обработает рабочий элемент.
DelayedWorkQueue
Вставьте WORK_QUEUE_ITEM в очередь, из которой системный поток с атрибутом приоритета переменной будет обрабатывать рабочий элемент.
HyperCriticalWorkQueue
Вставьте WORK_QUEUE_ITEM в очередь, из которой системный поток будет обрабатывать рабочий элемент, чтобы вызываемая подпрограмма не блокировалась.
[in] Routine
Указатель на вызываемую подпрограмму.
[in] pContext
Указатель на параметр контекста, связанный с рабочим элементом для завершения, который передается драйверу.
Возвращаемое значение
RxDispatchToWorkerThread возвращает STATUS_SUCCESS при успешном выполнении или одном из следующих кодов ошибок при сбое:
| Возвращаемый код | Описание |
|---|---|
|
Не удалось отправить элемент. |
Замечания
Существует два распространенных случая отправки операций в рабочие потоки:
- Для очень редкой операции пространство может быть сохранено путем динамического выделения и освобождения памяти для рабочего элемента очереди при необходимости. В этом случае будет использоваться подпрограмма RxDispatchToWorkerThread
- Когда операция будет повторно отправлена, время сохраняется путем выделения заранее WORK_QUEUE_ITEM в составе структуры данных для отправки и использования этой предварительно выделенной памяти. В этом случае будет использоваться подпрограмма RxPostToWorkerThread
RxDispatchToWorkerThread вызывает подпрограмму в контексте рабочего потока. Память для WORK_QUEUE_ITEM выделяется подпрограммой RxDispatchToWorkerThread из памяти нестраничного пула. Поэтому эта подпрограмма может завершиться ошибкой, если недостаточно ресурсов.
Текущая реализация RxDispatchToWorkerThread очереди подпрограмм работают на том же процессоре, из которого был создан вызов.
Если подпрограмме RxDispatchToWorkerThread завершается сбоем в сборке отладки, то _RxLog подпрограмма вызывается с подробными сведениями об ошибке. Если RxDispatchToWorkerThread подпрограмма завершается ошибкой и WMI включена в ядро, сведения об ошибке будут записаны с помощью WMI.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Настольный |
| заголовка | rxworkq.h (include Rxworkq.h, Rxstruc.h, Ntifs.h) |
| IRQL | <= APC_LEVEL |