共用方式為


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,或在失敗時傳回下列其中一個錯誤碼:

傳回碼 Description
STATUS_INSUFFICIENT_RESOURCES
無法分派專案。

備註

將作業分派給背景工作線程的常見案例有兩種:

  • 對於非常不頻繁的作業,空間可以藉由視需要動態配置和釋放工作佇列專案的記憶體來節省。 在此情況下會使用 RxDispatchToWorkerThread 例程
  • 當作業重複分派時,會事先配置WORK_QUEUE_ITEM,作為要分派的數據結構一部分,並重複使用此預先配置的記憶體,以節省時間。 在此情況下會使用 RxPostToWorkerThread 例程
兩個分派作業之間的取捨是時間與空間 (記憶體使用量) 。

RxDispatchToWorkerThread 會在背景工作線程的內容中叫用例程。 WORK_QUEUE_ITEM的記憶體是由非分頁集區內存的 RxDispatchToWorkerThread 例程所配置。 因此,如果資源不足,此例程可能會失敗。

RxDispatchToWorkerThread 例程佇列的目前實作會處理到呼叫的來源相同處理器。

如果偵錯組建上的 RxDispatchToWorkerThread 例程失敗,則會呼叫 _RxLog 例程,其中包含錯誤的詳細數據。 如果 RxDispatchToWorkerThread 例程失敗,且已在核心中啟用 WMI,則會使用 WMI 記錄錯誤的詳細數據。

規格需求

需求
目標平台 桌面
標頭 rxworkq.h (包括 Rxworkq.h、Rxstruc.h、Ntifs.h)
IRQL <= APC_LEVEL

另請參閱

RxPostToWorkerThread

RxSpinDownMRxDispatcher