Функция IoInitializeWorkItem (wdm.h)

Подпрограмма IoInitializeWorkItem инициализирует рабочий элемент, который вызывающий объект уже выделил.

Синтаксис

void IoInitializeWorkItem(
  [in] PVOID        IoObject,
  [in] PIO_WORKITEM IoWorkItem
);

Параметры

[in] IoObject

Указатель на объект драйвера вызывающего объекта или на один из объектов устройства вызывающего объекта. Если вызывающий объект позже передаст рабочий элемент в IoQueueWorkItem, IoObject должен указывать на объект устройства.

[in] IoWorkItem

Указатель на инициализируемую структуру IO_WORKITEM .

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

None

Remarks

Драйвер выделяет собственное хранилище для структуры IO_WORKITEM , а затем вызывает IoInitializeWorkItem для ее инициализации. Память должна быть выделена из непагрегированного пула. Чтобы определить количество байтов, необходимых для хранения структуры IO_WORKITEM , вызовите IoSizeofWorkItem.

Структура IO_WORKITEM , инициализируемая IoInitializeWorkItem, должна быть неинициализирована ioUninitializeWorkItem перед ее освобождением .

Связанная подпрограмма IoAllocateWorkItem выделяет и инициализирует рабочий элемент. Объединяя выделение и инициализацию в один вызов, IoAllocateWorkItem может быть удобнее использовать для некоторых драйверов, чем IoInitializeWorkItem, который выполняет только инициализацию. Однако ioInitializeWorkItem требуется драйверам , которые должны инициализировать рабочие элементы в ранее выделенном хранилище.

Например, драйвер может выделить блок хранилища для пула рабочих элементов. Драйвер может вызвать IoInitializeWorkItem для инициализации рабочего элемента, когда рабочий элемент выделен из пула. Драйвер может вызвать IoUninitializeWorkItem , чтобы неинициализировать рабочий элемент при его возвращении в пул. Во время первоначального выделения хранилища для пула драйвер может вызвать IoSizeofWorkitem , чтобы определить объем хранилища, выделяемого для каждого рабочего элемента.

Дополнительные сведения о рабочих элементах см. в разделе Системные рабочие потоки.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях Windows.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень

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

IO_WORKITEM

IoAllocateWorkItem

IoQueueWorkItem

IoQueueWorkItemEx

IoSizeofWorkItem

IoUninitializeWorkItem