Функция NdisAllocateIoWorkItem (ndis.h)

Драйверы NDIS вызывают функцию NdisAllocateIoWorkItem для выделения рабочего элемента. Дополнительные сведения см. в разделе рабочие элементы ввода-вывода NDIS.

Синтаксис

NDIS_HANDLE NdisAllocateIoWorkItem(
  [in] NDIS_HANDLE NdisObjectHandle
);

Параметры

[in] NdisObjectHandle

Дескриптор объекта NDIS, связанного с объектом устройства или объектом драйвера.

Возвращаемое значение

Если NdisAllocateIoWorkItem успешно выделяет рабочий элемент, он возвращает дескриптор рабочему элементу. В случае сбоя NdisAllocateIoWorkItem возвращает NULL.

Замечания

Драйверы минипорта NDIS передают NdisAllocateIoWorkItem любой из двух дескрипторов: дескриптор адаптера, передаваемый в функцию MiniportInitializeEx или обработчик минипорта, который NDIS возвращается при вызове драйвера минипорта. NdisMRegisterMiniportDriver.

Драйверы фильтров NDIS могут передавать NdisAllocateIoWorkItem обработчик фильтра, возвращаемый NDIS, когда драйвер фильтра называется NdisFRegisterFilterDriver.

Драйверы мини-порта NDIS и драйверы фильтров также могут передавать NdisAllocateIoWorkItem дескриптор устройства NDIS, возвращаемый при вызове драйвера NdisRegisterDeviceEx. NdisAllocateIoWorkItem получает объект устройства или объект драйвера, связанный с дескриптором, и передает объект устройства или объект драйвера в функцию IoAllocateWorkItem.

драйверы протокола не могут использовать NdisAllocateIoWorkItem, так как NDIS не связывает драйверы протокола с объектами устройств или объектами драйвера.
 
Драйверы NDIS вызывают функцию NdisQueueIoWorkItem для очередей рабочих элементов. После вызова драйвера NdisQueueIoWorkItem, NDIS вызывает функцию обратного вызова, указанную драйвером, в IRQL = PASSIVE_LEVEL. Это может повысить производительность системы, позволяя текущей функции немедленно заканчиваться, и драйвер будет работать позже в более низком IRQL.

Драйверы NDIS должны вызывать функцию NdisFreeIoWorkItem, чтобы освободить ресурсы, связанные с рабочим элементом, который NdisAllocateIoWorkItem.

Драйверы могут вызывать NdisFreeIoWorkItem в подпрограмме обратного вызова, передаваемой NdisQueueIoWorkItem.

Если драйвер минипорта использовал дескриптор, передаваемый NDIS в MiniportInitializeEx при вызове NdisAllocateIoWorkItem, рабочий элемент должен быть освобожден перед вызовом функции MiniportHaltEx.

Если мини-драйвер использовал дескриптор, который NdisMRegisterMiniportDriver, когда драйвер вызвал NdisAllocateIoWorkItem, драйвер должен освободить рабочий элемент перед выгрузкой драйвера.

Как правило, драйвер должен освободить рабочий элемент перед выгрузкой драйвера.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Init_NdisAllocateIoWorkItem(ndis), Irql_Miscellaneous_Function(ndis)

См. также

IoAllocateWorkItem

MiniportHaltEx

MiniportInitializeEx

рабочих элементов ввода-вывода NDIS

NdisFRegisterFilterDriver

NdisFreeIoWorkItem

NdisMRegisterMiniportDriver

NdisQueueIoWorkItem

NdisRegisterDeviceEx