RxDispatchToWorkerThread 函数 (rxworkq.h)
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 在工作线程的上下文中调用例程。 RxDispatchToWorkerThread 例程从非分页池内存分配WORK_QUEUE_ITEM的内存。 因此,如果资源不足,此例程可能会失败。
RxDispatchToWorkerThread 例程队列的当前实现适用于调用发起的同一处理器。
如果在调试生成时 RxDispatchToWorkerThread 例程失败,则会调用 _RxLog 例程,其中包含错误的详细信息。 如果 RxDispatchToWorkerThread 例程失败,并且内核中启用了 WMI,则会使用 WMI 记录错误的详细信息。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | rxworkq.h (包括 Rxworkq.h、Rxstruc.h、Ntifs.h) |
IRQL | <= APC_LEVEL |