Поделиться через


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

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

Синтаксис

NDIS_HANDLE NdisAllocateIoWorkItem(
  [in] NDIS_HANDLE NdisObjectHandle
);

Параметры

[in] NdisObjectHandle

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

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

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

Комментарии

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

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

Драйверы мини-порта NDIS и драйверы фильтров также могут передавать NdisAllocateIoWorkItem дескриптор устройства NDIS, возвращенный 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 (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Init_NdisAllocateIoWorkItem(ndis), Irql_Miscellaneous_Function(ndis)

См. также раздел

IoAllocateWorkItem

MiniportHaltEx

MiniportInitializeEx

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

NdisFRegisterFilterDriver

NdisFreeIoWorkItem

NdisMRegisterMiniportDriver

NdisQueueIoWorkItem

NdisRegisterDeviceEx