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。
驅動程式的回呼會在稍後的 IRQL = PASSIVE_LEVEL系統線程內容中執行。 此呼叫端提供的函式負責回收驅動程式配置給 WorkItem的記憶體。 例如,如果呼叫 NdisAllocateMemoryWithTag 的驅動程式 提供內容區域給 NdisInitializeWorkItem,則其回呼函式應該會在傳回控件之前,使用 WorkItem 對 NdisFreeMemory 進行相互 呼叫。
如果驅動程式已經持有一個同步處理物件,且可能嘗試取得另一個同步處理物件,則驅動程式不得等候其回呼例程完成作業。 例如,NDIS 驅動程式應該釋放目前保留的任何微調鎖定,依此類推,再呼叫 NdisScheduleWorkItem。 最高層級的 NDIS 通訊協定驅動程式也必須在呼叫 NdisScheduleWorkItem之前釋放任何目前持有的號誌、mutex、資源變數等等。 在佇列同步背景工作線程作業之前釋放所有同步處理資源,可防止死結。
串行化的迷你埠驅動程式不應該嘗試將背景工作線程回呼例程排入佇列,因為這類驅動程式無法同步處理其 NIC 內容區域的存取權與背景工作線程回呼。 因此,這類串行化的 NDIS 驅動程式無法與背景工作線程回呼函式共用其每個適配卡內容區域中的任何專案,而不會造成間歇性系統當機。
- 目標平臺:通用
- 版本:Windows Vista 中不支援 NDIS 6.0 驅動程式。 請改用 NdisQueueIoWorkItem。 支援 Windows Vista 和 Windows XP 中的 NDIS 5.1 驅動程式。
要求
要求 | 價值 |
---|---|
標頭 | ndis.h (包括 Ndis.h) |
IRQL | IRQL <= DISPATCH_LEVEL |