NDIS I/O 工作專案
驅動程式可以將 I/O 工作專案回呼函式排入佇列,以供稍後執行。 NDIS 會在 IRQL = PASSIVE_LEVEL呼叫驅動程式指定的回呼函式。 這可藉由讓目前的函式立即傳回,讓驅動程式稍後在較低的 IRQL 上執行工作來改善系統效能。
NDIS 6.0 和更新版本提供核心 I/O 工作專案常式 IoAllocateWorkItem、 IoFreeWorkItem和 IoQueueWorkItem的包裝函式。 NDIS 會使用私人 NDIS_IO_WORKITEM 結構,而不是私人 IO_WORKITEM 結構。
NDIS 6.0 驅動程式會呼叫 NdisAllocateIoWorkItem 函式來配置工作專案。 NDIS 迷你埠驅動程式會傳遞 NdisAllocateIoWorkItem NDIS 傳遞至 MiniportInitializeEx 函式的配接器控制碼。 NdisAllocateIoWorkItem 會取得與控制碼相關聯的裝置物件,並將裝置物件傳遞至 IoAllocateWorkItem 常式。 篩選驅動程式傳入篩選控制碼。
注意 通訊協定驅動程式無法使用 NdisAllocateIoWorkItem ,因為 NDIS 不會將通訊協定驅動程式與裝置物件產生關聯。
NDIS 驅動程式會呼叫 NdisQueueIoWorkItem 函式來將工作專案排入佇列。 NDIS 工作專案使用 CriticalWorkQueue 佇列類型。
NDIS 驅動程式必須呼叫 NdisFreeIoWorkItem 函式,以釋放 與 NdisAllocateIoWorkItem 配置的工作專案相關聯的資源。