共用方式為


NdisScheduleWorkItem 函式 (ndis.h)

注意 NDIS 5. x 已被取代,並被 NDIS 6 取代。 x。 如需新的 NDIS 驅動程式開發,請參閱 從 Windows Vista 開始的網路驅動程式。 如需移植 NDIS 5 的相關信息。 x 驅動程式至 NDIS 6。 x,請參閱 將 NDIS 5.x 驅動程式移植到 NDIS 6.0

NdisScheduleWorkItem 會將指定的工作專案插入佇列中,系統背景工作線程會從該佇列中移除專案,並將控制權提供給驅動程式先前提供給 NdisInitializeWorkItem 的回呼函式。

語法

NDIS_STATUS NdisScheduleWorkItem(
  [in] __drv_aliasesMem PNDIS_WORK_ITEM WorkItem
);

參數

[in] WorkItem

先前呼叫 NdisInitializeWorkItem 所設定的工作項目指標。

傳回值

NdisScheduleWorkItem 一律會成功,因此一律會傳回NDIS_STATUS_SUCCESS。

備註

NdisScheduleWorkItem 的呼叫可讓 NDIS 驅動程式延遲某些驅動程式判斷的作業,該作業可能或應該比目前執行至其背景工作線程回呼函式的引發 IRQL 低。

驅動程式的回呼是在 IRQL = PASSIVE_LEVEL稍後的系統線程內容中執行。 此呼叫端提供的函式負責回收驅動程式為 WorkItem 配置的記憶體。 例如,如果驅動程式呼叫 NdisAllocateMemoryWithTag 來提供內容區域給 NdisInitializeWorkItem,其回調函式應該先使用 WorkItemNdisFreeMemory 進行相互呼叫,再傳回控件。

如果驅動程式已經持有一個同步處理物件,而且可能嘗試取得另一個同步處理物件,則驅動程式不得等候其回呼例程完成作業。 例如,NDIS 驅動程式應該釋放目前持有的微調鎖定 () ,依此類推,再呼叫 NdisScheduleWorkItem。 最高層級的 NDIS 通訊協定驅動程式也必須釋放任何目前持有的號誌、mutex、資源變數等等,才能呼叫 NdisScheduleWorkItem。 在佇列同步背景工作線程作業之前釋放所有同步處理資源,可防止死結。

串行化的迷你埠驅動程序絕對不應該嘗試將背景工作線程回呼例程排入佇列,因為這類驅動程式無法同步處理其 NIC 內容區域的存取, (與背景工作線程回呼) 。 因此,這類串行化的 NDIS 驅動程式無法與背景工作線程回呼函式共用其每個配接器內容區域中的任何專案,而不會造成間歇性系統當機。

  • 目標平臺: 通用
  • 版本:Windows Vista 中不支援 NDIS 6.0 驅動程式。 請改用 NdisQueueIoWorkItem。 Windows Vista 和 Windows XP 中支援 NDIS 5.1 驅動程式。

規格需求

需求
標頭 ndis.h (包含 Ndis.h)
IRQL IRQL <= DISPATCH_LEVEL

另請參閱