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


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

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

Синтаксис

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

Параметры

[in] IoObject

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

[in] IoWorkItem

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

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

Никакой

Замечания

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

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

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

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

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

Требования

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

См. также

IO_WORKITEM

IoAllocateWorkItem

IoQueueWorkItem

IoQueueWorkItemEx

IoSizeofWorkItem

IoUninitializeWorkItem