RxPostToWorkerThread 函数 (rxworkq.h)
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 |