NdisAllocateIoWorkItem 函数 (ndis.h)

NDIS 驱动程序调用 NdisAllocateIoWorkItem 函数来分配工作项。 有关详细信息,请参阅 NDIS I/O 工作项

语法

NDIS_HANDLE NdisAllocateIoWorkItem(
  [in] NDIS_HANDLE NdisObjectHandle
);

参数

[in] NdisObjectHandle

与设备对象或驱动程序对象关联的 NDIS 对象的句柄。

返回值

如果 NdisAllocateIoWorkItem 成功分配工作项,它将返回工作项的句柄。 如果失败, NdisAllocateIoWorkItem 将返回 NULL

注解

NDIS 微型端口驱动程序传递 NdisAllocateIoWorkItem 中的两个句柄之一:NDIS 传递给 MiniportInitializeEx 函数的适配器句柄,或 NDIS 在微型端口驱动程序调用时返回的微型端口驱动程序句柄 NdisMRegisterMiniportDriver

NDIS 筛选器驱动程序可以传递 NdisAllocateIoWorkItem 筛选器驱动程序在筛选器驱动程序调用 NdisFRegisterFilterDriver 时 NDIS 返回的筛选器驱动程序句柄。

NDIS 微型端口驱动程序和筛选器驱动程序还可以传递 NdisAllocateIoWorkItem NDIS 设备句柄,该 NDIS 设备句柄在驱动程序调用 NdisRegisterDeviceEx 时返回。 NdisAllocateIoWorkItem 获取与句柄关联的设备对象或驱动程序对象,并将设备对象或驱动程序对象传递给 IoAllocateWorkItem 函数。

注意 协议驱动程序无法使用 NdisAllocateIoWorkItem ,因为 NDIS 不会将协议驱动程序与设备对象或驱动程序对象相关联。
 
NDIS 驱动程序调用 NdisQueueIoWorkItem 函数将工作项排队。 驱动程序调用 NdisQueueIoWorkItem 后,NDIS 在 IRQL = PASSIVE_LEVEL 调用驱动程序指定的回调函数。 这可以通过允许当前函数立即结束和驱动程序稍后在较低的 IRQL 下工作来提高系统性能。

NDIS 驱动程序必须调用 NdisFreeIoWorkItem 函数,以释放与 NdisAllocateIoWorkItem 分配的工作项关联的资源。

驱动程序可以在传递给 NdisQueueIoWorkItem 的回调例程中调用 NdisFreeIoWorkItem

如果微型端口驱动程序在调用 NdisAllocateIoWorkItem 时使用了 NDIS 传递给 MiniportInitializeEx 的句柄,则必须在调用驱动程序 MiniportHaltEx 函数之前或调用中释放工作项。

如果微型端口驱动程序使用 NdisMRegisterMiniportDriver 在驱动程序调用 NdisAllocateIoWorkItem 时返回的句柄,则驱动程序必须在驱动程序卸载之前释放工作项。

通常,驱动程序必须在卸载驱动程序之前释放工作项。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Init_NdisAllocateIoWorkItem (ndis) Irql_Miscellaneous_Function (ndis)

另请参阅

IoAllocateWorkItem

MiniportHaltEx

MiniportInitializeEx

NDIS I/O 工作项

NdisFRegisterFilterDriver

NdisFreeIoWorkItem

NdisMRegisterMiniportDriver

NdisQueueIoWorkItem

NdisRegisterDeviceEx