RxPostToWorkerThread 调用在工作线程上下文中作为参数传递的例程。 调用方必须分配WORK_QUEUE_ITEM的内存。
语法
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
);
参数
[in] pMRxDeviceObject
指向相应网络微型重定向程序驱动程序的设备对象的指针。
[in] WorkQueueType
表示任务优先级的工作队列的类型。 此参数可以是以下值之一:
CriticalWorkQueue
将WORK_QUEUE_ITEM插入队列中,从队列中,具有实时优先级属性的系统线程将处理工作项。
DelayedWorkQueue
将WORK_QUEUE_ITEM插入队列中,其中具有变量优先级属性的系统线程将处理工作项。
HyperCriticalWorkQueue
将WORK_QUEUE_ITEM插入队列中,系统线程将从中处理工作项,以便不会阻止要调用的例程。
[in] pWorkQueueItem
指向WORK_QUEUE_ITEM的指针。
[in] Routine
指向要调用的例程的指针。
[in] pContext
指向与要传递到驱动程序的工作项关联的上下文参数的指针。
返回值
RxDispatchToWorkerThread 在成功时返回STATUS_SUCCESS,或者在失败时返回以下错误代码之一:
| 返回代码 | 描述 |
|---|---|
|
无法调度该项。 |
言论
向工作线程调度作有两种常见情况。 以下两个调度作之间的权衡是时间与空间(内存使用量):
- 将重复调度作时,通过提前分配WORK_QUEUE_ITEM结构作为要调度的数据结构的一部分来节省时间。 在这种情况下,请使用 RxPostToWorkerThread 例程。
- 对于不频繁的作,可以根据需要动态分配和释放工作队列项的内存来节省空间。 在这种情况下,请使用 RxDispatchToWorkerThread 例程。
RxPostToWorkerThread 例程队列的当前实现适用于调用发起的同一处理器。
如果在调试生成时 RxPostToWorkerThread 例程失败,则会调用 _RxLog 例程,其中包含错误的详细信息。 如果 RxPostToWorkerThread 例程失败,并且内核中启用了 WMI,则会使用 WMI 记录错误的详细信息。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 桌面 |
| 标头 | rxworkq.h (包括 Rxworkq.h、Rxstruc.h、Ntifs.h) |
| IRQL | <= APC_LEVEL |