Функция IoRegisterDriverReinitialization (ntddk.h)

Подпрограмма IoRegisterDriverReinitialization вызывается драйвером во время ее инициализации или повторной инициализации, чтобы зарегистрировать ее подпрограмму Повторной инициализации , которая будет вызвана еще раз до завершения инициализации драйвера и, возможно, системы.

Синтаксис

void IoRegisterDriverReinitialization(
  [in]           PDRIVER_OBJECT       DriverObject,
  [in]           PDRIVER_REINITIALIZE DriverReinitializationRoutine,
  [in, optional] PVOID                Context
);

Параметры

[in] DriverObject

Указатель на объект драйвера, который входил в подпрограмму DriverEntry .

[in] DriverReinitializationRoutine

Указатель на подпрограмму повторной инициализации драйвера.

[in, optional] Context

Указатель на контекст, передаваемый в подпрограмму повторной инициализации драйвера.

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

None

Remarks

Драйвер может вызывать эту подпрограмму только в том случае, если ее подпрограмма DriverEntry вернет STATUS_SUCCESS. Если предоставленная драйвером подпрограмма Reinitialize должна использовать реестр, подпрограмма DriverEntry должна включать копию строки, на которую указывает RegistryPath как часть контекста, переданного подпрограмме Reinitialize в этом вызове.

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

Входные данные Count для DriverReinitializationRoutine указывают, сколько раз была вызвана эта подпрограмма, включая текущий вызов.

Подпрограмма DriverEntry может вызывать IoRegisterDriverReinitialization только один раз. Если подпрограмма Повторная инициализация должна быть запущена снова после того, как другие подпрограммы инициализации других драйверов вернули управление, подпрограмма Reinitialize также может вызывать IoRegisterDriverReinitialization столько раз, сколько должна быть запущена подпрограмма Повторно инициализация драйвера.

Обычно драйвер с подпрограммой повторной инициализации — это драйвер более высокого уровня, который управляет как PnP, так и устаревшими устройствами. Такой драйвер должен не только создавать объекты устройств, обнаруженных диспетчером PnP (и для которых диспетчер PnP вызывает подпрограмму AddDevice драйвера), но и создавать объекты устройств для устаревших устройств, которые диспетчер PnP не обнаруживает. Драйвер может использовать подпрограмму повторной инициализации для создания этих объектов устройства и наложения драйвера на следующий более низкий драйвер для базового устройства.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть ntddk.h (включая Ntddk.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlIoPassive5(wdm), PowerIrpDDis(wdm)

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

DRIVER_OBJECT

IoRegisterBootDriverReinitialization